diff --git a/404.html b/404.html index e61b2075..eda187a7 100644 --- a/404.html +++ b/404.html @@ -1,18 +1,14 @@ - + - - - -Page Not Found | Bitlayer - - + +Page Not Found | Bitlayer + + + -
-
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

\ No newline at end of file diff --git a/assets/css/styles.1f84c3dd.css b/assets/css/styles.1f84c3dd.css new file mode 100644 index 00000000..9f2b2ed2 --- /dev/null +++ b/assets/css/styles.1f84c3dd.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.loadingRing_RJI3 div{box-sizing:border-box}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#e36e1b;--ifm-color-primary-dark:#e36e1b;--ifm-color-primary-darker:#e36e1b;--ifm-color-primary-darkest:#e36e1b;--ifm-color-primary-light:#e36e1b;--ifm-color-primary-lighter:#e36e1b;--ifm-color-primary-lightest:#e36e1b;--ifm-code-font-size:95%;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.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{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.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{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.searchBarContainer_NW3z.searchIndexLoading_EJ1f .searchBarLoadingRing_YnHq{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.content_knG7 a,.hitFooter_E9YW a,.suggestion_fB_2.cursor_eG29 mark{text-decoration:underline}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;pointer-events:none;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)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.searchResultItem_U687>h2,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.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:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#e36e1b;--ifm-color-primary-dark:#e36e1b;--ifm-color-primary-darker:#e36e1b;--ifm-color-primary-darkest:#e36e1b;--ifm-color-primary-light:#e36e1b;--ifm-color-primary-lighter:#e36e1b;--ifm-color-primary-lightest:#e36e1b}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}[data-theme=dark] .docusaurus-highlight-code-line{background-color:#0000004d}img{height:auto;max-width:100%}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.hideAction_vcyE>svg,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}html[data-theme=dark] .searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}.hitTree_kk6K,.noResults_l6Q3{align-items:center;display:flex}html[data-theme=dark] .dropdownMenu_qbY6 .suggestion_fB_2{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2:not(:last-child){margin-bottom:4px}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2.cursor_eG29{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_E9YW a,.hitIcon_a7Zy,.hitPath_ieM4,.hitTree_kk6K,.noResultsIcon_EBY5{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_a7Zy,html[data-theme=dark] .hitPath_ieM4,html[data-theme=dark] .hitTree_kk6K,html[data-theme=dark] .noResultsIcon_EBY5{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_kk6K>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_a7Zy,.hitTree_kk6K>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_NqkB,.hitIcon_a7Zy{height:20px;width:20px}.hitWrapper_sAK8{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_sAK8 mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_vyVt{font-size:.9em}.hitPath_ieM4{font-size:.75em}.hitPath_ieM4,.hitTitle_vyVt{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.noResults_l6Q3{flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_EBY5{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_E9YW{font-size:.85em;margin-top:var(--search-local-spacing,12px);text-align:center}.cursor_eG29 .hideAction_vcyE>svg,.tocCollapsibleContent_vkbj a{display:block}.suggestion_fB_2.cursor_eG29,.suggestion_fB_2.cursor_eG29 .hitIcon_a7Zy,.suggestion_fB_2.cursor_eG29 .hitPath_ieM4,.suggestion_fB_2.cursor_eG29 .hitTree_kk6K,.suggestion_fB_2.cursor_eG29 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_NW3z{margin-left:16px}.searchBarContainer_NW3z .searchBarLoadingRing_YnHq{display:none;left:10px;position:absolute;top:6px}.searchBarContainer_NW3z .searchClearButton_qk4g{background:none;border:none;line-height:1rem;padding:0;position:absolute;right:.8rem;top:50%;transform:translateY(-50%)}.navbar__search{position:relative}.searchIndexLoading_EJ1f .navbar__search-input{background-image:none}.searchHintContainer_Pkmr{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_iIMx{background-color:var(--ifm-navbar-search-input-background-color);border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}.loadingRing_RJI3{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.loadingRing_RJI3 div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite a;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) #0000 #0000 #0000;border-radius:50%;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_RJI3 div:first-child{animation-delay:-.45s}.loadingRing_RJI3 div:nth-child(2){animation-delay:-.3s}.loadingRing_RJI3 div:nth-child(3){animation-delay:-.15s}@keyframes a{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.searchContextInput_mXoe,.searchQueryInput_CFBF{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-font-color-base);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.searchResultItem_U687{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_uIbk{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.searchResultItemSummary_oZHr{font-style:italic;margin:.5rem 0 0}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media not (max-width:996px){.searchBar_RVTs.searchBarLeft_MXDe .dropdownMenu_qbY6{left:0!important;right:auto!important}}@media only screen and (max-width:996px){.searchQueryColumn_q7nx{max-width:60%!important}.searchContextColumn_oWAF{max-width:40%!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}.navbar__search-input:not(:focus){width:2rem}.searchBar_RVTs .dropdownMenu_qbY6{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchBarContainer_NW3z:not(.focused_OWtg) .searchClearButton_qk4g,.searchHintContainer_Pkmr{display:none}.title_f1Hy{font-size:2rem}}@media screen and (max-width:576px){.searchQueryColumn_q7nx{max-width:100%!important}.searchContextColumn_oWAF{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/css/styles.22b362e4.css b/assets/css/styles.22b362e4.css deleted file mode 100644 index d84ad3a1..00000000 --- a/assets/css/styles.22b362e4.css +++ /dev/null @@ -1 +0,0 @@ -.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.row .col,img{max-width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}.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)}.admonition-icon svg,.alert__icon svg{fill:var(--ifm-alert-foreground-color)}.toggle_Pssr,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:2;--ifm-z-index-fixed:3;--ifm-z-index-overlay:4;--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-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-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:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem;--ifm-color-primary:#e36e1b;--ifm-color-primary-dark:#e36e1b;--ifm-color-primary-darker:#e36e1b;--ifm-color-primary-darkest:#e36e1b;--ifm-color-primary-light:#e36e1b;--ifm-color-primary-lighter:#e36e1b;--ifm-color-primary-lightest:#e36e1b;--ifm-code-font-size:95%;--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-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)}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-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}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LplD{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.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}.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 rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{height:auto}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.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-width:0;border:0 solid var(--ifm-blockquote-border-color);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{border:var(--ifm-hr-border-width) solid var(--ifm-hr-border-color);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{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonition h5,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--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)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--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:rgba(235,237,240,.15);--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:rgba(0,164,0,.15);--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:rgba(84,199,236,.15);--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:rgba(255,186,0,.15);--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:rgba(250,56,62,.15);--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-left-width:var(--ifm-alert-border-width);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left:var(--ifm-alert-border-left-width) solid var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{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{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link,.tocCollapsibleContent_MpvI a{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.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)}.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(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.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 .5rem;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{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);color:var(--ifm-font-color-base);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--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;-ms-user-select:none;user-select:none}.copyButton_wuS7,.toggle_Pssr{-webkit-user-select:none;-ms-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:transparent;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)}.button.button--secondary.button--outline:not(.button--active):not(:hover),.sidebarItemLink_miNk{color:var(--ifm-font-color-base)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.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-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var(--ifm-color-primary-darker);border-color:var(--ifm-color-primary-darker)}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.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-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var(--ifm-color-secondary-darker);border-color:var(--ifm-color-secondary-darker)}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.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-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var(--ifm-color-success-darker);border-color:var(--ifm-color-success-darker)}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.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-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var(--ifm-color-info-darker);border-color:var(--ifm-color-info-darker)}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.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-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var(--ifm-color-warning-darker);border-color:var(--ifm-color-warning-darker)}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.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-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var(--ifm-color-danger-darker);border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.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}.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}.admonition-content>:last-child,.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.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;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.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 transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.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)}.footer__item{margin-top:0}.footer__items{list-style:none;margin-bottom:0;padding-left:0}[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)}.blogPostTitle_rzP5,.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;justify-content:space-between;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;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:var(--ifm-menu-color-background-active)}.menu__caret{margin-left:.1rem}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.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}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.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:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--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}.navbar__search-input:-ms-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.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);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination__item,.pagination__link{display:inline-block}.pagination{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:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.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);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,.sidebarItemLink_miNk:hover{text-decoration:none}.docs-wrapper,.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__item:first-child .pagination-nav__label:before{content:"« "}.pagination-nav__item--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,.sidebarItemTitle_uKok,.sidebarMenuCloseIcon_uo5v,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.docItemContainer_vinB article>:first-child,.docItemContainer_vinB header+*,.pills__item+.pills__item{margin-top:0}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--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:#333437;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--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}.admonition h5{margin-bottom:8px;margin-top:0}.admonition-icon{display:inline-block;margin-right:.4em;vertical-align:middle}.admonition-icon svg{stroke-width:0;stroke:var(--ifm-alert-foreground-color);display:inline-block;height:22px;width:22px}.admonition{margin-bottom:1em}[data-theme=dark]{--ifm-color-primary:#e36e1b;--ifm-color-primary-dark:#e36e1b;--ifm-color-primary-darker:#e36e1b;--ifm-color-primary-darkest:#e36e1b;--ifm-color-primary-light:#e36e1b;--ifm-color-primary-lighter:#e36e1b;--ifm-color-primary-lightest:#e36e1b}.docusaurus-highlight-code-line{background-color:rgba(0,0,0,.1);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}[data-theme=dark] .docusaurus-highlight-code-line{background-color:rgba(0,0,0,.3)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:5}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container{display:none}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border:var(--docusaurus-details-summary-arrow-size) solid transparent;border-left:var(--docusaurus-details-summary-arrow-size) solid var(--docusaurus-details-decoration-color);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_ZgBM{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_ZgBM:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_IbjG{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)}.collapseSidebarButton_cwdi,.docSidebarContainer_rKC_,.sidebarLogo_FJUI,.themedImage_W2Cr,html[data-announcement-bar-initially-dismissed=true] .announcementBar_IbjG{display:none}.announcementBarPlaceholder_NC_W{flex:0 0 10px}.announcementBarClose_FG1z{align-self:stretch;flex:0 0 30px;line-height:0;padding:0}.announcementBarContent_KsVm{flex:1 1 auto;font-size:85%;padding:5px 0;text-align:center}.announcementBarContent_KsVm a{color:inherit;text-decoration:underline}.toggle_Pssr{cursor:pointer;position:relative;touch-action:pan-x;user-select:none}.toggleScreenReader_JnkT{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.sidebar_a9qW,.tableOfContents_cNA8{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto}.cardContainer_woeA:not(.cardContainerLink_iOSj),.toggleDisabled_jDku{cursor:not-allowed}.toggleTrack_SSoT{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.toggleTrackCheck_XobZ,.toggleTrackX_YkSC{bottom:0;height:10px;margin:auto 0;top:0;position:absolute}.toggleTrackCheck_XobZ{left:8px;opacity:0;transition:opacity .25s;width:14px}.toggleChecked_cnQY .toggleTrackCheck_XobZ,.toggleTrackX_YkSC,[data-theme=dark] .toggle_Pssr .toggleTrackCheck_XobZ{opacity:1;transition:opacity .25s}.toggleTrackX_YkSC{right:10px;width:10px}.toggleChecked_cnQY .toggleTrackX_YkSC,[data-theme=dark] .toggle_Pssr .toggleTrackX_YkSC{opacity:0}.toggleTrackThumb_uRm4{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.toggleFocused_A7DC .toggleTrackThumb_uRm4,.toggle_Pssr:hover .toggleTrackThumb_uRm4{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.toggleChecked_cnQY .toggleTrackThumb_uRm4,[data-theme=dark] .toggle_Pssr .toggleTrackThumb_uRm4{left:27px}.toggle_Pssr:active:not(.toggleDisabled_jDku) .toggleTrackThumb_uRm4{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggleIcon_eZtF{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.iconExternalLink_I5OW{margin-left:.3rem;position:relative;top:1px}.iconLanguage_dNtB{margin-right:5px;vertical-align:text-bottom}[data-theme=dark] .themedImage--dark_oUvU,[data-theme=light] .themedImage--light_TfLj{display:initial}.navbarHideable_aKYr{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_KUhG{transform:translate3d(0,calc(-100% - 2px),0)}.navbarSidebarToggle_nL8I{margin-right:1rem}.footerLogoLink_RC3H{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_wNvx:hover>.copyButton_wuS7,.codeBlockTitle_BvAR:hover+.codeBlockContent_wNvx .copyButton_wuS7,.copyButton_wuS7:focus,.footerLogoLink_RC3H:hover,.hash-link:focus,:hover>.hash-link{opacity:1}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.sidebar_a9qW{position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_uKok{font-size:var(--ifm-h3-font-size)}.sidebarItemList_Kvuv{font-size:.9rem;list-style:none;padding-left:0}.sidebarItem_CF0Q{margin-top:.7rem}.sidebarItemLinkActive_RRTD{color:var(--ifm-color-primary)!important}.cardContainer_woeA{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-800);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 rgba(0,0,0,.15);color:var(--ifm-color-emphasis-800);height:8rem;transition:box-shadow var(--ifm-transition-fast) ease,background-color var(--ifm-transition-fast) ease}.cardContainer_woeA.cardContainerLink_iOSj:hover{box-shadow:0 4px 8px 0 rgba(0,0,0,.2)}[data-theme=dark] .cardContainer_woeA.cardContainerLink_iOSj:hover{--ifm-card-background-color:#2d2d2d}.cardTitle_pNjP{font-size:1.2rem;min-height:1.2rem}.cardDescription_qC_k{font-size:.8rem;min-height:.8rem}.sidebarMenuIcon_LfgG{vertical-align:middle}.sidebarMenuCloseIcon_uo5v{align-items:center;display:inline-flex;font-size:1.5rem;height:24px;justify-content:center;line-height:.9;width:24px}.codeBlockContainer_I0IT{border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_wNvx{direction:ltr;position:relative}.codeBlockTitle_BvAR{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockStandalone_csWH,.codeBlock_jd64{padding:0;border-radius:var(--ifm-global-radius)}.codeBlock_jd64{margin:0}.codeBlockTitle_BvAR+.codeBlockContent_wNvx .codeBlock_jd64{border-top-left-radius:0;border-top-right-radius:0}.copyButton_wuS7{background:rgba(0,0,0,.3);border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;user-select:none}.codeBlockLines_mRuA{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.iconEdit_dcUD{margin-right:.3em;vertical-align:sub}.tag_hD8n{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_hD8n:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_D6E_{border-radius:.5rem;font-size:90%;padding:.3rem .5rem}.tagWithCount_i0QQ{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_i0QQ:after,.tagWithCount_i0QQ:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_i0QQ:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_i0QQ:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_i0QQ 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}.tag_Shcx{display:inline-block;margin:.5rem .5rem 0 1rem}.tags_XVD_{display:inline}.tag_JSN8{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_foO9{font-size:smaller;font-style:italic;margin-top:.2rem}.anchorWithStickyNavbar_mojV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_R0VQ{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;-ms-user-select:none;user-select:none}.hash-link:before{content:"#"}.details_BAp3{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}ul.contains-task-list{list-style:none;padding-left:0}.backToTopButton_RiI4{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_RiI4: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_ssHd{opacity:1;transform:scale(1);visibility:visible}.docMainContainer_TCnq,.docPage_P2Lg{display:flex;width:100%}.blogPostData_Zg1s{font-size:.9rem}.blogPostDetailsFull_h6_j{flex-direction:column}.image_o0gy{height:100%;object-fit:cover;width:100%}.authorCol_FlmR{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_trpF{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_S2np{margin-left:.3rem;margin-right:.3rem}.tableOfContents_cNA8{position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsible_jdIR{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleButton_Fzxq{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_Fzxq:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleContent_MpvI>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_MpvI ul li{margin:.4rem .8rem}.tocCollapsibleExpanded_laf4 .tocCollapsibleButton_Fzxq:after{transform:none}.breadcrumbsContainer_Xlws{margin-bottom:.4rem}.breadcrumbsItemLink_e5ie{--ifm-breadcrumb-size-multiplier:0.7!important;background:var(--ifm-color-gray-100);margin-bottom:.4rem}html[data-theme=dark] .breadcrumbsItemLink_e5ie{background-color:var(--ifm-color-gray-900)}.title_qBh7{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_zHyg{justify-content:center}@media (min-width:997px){:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_FG1z,.announcementBarPlaceholder_NC_W{flex-basis:50px}.menuHtmlItem_fVIQ{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.sidebar_CW9Y{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:-webkit-sticky;position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_FoYL{padding-top:0}.sidebarHidden_D64r{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_FJUI{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_FJUI img{height:2rem;margin-right:.5rem}.menu_SkdO{flex-grow:1;padding:.5rem}.menuWithAnnouncementBar_x19h{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_cwdi{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_xORG{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_AV8S,[dir=rtl] .collapseSidebarButtonIcon_xORG{transform:rotate(0)}[data-theme=dark] .collapseSidebarButton_cwdi,[data-theme=dark] .collapsedDocSidebar_Xgr6:focus,[data-theme=dark] .collapsedDocSidebar_Xgr6:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_Xgr6:focus,.collapsedDocSidebar_Xgr6:hover,[data-theme=dark] .collapseSidebarButton_cwdi:focus,[data-theme=dark] .collapseSidebarButton_cwdi:hover{background-color:var(--ifm-color-emphasis-200)}.lastUpdated_foO9{text-align:right}.docMainContainer_TCnq{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_WDCb{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_rKC_{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_nvlY{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_Xgr6{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:-webkit-sticky;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}[dir=rtl] .expandSidebarButtonIcon_AV8S{transform:rotate(180deg)}.docItemWrapperEnhanced_r_WG{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_DM6M,.generatedIndexPage_vzzw{max-width:75%!important}.tocMobile_TmEX{display:none}.breadcrumbsItemLink_e5ie{--ifm-breadcrumb-size-multiplier:0.8}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.footer__link-separator,.navbar__item,.sidebar_a9qW,.tableOfContents_cNA8,.toggle_TdHA{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.docItemContainer_WX_Y{padding:0 .3rem}}@media (hover:hover){.backToTopButton_RiI4: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 print{.announcementBar_IbjG,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_mRuA{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/01a85c17.346af85a.js b/assets/js/01a85c17.346af85a.js deleted file mode 100644 index fd74458d..00000000 --- a/assets/js/01a85c17.346af85a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4013],{8665:function(e,t,a){a.d(t,{Z:function(){return p}});var n=a(3366),r=a(7294),l=a(6010),c=a(2434),s=a(9960),i="sidebar_a9qW",m="sidebarItemTitle_uKok",o="sidebarItemList_Kvuv",u="sidebarItem_CF0Q",g="sidebarItemLink_miNk",d="sidebarItemLinkActive_RRTD",b=a(5999);function E(e){var t=e.sidebar;return 0===t.items.length?null:r.createElement("nav",{className:(0,l.Z)(i,"thin-scrollbar"),"aria-label":(0,b.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},r.createElement("div",{className:(0,l.Z)(m,"margin-bottom--md")},t.title),r.createElement("ul",{className:o},t.items.map((function(e){return r.createElement("li",{key:e.permalink,className:u},r.createElement(s.Z,{isNavLink:!0,to:e.permalink,className:g,activeClassName:d},e.title))}))))}var v=["sidebar","toc","children"];function p(e){var t=e.sidebar,a=e.toc,s=e.children,i=(0,n.Z)(e,v),m=t&&t.items.length>0;return r.createElement(c.Z,i,r.createElement("div",{className:"container margin-vert--lg"},r.createElement("div",{className:"row"},m&&r.createElement("aside",{className:"col col--3"},r.createElement(E,{sidebar:t})),r.createElement("main",{className:(0,l.Z)("col",{"col--7":m,"col--9 col--offset-1":!m}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&r.createElement("div",{className:"col col--2"},a))))}},497:function(e,t,a){a.r(t),a.d(t,{default:function(){return o}});var n=a(7294),r=a(8665),l=a(7774),c=a(5450),s="tag_Shcx";function i(e){var t=e.letterEntry;return n.createElement("article",null,n.createElement("h2",null,t.letter),n.createElement("ul",{className:"padding--none"},t.tags.map((function(e){return n.createElement("li",{key:e.permalink,className:s},n.createElement(l.Z,e))}))),n.createElement("hr",null))}function m(e){var t=e.tags,a=(0,c.PZ)(t);return n.createElement("section",{className:"margin-vert--lg"},a.map((function(e){return n.createElement(i,{key:e.letter,letterEntry:e})})))}function o(e){var t=e.tags,a=e.sidebar,l=(0,c.MA)();return n.createElement(r.Z,{title:l,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogTagsListPage,searchMetadata:{tag:"blog_tags_list"},sidebar:a},n.createElement("h1",null,l),n.createElement(m,{tags:Object.values(t)}))}},7774:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),r=a(6010),l=a(9960),c="tag_hD8n",s="tagRegular_D6E_",i="tagWithCount_i0QQ";function m(e){var t,a=e.permalink,m=e.name,o=e.count;return n.createElement(l.Z,{href:a,className:(0,r.Z)(c,(t={},t[s]=!o,t[i]=o,t))},m,o&&n.createElement("span",null,o))}}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.925e7860.js b/assets/js/01a85c17.925e7860.js new file mode 100644 index 00000000..b4561c4a --- /dev/null +++ b/assets/js/01a85c17.925e7860.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8209],{6535:(e,s,t)=>{t.d(s,{A:()=>v});var a=t(6540),i=t(8215),r=t(5476),l=t(4581),n=t(8774),c=t(1312),o=t(6347),m=t(9169);function d(e){const{pathname:s}=(0,o.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,s){return!(e.unlisted&&!(0,m.ys)(e.permalink,s))}(e,s)))),[e,s])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var b=t(4848);function g(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("aside",{className:"col col--3",children:(0,b.jsxs)("nav",{className:(0,i.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,c.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,b.jsx)("div",{className:(0,i.A)(u.sidebarItemTitle,"margin-bottom--md"),children:s.title}),(0,b.jsx)("ul",{className:(0,i.A)(u.sidebarItemList,"clean-list"),children:t.map((e=>(0,b.jsx)("li",{className:u.sidebarItem,children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var h=t(5600);function j(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("ul",{className:"menu__list",children:t.map((e=>(0,b.jsx)("li",{className:"menu__list-item",children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,b.jsx)(h.GX,{component:j,props:e})}function x(e){let{sidebar:s}=e;const t=(0,l.l)();return s?.items.length?"mobile"===t?(0,b.jsx)(p,{sidebar:s}):(0,b.jsx)(g,{sidebar:s}):null}function v(e){const{sidebar:s,toc:t,children:a,...l}=e,n=s&&s.items.length>0;return(0,b.jsx)(r.A,{...l,children:(0,b.jsx)("div",{className:"container margin-vert--lg",children:(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)(x,{sidebar:s}),(0,b.jsx)("main",{className:(0,i.A)("col",{"col--7":n,"col--9 col--offset-1":!n}),children:a}),t&&(0,b.jsx)("div",{className:"col col--2",children:t})]})})})}},9158:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});t(6540);var a=t(8215),i=t(1312);const r=()=>(0,i.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var l=t(1213),n=t(7559),c=t(6535),o=t(6133),m=t(1107);const d={tag:"tag_Nnez"};var u=t(4848);function b(e){let{letterEntry:s}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(m.A,{as:"h2",id:s.letter,children:s.letter}),(0,u.jsx)("ul",{className:"padding--none",children:s.tags.map((e=>(0,u.jsx)("li",{className:d.tag,children:(0,u.jsx)(o.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function g(e){let{tags:s}=e;const t=function(e){const s={};return Object.values(e).forEach((e=>{const t=function(e){return e[0].toUpperCase()}(e.label);s[t]??=[],s[t].push(e)})),Object.entries(s).sort(((e,s)=>{let[t]=e,[a]=s;return t.localeCompare(a)})).map((e=>{let[s,t]=e;return{letter:s,tags:t.sort(((e,s)=>e.label.localeCompare(s.label)))}}))}(s);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(b,{letterEntry:e},e.letter)))})}var h=t(1463);function j(e){let{tags:s,sidebar:t}=e;const i=r();return(0,u.jsxs)(l.e3,{className:(0,a.A)(n.G.wrapper.blogPages,n.G.page.blogTagsListPage),children:[(0,u.jsx)(l.be,{title:i}),(0,u.jsx)(h.A,{tag:"blog_tags_list"}),(0,u.jsxs)(c.A,{sidebar:t,children:[(0,u.jsx)(m.A,{as:"h1",children:i}),(0,u.jsx)(g,{tags:s})]})]})}},6133:(e,s,t)=>{t.d(s,{A:()=>n});t(6540);var a=t(8215),i=t(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function n(e){let{permalink:s,label:t,count:n}=e;return(0,l.jsxs)(i.A,{href:s,className:(0,a.A)(r.tag,n?r.tagWithCount:r.tagRegular),children:[t,n&&(0,l.jsx)("span",{children:n})]})}}}]); \ No newline at end of file diff --git a/assets/js/068d31a7.18a478de.js b/assets/js/068d31a7.18a478de.js deleted file mode 100644 index e728b1cb..00000000 --- a/assets/js/068d31a7.18a478de.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3573],{3905:function(e,t,a){a.d(t,{Zo:function(){return b},kt:function(){return m}});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function d(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),o=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):d(d({},t),e)),a},b=function(e){var t=o(e.components);return n.createElement(l.Provider,{value:t},e.children)},i={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,b=c(e,["components","mdxType","originalType","parentName"]),p=o(a),m=r,f=p["".concat(l,".").concat(m)]||p[m]||i[m]||s;return a?n.createElement(f,d(d({ref:t},b),{},{components:a})):n.createElement(f,d({ref:t},b))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,d=new Array(s);d[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,d[1]=c;for(var o=2;o child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})),k=null!=p?p:u.map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes}})),g=(0,d.lx)(k,(function(e,t){return e.value===t.value}));if(g.length>0)throw new Error('Docusaurus error: Duplicate values "'+g.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.');var N=null===i?i:null!=(t=null!=i?i:null==(a=u.find((function(e){return e.props.default})))?void 0:a.props.value)?t:null==(s=u[0])?void 0:s.props.value;if(null!==N&&!k.some((function(e){return e.value===N})))throw new Error('Docusaurus error: The has a defaultValue "'+N+'" but none of its children has the corresponding value. Available values are: '+k.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var h=(0,d.UB)(),y=h.tabGroupChoices,v=h.setTabGroupChoices,x=(0,r.useState)(N),T=x[0],w=x[1],C=[],R=(0,d.o5)().blockElementScrollPositionUntilNextRender;if(null!=m){var I=y[m];null!=I&&I!==T&&k.some((function(e){return e.value===I}))&&w(I)}var P=function(e){var t=e.currentTarget,a=C.indexOf(t),n=k[a].value;n!==T&&(R(t),w(n),null!=m&&v(m,n))},S=function(e){var t,a=null;switch(e.key){case"ArrowRight":var n=C.indexOf(e.currentTarget)+1;a=C[n]||C[0];break;case"ArrowLeft":var r=C.indexOf(e.currentTarget)-1;a=C[r]||C[C.length-1]}null==(t=a)||t.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,c.Z)("tabs",{"tabs--block":b},f)},k.map((function(e){var t=e.value,a=e.label,s=e.attributes;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:T===t?0:-1,"aria-selected":T===t,key:t,ref:function(e){return C.push(e)},onKeyDown:S,onFocus:P,onClick:P},s,{className:(0,c.Z)("tabs__item",l,null==s?void 0:s.className,{"tabs__item--active":T===t})}),null!=a?a:t)}))),o?(0,r.cloneElement)(u.filter((function(e){return e.props.value===T}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},u.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==T})}))))}function b(e){var t=(0,s.Z)();return r.createElement(o,(0,n.Z)({key:String(t)},e))}},7390:function(e,t,a){a.r(t),a.d(t,{frontMatter:function(){return o},contentTitle:function(){return b},metadata:function(){return i},assets:function(){return p},toc:function(){return m},default:function(){return u}});var n=a(7462),r=a(3366),s=(a(7294),a(3905)),d=a(9877),c=a(8215),l=["components"],o={sidebar_position:1,title:"Accounts"},b=void 0,i={unversionedId:"Bitlayer Scan APIs/Accounts",id:"Bitlayer Scan APIs/Accounts",title:"Accounts",description:"Endpoint URLs",source:"@site/docs/Bitlayer Scan APIs/Accounts.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Accounts",permalink:"/docs/Bitlayer Scan APIs/Accounts",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Accounts"},sidebar:"docs",previous:{title:"Bitlayer Scan APIs",permalink:"/docs/category/bitlayer-scan-apis"},next:{title:"Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts"}},p={},m=[{value:"Endpoint URLs",id:"endpoint-urls",level:2},{value:"Get BTC Balance for a single address",id:"get-btc-balance-for-a-single-address",level:2},{value:"Get BTC Balance for multiple addresses in a single call",id:"get-btc-balance-for-multiple-addresses-in-a-single-call",level:2},{value:"Get a list of 'Normal' Transactions By Address",id:"get-a-list-of-normal-transactions-by-address",level:2},{value:"Get a list of 'Internal' Transactions By Address",id:"get-a-list-of-internal-transactions-by-address",level:2},{value:"Get "Internal Transactions" by Transaction Hash",id:"get-internal-transactions-by-transaction-hash",level:2},{value:"Get "Internal Transactions" by Block Range",id:"get-internal-transactions-by-block-range",level:2},{value:"Get a list of "ERC-20 - Token Transfer Events" by Address",id:"get-a-list-of-erc-20---token-transfer-events-by-address",level:2},{value:"Get a list of "ERC-721 - Token Transfer Events" by Address",id:"get-a-list-of-erc-721---token-transfer-events-by-address",level:2},{value:"Get list of Blocks Validated by Address",id:"get-list-of-blocks-validated-by-address",level:2}],f={toc:m};function u(e){var t=e.components,a=(0,r.Z)(e,l);return(0,s.kt)("wrapper",(0,n.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"endpoint-urls"},"Endpoint URLs"),(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Network"),(0,s.kt)("th",{parentName:"tr",align:null},"URL"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"Mainnet"),(0,s.kt)("td",{parentName:"tr",align:null},(0,s.kt)("a",{parentName:"td",href:"https://api.btrscan.com/scan/api"},"https://api.btrscan.com/scan/api"))),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"Testnet"),(0,s.kt)("td",{parentName:"tr",align:null},(0,s.kt)("a",{parentName:"td",href:"https://api-testnet.bitlayer.org/scan/api"},"https://api-testnet.bitlayer.org/scan/api"))))),(0,s.kt)("h2",{id:"get-btc-balance-for-a-single-address"},"Get BTC Balance for a single address"),(0,s.kt)("p",null,"Returns the BTC balance of a given address."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=balance\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=balance&address=0xe7564c607c663e5784031229570cbd47290dd87f"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": "24160814822445819116"\n}\n')))),(0,s.kt)("h2",{id:"get-btc-balance-for-multiple-addresses-in-a-single-call"},"Get BTC Balance for multiple addresses in a single call"),(0,s.kt)("p",null,"Returns the balance of the accounts from a list of addresses."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=balancemulti\n&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=balancemulti&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance,separated by ",(0,s.kt)("inlineCode",{parentName:"td"},",")," up to 20 addresses in a single batch"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},"Sample Response",(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "account": "0xe7564c607c663e5784031229570cbd47290dd87f",\n "balance": "24160814822445819116"\n },\n {\n "account": "0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d",\n "balance": "7152743425798252551"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-a-list-of-normal-transactions-by-address"},"Get a list of 'Normal' Transactions By Address"),(0,s.kt)("p",null,"Returns the list of transactions performed by an address, with optional pagination.\n","[Optional Parameters]"," startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Returns up to a maximum of the last 10000 transactions only "))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlist\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\n&startblock=0\n&endblock=99999999\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlist&address=0xe7564c607c663e5784031229570cbd47290dd87f&startblock=0&endblock=99999999&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"To get paginated results use ",(0,s.kt)("inlineCode",{parentName:"p"},"page=")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"offset=")))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlist\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\n&startblock=0\n&endblock=99999999\n&page=1\n&offset=10\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlist&address=0xe7564c607c663e5784031229570cbd47290dd87f&startblock=0&endblock=99999999&page=1&offset=10&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"startblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"endblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"sort"),(0,s.kt)("td",{parentName:"tr",align:null},"the sorting preference, use ",(0,s.kt)("inlineCode",{parentName:"td"},"asc")," to sort by ascending and ",(0,s.kt)("inlineCode",{parentName:"td"},"desc")," to sort by descending"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "911734",\n "timeStamp": "1715011831",\n "hash": "0x38a33c9dedf320432ab4bbfdaf5bec13fb156d81bfa96bbc853b387755f37291",\n "nonce": "0",\n "transactionIndex": "0",\n "value": "99800000000000000",\n "gas": "45358",\n "gasPrice": "102553563",\n "txreceipt_status": "1",\n "gasUsed": "44978",\n "methodId": "0xd0e30db0",\n "functionName": "deposit"\n },\n {\n "blockNumber": "911882",\n "timeStamp": "1715012275",\n "hash": "0x50b60e5046fe4d13413737b7e886906d7511ed1fe78ba5aa4b1978145f0309da",\n "nonce": "1",\n "transactionIndex": "0",\n "value": "0",\n "gas": "140550",\n "gasPrice": "102581210",\n "txreceipt_status": "1",\n "gasUsed": "46143",\n "methodId": "0x095ea7b3",\n "functionName": "approve"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-a-list-of-internal-transactions-by-address"},"Get a list of 'Internal' Transactions By Address"),(0,s.kt)("p",null,"Returns the list of internal transactions performed by an address, with optional pagination."),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Returns up to a maximum of the last 10000 transactions only "),(0,s.kt)("p",{parentName:"div"},"[Optional Parameters]"," startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlistinternal\n&address=0x039bac1779933ee52abf3eff25188c4d673931ac\n&startblock=0\n&endblock=2702578\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&address=0x039bac1779933ee52abf3eff25188c4d673931ac&startblock=0&endblock=2702578&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"To get paginated results use ",(0,s.kt)("inlineCode",{parentName:"p"},"page=")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"offset=")))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlistinternal\n&address=0x039bac1779933ee52abf3eff25188c4d673931ac\n&startblock=0\n&endblock=2702578\n&page=1\n&offset=10\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&address=0x039bac1779933ee52abf3eff25188c4d673931ac&startblock=0&endblock=2702578&page=1&offset=10&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"startblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"endblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"sort"),(0,s.kt)("td",{parentName:"tr",align:null},"the sorting preference, use ",(0,s.kt)("inlineCode",{parentName:"td"},"asc")," to sort by ascending and ",(0,s.kt)("inlineCode",{parentName:"td"},"desc")," to sort by descending"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},"Sample Response",(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "2063492",\n "timeStamp": "1713324960",\n "hash": "0xb633b52fa2eaa2f817aa721db500766458e6b794b872f911d8f72d20c1356377",\n "transactionIndex": "0",\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\n "to": "0x0000000000000000000000000000000000000001",\n "value": "0",\n "gas": "77311",\n "txreceipt_status": "1",\n "gasUsed": "3000\n },\n {\n "blockNumber": "2063508",\n "timeStamp": "1713325008",\n "hash": "0x9b169e06404b28fec2f1d20eeecc485ed8d11c0f792d872dfc78e29e05fe3a2f",\n "transactionIndex": "1",\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\n "to": "0x0000000000000000000000000000000000000001",\n "value": "0",\n "gas": "77299",\n "txreceipt_status": "1",\n "gasUsed": "3000"\n },\n {\n "blockNumber": "2063521",\n "timeStamp": "1713325047",\n "hash": "0xd9e8a7407f4993d85ba80ddc05a0bcf2e45c5a70781fae58d508df45bf7bf846",\n "transactionIndex": "0",\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\n "to": "0x0000000000000000000000000000000000000001",\n "value": "0",\n "gas": "77299",\n "txreceipt_status": "1",\n "gasUsed": "3000"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-internal-transactions-by-transaction-hash"},'Get "Internal Transactions" by Transaction Hash'),(0,s.kt)("p",null,"Returns the list of internal transactions performed within a transaction."),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Returns up to a maximum of the last 10000 transactions only "))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlistinternal\n&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"txhash"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the transaction hash to check for internal transactions"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "2928943",\n "timeStamp": "1715921315",\n "hash": "0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",\n "transactionIndex": "0",\n "from": "0x9386a8135c6a56103f14a1ed655ff7467b3b86eb",\n "to": "0x039bac1779933ee52abf3eff25188c4d673931ac",\n "value": "0",\n "gas": "90214",\n "txreceipt_status": "1",\n "input": "0x5eddd15700000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000041e7d4cad89769c747ecbfaab89239b64facf1be59ec2132f68d4c5ddd6e6834570b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b1c00000000000000000000000000000000000000000000000000000000000000",\n "gasUsed": "36357"\n },\n {\n "blockNumber": "2928943",\n "timeStamp": "1715921315",\n "hash": "0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",\n "transactionIndex": "0",\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\n "to": "0x0000000000000000000000000000000000000001",\n "value": "0",\n "gas": "90214",\n "txreceipt_status": "1",\n "input": "0x0000000000000000000000009386a8135c6a56103f14a1ed655ff7467b3b86eb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc0b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b",\n "gasUsed": "3000"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-internal-transactions-by-block-range"},'Get "Internal Transactions" by Block Range'),(0,s.kt)("p",null,"Returns the list of internal transactions performed within a block range, with optional pagination."),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Returns up to a maximum of the last 10000 transactions only "))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=txlistinternal\n&startblock=0\n&endblock=2928944\n&page=1\n&offset=10\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&startblock=0&endblock=2928944&page=1&offset=10&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"startblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"endblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"sort"),(0,s.kt)("td",{parentName:"tr",align:null},"the sorting preference, use ",(0,s.kt)("inlineCode",{parentName:"td"},"asc")," to sort by ascending and ",(0,s.kt)("inlineCode",{parentName:"td"},"desc")," to sort by descending"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "29",\n "timeStamp": "1707134551",\n "hash": "0x17b0cd2caaff5c8cf1ae1c0398b867dc9c5354caa166532b39ae6eb9dfddd626",\n "transactionIndex": "0",\n "from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",\n "to": "0xf4340cf5f3891a3827713b33f769b501a0b5b122",\n "value": "0",\n "gas": "517789",\n "txreceipt_status": "1",\n "input": "0x60806040523480156200001157600080fd5b5060405162000a0c38038062000a0c8339810160408190526200003491620002d4565b6b033b2e3c9fd0803ce80000006002558051825160009114620000915760405162461bcd60e51b815260206004820152601060248201526f098cadccee8d0409cdee8409ac2e8c6d60831b60448201526064015b60405180910390fd5b60005b83518110156200019557828181518110620000b357620000b3620003b2565b602002602001015182620000c89190620003de565b91506002548211156200011e5760405162461bcd60e51b815260206004820152601460248201527f546f74616c537570706c79204f766572466c6f77000000000000000000000000604482015260640162000088565b828181518110620001335762000133620003b2565b6020026020010151600080868481518110620001535762000153620003b2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200018c90620003fa565b91505062000094565b508060025414620001e95760405162461bcd60e51b815260206004820152601e60248201527f546f74616c537570706c79206973206e6f742044697374726962757465640000604482015260640162000088565b50505062000416565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620002335762000233620001f2565b604052919050565b60006001600160401b03821115620002575762000257620001f2565b5060051b60200190565b600082601f8301126200027357600080fd5b815160206200028c62000286836200023b565b62000208565b82815260059290921b84018101918181019086841115620002ac57600080fd5b8286015b84811015620002c95780518352918301918301620002b0565b509695505050505050565b60008060408385031215620002e857600080fd5b82516001600160401b03808211156200030057600080fd5b818501915085601f8301126200031557600080fd5b815160206200032862000286836200023b565b82815260059290921b840181019181810190898411156200034857600080fd5b948201945b838610156200037f5785516001600160a01b03811681146200036f5760008081fd5b825294820194908201906200034d565b918801519196509093505050808211156200039957600080fd5b50620003a88582860162000261565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620003f457620003f4620003c8565b92915050565b6000600182016200040f576200040f620003c8565b5060010190565b6105e680620004266000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461012357806370a082311461013d57806395d89b4114610166578063a9059cbb14610188578063dd62ed3e1461019b57600080fd5b806306fdde0314610098578063095ea7b3146100d657806318160ddd146100f957806323b872dd14610110575b600080fd5b6100c060405180604001604052806009815260200168212921902a37b5b2b760b91b81525081565b6040516100cd9190610456565b60405180910390f35b6100e96100e43660046104c0565b6101d4565b60405190151581526020016100cd565b61010260025481565b6040519081526020016100cd565b6100e961011e3660046104ea565b610241565b61012b601281565b60405160ff90911681526020016100cd565b61010261014b366004610526565b6001600160a01b031660009081526020819052604090205490565b6100c06040518060400160405280600381526020016242524360e81b81525081565b6100e96101963660046104c0565b610391565b6101026101a9366004610541565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061022f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260208190526040812054821180159061028c57506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b80156102985750600082115b15610386576001600160a01b038316600090815260208190526040812080548492906102c590849061058a565b90915550506001600160a01b038416600090815260208190526040812080548492906102f290849061059d565b90915550506001600160a01b03841660009081526001602090815260408083203384529091528120805484929061032a90849061059d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161037691815260200190565b60405180910390a350600161038a565b5060005b9392505050565b3360009081526020819052604081205482118015906103b05750600082115b1561044e5733600090815260208190526040812080548492906103d490849061059d565b90915550506001600160a01b0383166000908152602081905260408120805484929061040190849061058a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350600161023b565b50600061023b565b600060208083528351808285015260005b8181101561048357858101830151858201604001528201610467565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104bb57600080fd5b919050565b600080604083850312156104d357600080fd5b6104dc836104a4565b946020939093013593505050565b6000806000606084860312156104ff57600080fd5b610508846104a4565b9250610516602085016104a4565b9150604084013590509250925092565b60006020828403121561053857600080fd5b61038a826104a4565b6000806040838503121561055457600080fd5b61055d836104a4565b915061056b602084016104a4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561023b5761023b610574565b8181038181111561023b5761023b61057456fea264697066735822122054ce9967d7d4eba6cafd665a64e31a65317e0cd391ee8f3adcd1a3194baebc2364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075000000000000000000000000845d2b001934a99d072ef409b719cffe468ba7e300000000000000000000000026fc26213675827d863607902c8dbc7f42f1a2b70000000000000000000000007765992cae0cd7dc02e2b5857a375b0b090933b500000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000007c13bc4b2c133c56000000000000000000000000000000000000000000000000f8277896582678ac00000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000001743b34e18439b502000000",\n "gasUsed": "417256"\n },\n {\n "blockNumber": "33",\n "timeStamp": "1707134563",\n "hash": "0x8001fd5a7fbeca309b7c1edd81ee68008cdbf86247fcf2b5a5522f3af65e691e",\n "transactionIndex": "0",\n "from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",\n "to": "0x845d2b001934a99d072ef409b719cffe468ba7e3",\n "value": "0",\n "gas": "785842",\n "txreceipt_status": "1",\n "input": "0x60806040523480156200001157600080fd5b5060405162000e7438038062000e748339810160408190526200003491620004bb565b8451865114801562000047575083518651145b801562000055575082518651145b620000a75760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420696e707574206c656e67746800000000000000000000000060448201526064015b60405180910390fd5b6000805b87518110156200026c576000878281518110620000cc57620000cc6200058f565b602002602001015111620001325760405162461bcd60e51b815260206004820152602660248201527f546f74616c20746f6b656e73206d7573742062652067726561746572207468616044820152656e207a65726f60d01b60648201526084016200009e565b6040518060a001604052808883815181106200015257620001526200058f565b60200260200101518152602001600081526020018783815181106200017b576200017b6200058f565b602002602001015181526020018683815181106200019d576200019d6200058f565b6020026020010151815260200160011515815250600360008a8481518110620001ca57620001ca6200058f565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905586518790829081106200024057620002406200058f565b602002602001015182620002559190620005bb565b9150806200026381620005d7565b915050620000ab565b506000839055600180546001600160a01b0319166001600160a01b038416908117909155426002556040516370a0823160e01b81523060048201526370a0823190602401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620005f3565b8114620003445760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e672042616c616e6365206e6f74204d617463680000000000000060448201526064016200009e565b505050505050506200060d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000392576200039262000351565b604052919050565b60006001600160401b03821115620003b657620003b662000351565b5060051b60200190565b80516001600160a01b0381168114620003d857600080fd5b919050565b600082601f830112620003ef57600080fd5b815160206200040862000402836200039a565b62000367565b82815260059290921b840181019181810190868411156200042857600080fd5b8286015b848110156200044e576200044081620003c0565b83529183019183016200042c565b509695505050505050565b600082601f8301126200046b57600080fd5b815160206200047e62000402836200039a565b82815260059290921b840181019181810190868411156200049e57600080fd5b8286015b848110156200044e5780518352918301918301620004a2565b60008060008060008060c08789031215620004d557600080fd5b86516001600160401b0380821115620004ed57600080fd5b620004fb8a838b01620003dd565b975060208901519150808211156200051257600080fd5b620005208a838b0162000459565b965060408901519150808211156200053757600080fd5b620005458a838b0162000459565b955060608901519150808211156200055c57600080fd5b506200056b89828a0162000459565b935050608087015191506200058360a08801620003c0565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620005d157620005d1620005a5565b92915050565b600060018201620005ec57620005ec620005a5565b5060010190565b6000602082840312156200060657600080fd5b5051919050565b610857806200061d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a3fe79501161005b578063a3fe7950146100d3578063dc070657146100e6578063e6fd48bc146100f9578063fdb20ccb1461010257600080fd5b80630faf4baa146100825780631d31fac0146100b25780634e71d92d146100c9575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bb60005481565b6040519081526020016100a9565b6100d161016d565b005b6100bb6100e1366004610706565b61043b565b6100d16100f4366004610706565b610513565b6100bb60025481565b610143610110366004610706565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016100a9565b336000908152600360205260409020600481015460ff166101a95760405162461bcd60e51b81526004016101a090610736565b60405180910390fd5b60006101b433610657565b9050816002015481116102095760405162461bcd60e51b815260206004820152601e60248201527f436c69666620706572696f6420686173206e6f7420656e64656420796574000060448201526064016101a0565b60006102143361043b565b905060008360010154826102289190610781565b90506000811161027a5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520666f722072656c656173650060448201526064016101a0565b8084600101600082825461028e919061079a565b90915550506001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff91906107ad565b8111156103455760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016101a0565b83546001850154111561038a5760405162461bcd60e51b815260206004820152600d60248201526c15995cdd1a5b99c8195b991959609a1b60448201526064016101a0565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff91906107c6565b5060405181815233907fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931799060200160405180910390a250505050565b6001600160a01b0381166000908152600360208181526040808420815160a0810183528154815260018201549381019390935260028101549183019190915291820154606082015260049091015460ff161515608082018190526104b15760405162461bcd60e51b81526004016101a090610736565b60006104bc84610657565b90506000826040015182116104d657506000949350505050565b60008360400151836104e89190610781565b905083606001518185600001516104ff91906107e8565b61050991906107ff565b9695505050505050565b336000908152600360205260409020600481015460ff166105465760405162461bcd60e51b81526004016101a090610736565b6001600160a01b03821660009081526003602052604090206004015460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f4e657742656e656669636961727920697320416374697665000000000000000060448201526064016101a0565b6001600160a01b03821660008181526003602081905260408083208554815560018087015481830155600280880154818401558488015483860155600480890154938101805460ff909516151560ff19958616179055338088528588208881559384018890559183018790559482018690559301805490911690555190917f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d91a35050565b6002546000904290829061066b9083610781565b9050600080548261067c91906107ff565b6001600160a01b038616600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201849052918201546060820181905260049092015460ff16151560808201529293506106e3919061079a565b82106106fd5780604001518160600151610509919061079a565b50949350505050565b60006020828403121561071857600080fd5b81356001600160a01b038116811461072f57600080fd5b9392505050565b6020808252818101527f4e6f206163746976652076657374696e67207363686564756c6520666f756e64604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107945761079461076b565b92915050565b808201808211156107945761079461076b565b6000602082840312156107bf57600080fd5b5051919050565b6000602082840312156107d857600080fd5b8151801515811461072f57600080fd5b80820281158282048414176107945761079461076b565b60008261081c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122072316cc586c2a8c967295ba7c6e33bc7890cf771f04ae131a2043a542556b2b264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000015180000000000000000000000000f4340cf5f3891a3827713b33f769b501a0b5b1220000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a17104869c50271fe81042c81beb3e5a694e605d000000000000000000000000b0d7b4d930f302018ee1d7caff22b0819b4d59e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000024",\n "gasUsed": "665332"\n },\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-a-list-of-erc-20---token-transfer-events-by-address"},'Get a list of "ERC-20 - Token Transfer Events" by Address'),(0,s.kt)("p",null,"Returns the list of ERC-20 tokens transferred by an address, with optional filtering by token contract.\n","[Optional Parameters]"," startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokentx\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\n&startblock=0\n&endblock=999999999\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&startblock=0&endblock=999999999&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokentx\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\n&page=1\n&offset=100\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&page=1&offset=100&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokentx\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\n&page=1\n&offset=100\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&page=1&offset=100&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"Usage:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"ERC-20 transfers from an address, specify the address parameter"),(0,s.kt)("li",{parentName:"ul"},"ERC-20 transfers from a contract address, specify the contract address parameter"),(0,s.kt)("li",{parentName:"ul"},"ERC-20 transfers from an address filtered by a token contract, specify both address and contract address parameters.")),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"contractaddress"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the token contract address to check for balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"startblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"endblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"sort"),(0,s.kt)("td",{parentName:"tr",align:null},"the sorting preference, use ",(0,s.kt)("inlineCode",{parentName:"td"},"asc")," to sort by ascending and ",(0,s.kt)("inlineCode",{parentName:"td"},"desc")," to sort by descending"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "549641",\n "timeStamp": "1713925552",\n "hash": "0x8c61a31425cece813e512578358aaff625b5fc25a6a1c59380cdddd5278a9ea2",\n "nonce": "1",\n "blockHash": "0x1b3a6f75b3e44af80a846a895778317fe31edc1c84cb9bfb08898f429ea4ca03",\n "from": "0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",\n "contractAddress": "0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",\n "to": "0x25ab3efd52e6470681ce037cd546dc60726948d3",\n "value": "2107000",\n "tokenName": "Tether USD",\n "tokenSymbol": "USDT",\n "transactionIndex": "0",\n "gas": "107806",\n "gasPrice": "125000009",\n "gasUsed": "101193",\n "cumulativeGasUsed": "0",\n "input": "deprecated",\n "confirmations": "8236"\n },\n {\n "blockNumber": "492201",\n "timeStamp": "1713753232",\n "hash": "0x172f945ea91da4e92979c2a85388151f211c1ac40aa3e21f61233bdf6c8c0232",\n "nonce": "32",\n "blockHash": "0x5ecacd9d0f8e7f843908db85add0cbd5a6e9ba12e7a6bd4df519ceeab0b4eb06",\n "from": "0x25ab3efd52e6470681ce037cd546dc60726948d3",\n "contractAddress": "0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",\n "to": "0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",\n "value": "2107000",\n "tokenName": "Tether USD",\n "tokenSymbol": "USDT",\n "transactionIndex": "0",\n "gas": "153436",\n "gasPrice": "105000007",\n "gasUsed": "125699",\n "cumulativeGasUsed": "0",\n "input": "deprecated",\n "confirmations": "65676"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-a-list-of-erc-721---token-transfer-events-by-address"},'Get a list of "ERC-721 - Token Transfer Events" by Address'),(0,s.kt)("p",null,"Returns the list of ERC-721 ( NFT ) tokens transferred by an address, with optional filtering by token contract.\n","[Optional Parameters]"," startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokennfttx\n&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\n&startblock=0\n&endblock=999999999\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184&startblock=0&endblock=999999999&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokennfttx\n&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230\n&page=1\n&offset=100\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230&page=1&offset=100&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokennfttx\n&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230\n&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\n&page=1\n&offset=100\n&sort=asc\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184&page=1&offset=100&sort=asc"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"Usage:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"ERC-721 transfers from an address, specify the address parameter"),(0,s.kt)("li",{parentName:"ul"},"ERC-721 transfers from a contract address, specify the contract address parameter"),(0,s.kt)("li",{parentName:"ul"},"ERC-721 transfers from an address filtered by a token contract, specify both address and contract address parameters.")),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"contractaddress"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," representing the token contract address to check for balance")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"startblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"endblock"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"sort"),(0,s.kt)("td",{parentName:"tr",align:null},"the sorting preference, use ",(0,s.kt)("inlineCode",{parentName:"td"},"asc")," to sort by ascending and ",(0,s.kt)("inlineCode",{parentName:"td"},"desc")," to sort by descending"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,s.kt)("p",null," Sample Response"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "557453",\n "timeStamp": "1713948988",\n "hash": "0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e",\n "nonce": "33",\n "blockHash": "0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217",\n "from": "0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",\n "contractAddress": "0x963c039406f8b10d3a0691328b4d2ae90fa43230",\n "to": "0xbd24dcaa72e661ecc948a654437dafa1a6384e90",\n "tokenID": "65001055500330754286618552158997555046548672384952399608215284533236886254591",\n "tokenName": ".btr(XNAME on Bitlayer)",\n "tokenSymbol": "XNAME",\n "tokenDecimal": "0",\n "transactionIndex": "0",\n "gas": "520481",\n "gasPrice": "100000007",\n "gasUsed": "476443",\n "cumulativeGasUsed": "0",\n "input": "deprecated",\n "confirmations": "28002"\n },\n {\n "blockNumber": "557453",\n "timeStamp": "1713948988",\n "hash": "0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e",\n "nonce": "33",\n "blockHash": "0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217",\n "from": "0x0000000000000000000000000000000000000000",\n "contractAddress": "0x963c039406f8b10d3a0691328b4d2ae90fa43230",\n "to": "0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",\n "tokenID": "65001055500330754286618552158997555046548672384952399608215284533236886254591",\n "tokenName": ".btr(XNAME on Bitlayer)",\n "tokenSymbol": "XNAME",\n "tokenDecimal": "0",\n "transactionIndex": "0",\n "gas": "520481",\n "gasPrice": "100000007",\n "gasUsed": "476443",\n "cumulativeGasUsed": "0",\n "input": "deprecated",\n "confirmations": "28002"\n }\n ]\n}\n')))),(0,s.kt)("h2",{id:"get-list-of-blocks-validated-by-address"},"Get list of Blocks Validated by Address"),(0,s.kt)("p",null,"Returns the list of blocks validated by an address."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=getminedblocks\n&blocktype=blocks\n&address=0x0fac0285011992215edb080f14a2cc6ab629360b\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=getminedblocks&blocktype=blocks&address=0x0fac0285011992215edb080f14a2cc6ab629360b"},"browser")," \ud83d\udd17"),(0,s.kt)("p",null,"or"),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"To get paginated results use ",(0,s.kt)("inlineCode",{parentName:"p"},"page=")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"offset=")))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=getminedblocks\n&blocktype=blocks\n&page=1\n&offset=100\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=getminedblocks&blocktype=blocks&page=1&offset=100"},"browser")," \ud83d\udd17"),(0,s.kt)(d.Z,{mdxType:"Tabs"},(0,s.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"blocktype"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"string")," pre-defined block type, either ",(0,s.kt)("inlineCode",{parentName:"td"},"blocks")," for canonical blocks or ",(0,s.kt)("inlineCode",{parentName:"td"},"uncles")," for uncle blocks only")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"page"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"integer")," page number, if pagination is enabled")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"offset"),(0,s.kt)("td",{parentName:"tr",align:null},"the number of transactions displayed per page"))))),(0,s.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},"Sample Response",(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{ \n "status":"1",\n "message":"OK",\n "result":[\n {\n "blockNumber": "1189703",\n "timeStamp": "1715845738",\n "blockReward": "0"\n },\n {\n "blockNumber": "1189683",\n "timeStamp": "1715845678",\n "blockReward": "0"\n },\n {\n "blockNumber": "1189663",\n "timeStamp": "1715845618",\n "blockReward": "0"\n },\n {\n "blockNumber": "1189643",\n "timeStamp": "1715845558",\n "blockReward": "0"\n },\n {\n "blockNumber": "1189623",\n "timeStamp": "1715845498",\n "blockReward": "0"\n }\n ]\n}\n')))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/068d31a7.7fdc3f95.js b/assets/js/068d31a7.7fdc3f95.js new file mode 100644 index 00000000..aaec86d2 --- /dev/null +++ b/assets/js/068d31a7.7fdc3f95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3965],{1923:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>l,toc:()=>b});var s=r(4848),a=r(8453),t=r(1470),c=r(9365);const d={sidebar_position:1,title:"Accounts"},i=void 0,l={id:"Bitlayer Scan APIs/Accounts",title:"Accounts",description:"Endpoint URLs",source:"@site/docs/Bitlayer Scan APIs/Accounts.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Accounts",permalink:"/docs/Bitlayer Scan APIs/Accounts",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Accounts"},sidebar:"docs",previous:{title:"Bitlayer Scan APIs",permalink:"/docs/category/bitlayer-scan-apis"},next:{title:"Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts"}},o={},b=[{value:"Endpoint URLs",id:"endpoint-urls",level:2},{value:"Get BTC Balance for a single address",id:"get-btc-balance-for-a-single-address",level:2},{value:"Get BTC Balance for multiple addresses in a single call",id:"get-btc-balance-for-multiple-addresses-in-a-single-call",level:2},{value:"Get a list of 'Normal' Transactions By Address",id:"get-a-list-of-normal-transactions-by-address",level:2},{value:"Get a list of 'Internal' Transactions By Address",id:"get-a-list-of-internal-transactions-by-address",level:2},{value:"Get "Internal Transactions" by Transaction Hash",id:"get-internal-transactions-by-transaction-hash",level:2},{value:"Get "Internal Transactions" by Block Range",id:"get-internal-transactions-by-block-range",level:2},{value:"Get a list of "ERC-20 - Token Transfer Events" by Address",id:"get-a-list-of-erc-20---token-transfer-events-by-address",level:2},{value:"Get a list of "ERC-721 - Token Transfer Events" by Address",id:"get-a-list-of-erc-721---token-transfer-events-by-address",level:2},{value:"Get list of Blocks Validated by Address",id:"get-list-of-blocks-validated-by-address",level:2}];function f(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"endpoint-urls",children:"Endpoint URLs"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Network"}),(0,s.jsx)(n.th,{children:"URL"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Mainnet"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api",children:"https://api.btrscan.com/scan/api"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Testnet"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"https://api-testnet.bitlayer.org/scan/api",children:"https://api-testnet.bitlayer.org/scan/api"})})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-btc-balance-for-a-single-address",children:"Get BTC Balance for a single address"}),"\n",(0,s.jsx)(n.p,{children:"Returns the BTC balance of a given address."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=balance\r\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=balance&address=0xe7564c607c663e5784031229570cbd47290dd87f",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance"]})]})})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": "24160814822445819116"\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-btc-balance-for-multiple-addresses-in-a-single-call",children:"Get BTC Balance for multiple addresses in a single call"}),"\n",(0,s.jsx)(n.p,{children:"Returns the balance of the accounts from a list of addresses."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=balancemulti\r\n&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=balancemulti&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance,separated by ",(0,s.jsx)(n.code,{children:","})," up to 20 addresses in a single batch"]})]})})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "account": "0xe7564c607c663e5784031229570cbd47290dd87f",\r\n "balance": "24160814822445819116"\r\n },\r\n {\r\n "account": "0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d",\r\n "balance": "7152743425798252551"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-a-list-of-normal-transactions-by-address",children:"Get a list of 'Normal' Transactions By Address"}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of transactions performed by an address, with optional pagination.\r\n[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"Returns up to a maximum of the last 10000 transactions only"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlist\r\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\r\n&startblock=0\r\n&endblock=99999999\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlist&address=0xe7564c607c663e5784031229570cbd47290dd87f&startblock=0&endblock=99999999&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To get paginated results use ",(0,s.jsx)(n.code,{children:"page="})," and ",(0,s.jsx)(n.code,{children:"offset="})]})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlist\r\n&address=0xe7564c607c663e5784031229570cbd47290dd87f\r\n&startblock=0\r\n&endblock=99999999\r\n&page=1\r\n&offset=10\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlist&address=0xe7564c607c663e5784031229570cbd47290dd87f&startblock=0&endblock=99999999&page=1&offset=10&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to stop searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sort"}),(0,s.jsxs)(n.td,{children:["the sorting preference, use ",(0,s.jsx)(n.code,{children:"asc"})," to sort by ascending and ",(0,s.jsx)(n.code,{children:"desc"})," to sort by descending"]})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "911734",\r\n "timeStamp": "1715011831",\r\n "hash": "0x38a33c9dedf320432ab4bbfdaf5bec13fb156d81bfa96bbc853b387755f37291",\r\n "nonce": "0",\r\n "transactionIndex": "0",\r\n "value": "99800000000000000",\r\n "gas": "45358",\r\n "gasPrice": "102553563",\r\n "txreceipt_status": "1",\r\n "gasUsed": "44978",\r\n "methodId": "0xd0e30db0",\r\n "functionName": "deposit"\r\n },\r\n {\r\n "blockNumber": "911882",\r\n "timeStamp": "1715012275",\r\n "hash": "0x50b60e5046fe4d13413737b7e886906d7511ed1fe78ba5aa4b1978145f0309da",\r\n "nonce": "1",\r\n "transactionIndex": "0",\r\n "value": "0",\r\n "gas": "140550",\r\n "gasPrice": "102581210",\r\n "txreceipt_status": "1",\r\n "gasUsed": "46143",\r\n "methodId": "0x095ea7b3",\r\n "functionName": "approve"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-a-list-of-internal-transactions-by-address",children:"Get a list of 'Internal' Transactions By Address"}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of internal transactions performed by an address, with optional pagination."}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsx)(n.p,{children:"Returns up to a maximum of the last 10000 transactions only"}),(0,s.jsx)(n.p,{children:"[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlistinternal\r\n&address=0x039bac1779933ee52abf3eff25188c4d673931ac\r\n&startblock=0\r\n&endblock=2702578\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&address=0x039bac1779933ee52abf3eff25188c4d673931ac&startblock=0&endblock=2702578&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To get paginated results use ",(0,s.jsx)(n.code,{children:"page="})," and ",(0,s.jsx)(n.code,{children:"offset="})]})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlistinternal\r\n&address=0x039bac1779933ee52abf3eff25188c4d673931ac\r\n&startblock=0\r\n&endblock=2702578\r\n&page=1\r\n&offset=10\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&address=0x039bac1779933ee52abf3eff25188c4d673931ac&startblock=0&endblock=2702578&page=1&offset=10&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to stop searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sort"}),(0,s.jsxs)(n.td,{children:["the sorting preference, use ",(0,s.jsx)(n.code,{children:"asc"})," to sort by ascending and ",(0,s.jsx)(n.code,{children:"desc"})," to sort by descending"]})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "2063492",\r\n "timeStamp": "1713324960",\r\n "hash": "0xb633b52fa2eaa2f817aa721db500766458e6b794b872f911d8f72d20c1356377",\r\n "transactionIndex": "0",\r\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\r\n "to": "0x0000000000000000000000000000000000000001",\r\n "value": "0",\r\n "gas": "77311",\r\n "txreceipt_status": "1",\r\n "gasUsed": "3000\r\n },\r\n {\r\n "blockNumber": "2063508",\r\n "timeStamp": "1713325008",\r\n "hash": "0x9b169e06404b28fec2f1d20eeecc485ed8d11c0f792d872dfc78e29e05fe3a2f",\r\n "transactionIndex": "1",\r\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\r\n "to": "0x0000000000000000000000000000000000000001",\r\n "value": "0",\r\n "gas": "77299",\r\n "txreceipt_status": "1",\r\n "gasUsed": "3000"\r\n },\r\n {\r\n "blockNumber": "2063521",\r\n "timeStamp": "1713325047",\r\n "hash": "0xd9e8a7407f4993d85ba80ddc05a0bcf2e45c5a70781fae58d508df45bf7bf846",\r\n "transactionIndex": "0",\r\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\r\n "to": "0x0000000000000000000000000000000000000001",\r\n "value": "0",\r\n "gas": "77299",\r\n "txreceipt_status": "1",\r\n "gasUsed": "3000"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-internal-transactions-by-transaction-hash",children:'Get "Internal Transactions" by Transaction Hash'}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of internal transactions performed within a transaction."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"Returns up to a maximum of the last 10000 transactions only"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlistinternal\r\n&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"txhash"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the transaction hash to check for internal transactions"]})]})})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "2928943",\r\n "timeStamp": "1715921315",\r\n "hash": "0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",\r\n "transactionIndex": "0",\r\n "from": "0x9386a8135c6a56103f14a1ed655ff7467b3b86eb",\r\n "to": "0x039bac1779933ee52abf3eff25188c4d673931ac",\r\n "value": "0",\r\n "gas": "90214",\r\n "txreceipt_status": "1",\r\n "input": "0x5eddd15700000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000041e7d4cad89769c747ecbfaab89239b64facf1be59ec2132f68d4c5ddd6e6834570b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b1c00000000000000000000000000000000000000000000000000000000000000",\r\n "gasUsed": "36357"\r\n },\r\n {\r\n "blockNumber": "2928943",\r\n "timeStamp": "1715921315",\r\n "hash": "0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",\r\n "transactionIndex": "0",\r\n "from": "0x039bac1779933ee52abf3eff25188c4d673931ac",\r\n "to": "0x0000000000000000000000000000000000000001",\r\n "value": "0",\r\n "gas": "90214",\r\n "txreceipt_status": "1",\r\n "input": "0x0000000000000000000000009386a8135c6a56103f14a1ed655ff7467b3b86eb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc0b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b",\r\n "gasUsed": "3000"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-internal-transactions-by-block-range",children:'Get "Internal Transactions" by Block Range'}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of internal transactions performed within a block range, with optional pagination."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"Returns up to a maximum of the last 10000 transactions only"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=txlistinternal\r\n&startblock=0\r\n&endblock=2928944\r\n&page=1\r\n&offset=10\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=txlistinternal&startblock=0&endblock=2928944&page=1&offset=10&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to stop searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sort"}),(0,s.jsxs)(n.td,{children:["the sorting preference, use ",(0,s.jsx)(n.code,{children:"asc"})," to sort by ascending and ",(0,s.jsx)(n.code,{children:"desc"})," to sort by descending"]})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "29",\r\n "timeStamp": "1707134551",\r\n "hash": "0x17b0cd2caaff5c8cf1ae1c0398b867dc9c5354caa166532b39ae6eb9dfddd626",\r\n "transactionIndex": "0",\r\n "from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",\r\n "to": "0xf4340cf5f3891a3827713b33f769b501a0b5b122",\r\n "value": "0",\r\n "gas": "517789",\r\n "txreceipt_status": "1",\r\n "input": "0x60806040523480156200001157600080fd5b5060405162000a0c38038062000a0c8339810160408190526200003491620002d4565b6b033b2e3c9fd0803ce80000006002558051825160009114620000915760405162461bcd60e51b815260206004820152601060248201526f098cadccee8d0409cdee8409ac2e8c6d60831b60448201526064015b60405180910390fd5b60005b83518110156200019557828181518110620000b357620000b3620003b2565b602002602001015182620000c89190620003de565b91506002548211156200011e5760405162461bcd60e51b815260206004820152601460248201527f546f74616c537570706c79204f766572466c6f77000000000000000000000000604482015260640162000088565b828181518110620001335762000133620003b2565b6020026020010151600080868481518110620001535762000153620003b2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200018c90620003fa565b91505062000094565b508060025414620001e95760405162461bcd60e51b815260206004820152601e60248201527f546f74616c537570706c79206973206e6f742044697374726962757465640000604482015260640162000088565b50505062000416565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620002335762000233620001f2565b604052919050565b60006001600160401b03821115620002575762000257620001f2565b5060051b60200190565b600082601f8301126200027357600080fd5b815160206200028c62000286836200023b565b62000208565b82815260059290921b84018101918181019086841115620002ac57600080fd5b8286015b84811015620002c95780518352918301918301620002b0565b509695505050505050565b60008060408385031215620002e857600080fd5b82516001600160401b03808211156200030057600080fd5b818501915085601f8301126200031557600080fd5b815160206200032862000286836200023b565b82815260059290921b840181019181810190898411156200034857600080fd5b948201945b838610156200037f5785516001600160a01b03811681146200036f5760008081fd5b825294820194908201906200034d565b918801519196509093505050808211156200039957600080fd5b50620003a88582860162000261565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620003f457620003f4620003c8565b92915050565b6000600182016200040f576200040f620003c8565b5060010190565b6105e680620004266000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461012357806370a082311461013d57806395d89b4114610166578063a9059cbb14610188578063dd62ed3e1461019b57600080fd5b806306fdde0314610098578063095ea7b3146100d657806318160ddd146100f957806323b872dd14610110575b600080fd5b6100c060405180604001604052806009815260200168212921902a37b5b2b760b91b81525081565b6040516100cd9190610456565b60405180910390f35b6100e96100e43660046104c0565b6101d4565b60405190151581526020016100cd565b61010260025481565b6040519081526020016100cd565b6100e961011e3660046104ea565b610241565b61012b601281565b60405160ff90911681526020016100cd565b61010261014b366004610526565b6001600160a01b031660009081526020819052604090205490565b6100c06040518060400160405280600381526020016242524360e81b81525081565b6100e96101963660046104c0565b610391565b6101026101a9366004610541565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061022f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260208190526040812054821180159061028c57506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b80156102985750600082115b15610386576001600160a01b038316600090815260208190526040812080548492906102c590849061058a565b90915550506001600160a01b038416600090815260208190526040812080548492906102f290849061059d565b90915550506001600160a01b03841660009081526001602090815260408083203384529091528120805484929061032a90849061059d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161037691815260200190565b60405180910390a350600161038a565b5060005b9392505050565b3360009081526020819052604081205482118015906103b05750600082115b1561044e5733600090815260208190526040812080548492906103d490849061059d565b90915550506001600160a01b0383166000908152602081905260408120805484929061040190849061058a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350600161023b565b50600061023b565b600060208083528351808285015260005b8181101561048357858101830151858201604001528201610467565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104bb57600080fd5b919050565b600080604083850312156104d357600080fd5b6104dc836104a4565b946020939093013593505050565b6000806000606084860312156104ff57600080fd5b610508846104a4565b9250610516602085016104a4565b9150604084013590509250925092565b60006020828403121561053857600080fd5b61038a826104a4565b6000806040838503121561055457600080fd5b61055d836104a4565b915061056b602084016104a4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561023b5761023b610574565b8181038181111561023b5761023b61057456fea264697066735822122054ce9967d7d4eba6cafd665a64e31a65317e0cd391ee8f3adcd1a3194baebc2364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075000000000000000000000000845d2b001934a99d072ef409b719cffe468ba7e300000000000000000000000026fc26213675827d863607902c8dbc7f42f1a2b70000000000000000000000007765992cae0cd7dc02e2b5857a375b0b090933b500000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000007c13bc4b2c133c56000000000000000000000000000000000000000000000000f8277896582678ac00000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000001743b34e18439b502000000",\r\n "gasUsed": "417256"\r\n },\r\n {\r\n "blockNumber": "33",\r\n "timeStamp": "1707134563",\r\n "hash": "0x8001fd5a7fbeca309b7c1edd81ee68008cdbf86247fcf2b5a5522f3af65e691e",\r\n "transactionIndex": "0",\r\n "from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",\r\n "to": "0x845d2b001934a99d072ef409b719cffe468ba7e3",\r\n "value": "0",\r\n "gas": "785842",\r\n "txreceipt_status": "1",\r\n "input": "0x60806040523480156200001157600080fd5b5060405162000e7438038062000e748339810160408190526200003491620004bb565b8451865114801562000047575083518651145b801562000055575082518651145b620000a75760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420696e707574206c656e67746800000000000000000000000060448201526064015b60405180910390fd5b6000805b87518110156200026c576000878281518110620000cc57620000cc6200058f565b602002602001015111620001325760405162461bcd60e51b815260206004820152602660248201527f546f74616c20746f6b656e73206d7573742062652067726561746572207468616044820152656e207a65726f60d01b60648201526084016200009e565b6040518060a001604052808883815181106200015257620001526200058f565b60200260200101518152602001600081526020018783815181106200017b576200017b6200058f565b602002602001015181526020018683815181106200019d576200019d6200058f565b6020026020010151815260200160011515815250600360008a8481518110620001ca57620001ca6200058f565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905586518790829081106200024057620002406200058f565b602002602001015182620002559190620005bb565b9150806200026381620005d7565b915050620000ab565b506000839055600180546001600160a01b0319166001600160a01b038416908117909155426002556040516370a0823160e01b81523060048201526370a0823190602401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620005f3565b8114620003445760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e672042616c616e6365206e6f74204d617463680000000000000060448201526064016200009e565b505050505050506200060d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000392576200039262000351565b604052919050565b60006001600160401b03821115620003b657620003b662000351565b5060051b60200190565b80516001600160a01b0381168114620003d857600080fd5b919050565b600082601f830112620003ef57600080fd5b815160206200040862000402836200039a565b62000367565b82815260059290921b840181019181810190868411156200042857600080fd5b8286015b848110156200044e576200044081620003c0565b83529183019183016200042c565b509695505050505050565b600082601f8301126200046b57600080fd5b815160206200047e62000402836200039a565b82815260059290921b840181019181810190868411156200049e57600080fd5b8286015b848110156200044e5780518352918301918301620004a2565b60008060008060008060c08789031215620004d557600080fd5b86516001600160401b0380821115620004ed57600080fd5b620004fb8a838b01620003dd565b975060208901519150808211156200051257600080fd5b620005208a838b0162000459565b965060408901519150808211156200053757600080fd5b620005458a838b0162000459565b955060608901519150808211156200055c57600080fd5b506200056b89828a0162000459565b935050608087015191506200058360a08801620003c0565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620005d157620005d1620005a5565b92915050565b600060018201620005ec57620005ec620005a5565b5060010190565b6000602082840312156200060657600080fd5b5051919050565b610857806200061d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a3fe79501161005b578063a3fe7950146100d3578063dc070657146100e6578063e6fd48bc146100f9578063fdb20ccb1461010257600080fd5b80630faf4baa146100825780631d31fac0146100b25780634e71d92d146100c9575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bb60005481565b6040519081526020016100a9565b6100d161016d565b005b6100bb6100e1366004610706565b61043b565b6100d16100f4366004610706565b610513565b6100bb60025481565b610143610110366004610706565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016100a9565b336000908152600360205260409020600481015460ff166101a95760405162461bcd60e51b81526004016101a090610736565b60405180910390fd5b60006101b433610657565b9050816002015481116102095760405162461bcd60e51b815260206004820152601e60248201527f436c69666620706572696f6420686173206e6f7420656e64656420796574000060448201526064016101a0565b60006102143361043b565b905060008360010154826102289190610781565b90506000811161027a5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520666f722072656c656173650060448201526064016101a0565b8084600101600082825461028e919061079a565b90915550506001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff91906107ad565b8111156103455760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016101a0565b83546001850154111561038a5760405162461bcd60e51b815260206004820152600d60248201526c15995cdd1a5b99c8195b991959609a1b60448201526064016101a0565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff91906107c6565b5060405181815233907fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931799060200160405180910390a250505050565b6001600160a01b0381166000908152600360208181526040808420815160a0810183528154815260018201549381019390935260028101549183019190915291820154606082015260049091015460ff161515608082018190526104b15760405162461bcd60e51b81526004016101a090610736565b60006104bc84610657565b90506000826040015182116104d657506000949350505050565b60008360400151836104e89190610781565b905083606001518185600001516104ff91906107e8565b61050991906107ff565b9695505050505050565b336000908152600360205260409020600481015460ff166105465760405162461bcd60e51b81526004016101a090610736565b6001600160a01b03821660009081526003602052604090206004015460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f4e657742656e656669636961727920697320416374697665000000000000000060448201526064016101a0565b6001600160a01b03821660008181526003602081905260408083208554815560018087015481830155600280880154818401558488015483860155600480890154938101805460ff909516151560ff19958616179055338088528588208881559384018890559183018790559482018690559301805490911690555190917f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d91a35050565b6002546000904290829061066b9083610781565b9050600080548261067c91906107ff565b6001600160a01b038616600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201849052918201546060820181905260049092015460ff16151560808201529293506106e3919061079a565b82106106fd5780604001518160600151610509919061079a565b50949350505050565b60006020828403121561071857600080fd5b81356001600160a01b038116811461072f57600080fd5b9392505050565b6020808252818101527f4e6f206163746976652076657374696e67207363686564756c6520666f756e64604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107945761079461076b565b92915050565b808201808211156107945761079461076b565b6000602082840312156107bf57600080fd5b5051919050565b6000602082840312156107d857600080fd5b8151801515811461072f57600080fd5b80820281158282048414176107945761079461076b565b60008261081c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122072316cc586c2a8c967295ba7c6e33bc7890cf771f04ae131a2043a542556b2b264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000015180000000000000000000000000f4340cf5f3891a3827713b33f769b501a0b5b1220000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a17104869c50271fe81042c81beb3e5a694e605d000000000000000000000000b0d7b4d930f302018ee1d7caff22b0819b4d59e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000024",\r\n "gasUsed": "665332"\r\n },\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-a-list-of-erc-20---token-transfer-events-by-address",children:'Get a list of "ERC-20 - Token Transfer Events" by Address'}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of ERC-20 tokens transferred by an address, with optional filtering by token contract.\r\n[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokentx\r\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\r\n&startblock=0\r\n&endblock=999999999\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&startblock=0&endblock=999999999&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokentx\r\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\r\n&page=1\r\n&offset=100\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&page=1&offset=100&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokentx\r\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\r\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\r\n&page=1\r\n&offset=100\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokentx&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&page=1&offset=100&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"Usage:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"ERC-20 transfers from an address, specify the address parameter"}),"\n",(0,s.jsx)(n.li,{children:"ERC-20 transfers from a contract address, specify the contract address parameter"}),"\n",(0,s.jsx)(n.li,{children:"ERC-20 transfers from an address filtered by a token contract, specify both address and contract address parameters."}),"\n"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"contractaddress"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the token contract address to check for balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to stop searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sort"}),(0,s.jsxs)(n.td,{children:["the sorting preference, use ",(0,s.jsx)(n.code,{children:"asc"})," to sort by ascending and ",(0,s.jsx)(n.code,{children:"desc"})," to sort by descending"]})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "549641",\r\n "timeStamp": "1713925552",\r\n "hash": "0x8c61a31425cece813e512578358aaff625b5fc25a6a1c59380cdddd5278a9ea2",\r\n "nonce": "1",\r\n "blockHash": "0x1b3a6f75b3e44af80a846a895778317fe31edc1c84cb9bfb08898f429ea4ca03",\r\n "from": "0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",\r\n "contractAddress": "0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",\r\n "to": "0x25ab3efd52e6470681ce037cd546dc60726948d3",\r\n "value": "2107000",\r\n "tokenName": "Tether USD",\r\n "tokenSymbol": "USDT",\r\n "transactionIndex": "0",\r\n "gas": "107806",\r\n "gasPrice": "125000009",\r\n "gasUsed": "101193",\r\n "cumulativeGasUsed": "0",\r\n "input": "deprecated",\r\n "confirmations": "8236"\r\n },\r\n {\r\n "blockNumber": "492201",\r\n "timeStamp": "1713753232",\r\n "hash": "0x172f945ea91da4e92979c2a85388151f211c1ac40aa3e21f61233bdf6c8c0232",\r\n "nonce": "32",\r\n "blockHash": "0x5ecacd9d0f8e7f843908db85add0cbd5a6e9ba12e7a6bd4df519ceeab0b4eb06",\r\n "from": "0x25ab3efd52e6470681ce037cd546dc60726948d3",\r\n "contractAddress": "0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",\r\n "to": "0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",\r\n "value": "2107000",\r\n "tokenName": "Tether USD",\r\n "tokenSymbol": "USDT",\r\n "transactionIndex": "0",\r\n "gas": "153436",\r\n "gasPrice": "105000007",\r\n "gasUsed": "125699",\r\n "cumulativeGasUsed": "0",\r\n "input": "deprecated",\r\n "confirmations": "65676"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-a-list-of-erc-721---token-transfer-events-by-address",children:'Get a list of "ERC-721 - Token Transfer Events" by Address'}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of ERC-721 ( NFT ) tokens transferred by an address, with optional filtering by token contract.\r\n[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokennfttx\r\n&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\r\n&startblock=0\r\n&endblock=999999999\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184&startblock=0&endblock=999999999&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokennfttx\r\n&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230\r\n&page=1\r\n&offset=100\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230&page=1&offset=100&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokennfttx\r\n&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230\r\n&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\r\n&page=1\r\n&offset=100\r\n&sort=asc\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokennfttx&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184&page=1&offset=100&sort=asc",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"Usage:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"ERC-721 transfers from an address, specify the address parameter"}),"\n",(0,s.jsx)(n.li,{children:"ERC-721 transfers from a contract address, specify the contract address parameter"}),"\n",(0,s.jsx)(n.li,{children:"ERC-721 transfers from an address filtered by a token contract, specify both address and contract address parameters."}),"\n"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"address"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the address to check balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"contractaddress"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," representing the token contract address to check for balance"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endblock"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," block number to stop searching for transactions"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sort"}),(0,s.jsxs)(n.td,{children:["the sorting preference, use ",(0,s.jsx)(n.code,{children:"asc"})," to sort by ascending and ",(0,s.jsx)(n.code,{children:"desc"})," to sort by descending"]})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "557453",\r\n "timeStamp": "1713948988",\r\n "hash": "0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e",\r\n "nonce": "33",\r\n "blockHash": "0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217",\r\n "from": "0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",\r\n "contractAddress": "0x963c039406f8b10d3a0691328b4d2ae90fa43230",\r\n "to": "0xbd24dcaa72e661ecc948a654437dafa1a6384e90",\r\n "tokenID": "65001055500330754286618552158997555046548672384952399608215284533236886254591",\r\n "tokenName": ".btr(XNAME on Bitlayer)",\r\n "tokenSymbol": "XNAME",\r\n "tokenDecimal": "0",\r\n "transactionIndex": "0",\r\n "gas": "520481",\r\n "gasPrice": "100000007",\r\n "gasUsed": "476443",\r\n "cumulativeGasUsed": "0",\r\n "input": "deprecated",\r\n "confirmations": "28002"\r\n },\r\n {\r\n "blockNumber": "557453",\r\n "timeStamp": "1713948988",\r\n "hash": "0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e",\r\n "nonce": "33",\r\n "blockHash": "0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217",\r\n "from": "0x0000000000000000000000000000000000000000",\r\n "contractAddress": "0x963c039406f8b10d3a0691328b4d2ae90fa43230",\r\n "to": "0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",\r\n "tokenID": "65001055500330754286618552158997555046548672384952399608215284533236886254591",\r\n "tokenName": ".btr(XNAME on Bitlayer)",\r\n "tokenSymbol": "XNAME",\r\n "tokenDecimal": "0",\r\n "transactionIndex": "0",\r\n "gas": "520481",\r\n "gasPrice": "100000007",\r\n "gasUsed": "476443",\r\n "cumulativeGasUsed": "0",\r\n "input": "deprecated",\r\n "confirmations": "28002"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"get-list-of-blocks-validated-by-address",children:"Get list of Blocks Validated by Address"}),"\n",(0,s.jsx)(n.p,{children:"Returns the list of blocks validated by an address."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=getminedblocks\r\n&blocktype=blocks\r\n&address=0x0fac0285011992215edb080f14a2cc6ab629360b\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=getminedblocks&blocktype=blocks&address=0x0fac0285011992215edb080f14a2cc6ab629360b",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsx)(n.p,{children:"or"}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To get paginated results use ",(0,s.jsx)(n.code,{children:"page="})," and ",(0,s.jsx)(n.code,{children:"offset="})]})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=getminedblocks\r\n&blocktype=blocks\r\n&page=1\r\n&offset=100\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Try this endpoint in your ",(0,s.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=account&action=getminedblocks&blocktype=blocks&page=1&offset=100",children:"browser"})," \ud83d\udd17"]}),"\n",(0,s.jsxs)(t.A,{children:[(0,s.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,s.jsx)(n.p,{children:"Query Parameters"}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Parameter"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"blocktype"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"string"})," pre-defined block type, either ",(0,s.jsx)(n.code,{children:"blocks"})," for canonical blocks or ",(0,s.jsx)(n.code,{children:"uncles"})," for uncle blocks only"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"page"}),(0,s.jsxs)(n.td,{children:["the ",(0,s.jsx)(n.code,{children:"integer"})," page number, if pagination is enabled"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"offset"}),(0,s.jsx)(n.td,{children:"the number of transactions displayed per page"})]})]})]})]}),(0,s.jsxs)(c.A,{value:"response",label:"Response",children:[(0,s.jsx)(n.p,{children:"Sample Response"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{ \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n {\r\n "blockNumber": "1189703",\r\n "timeStamp": "1715845738",\r\n "blockReward": "0"\r\n },\r\n {\r\n "blockNumber": "1189683",\r\n "timeStamp": "1715845678",\r\n "blockReward": "0"\r\n },\r\n {\r\n "blockNumber": "1189663",\r\n "timeStamp": "1715845618",\r\n "blockReward": "0"\r\n },\r\n {\r\n "blockNumber": "1189643",\r\n "timeStamp": "1715845558",\r\n "blockReward": "0"\r\n },\r\n {\r\n "blockNumber": "1189623",\r\n "timeStamp": "1715845498",\r\n "blockReward": "0"\r\n }\r\n ]\r\n}\n'})})]})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(f,{...e})}):f(e)}},9365:(e,n,r)=>{r.d(n,{A:()=>c});r(6540);var s=r(8215);const a={tabItem:"tabItem_Ymn6"};var t=r(4848);function c(e){let{children:n,hidden:r,className:c}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,s.A)(a.tabItem,c),hidden:r,children:n})}},1470:(e,n,r)=>{r.d(n,{A:()=>v});var s=r(6540),a=r(8215),t=r(3104),c=r(6347),d=r(205),i=r(7485),l=r(1682),o=r(9466);function b(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function f(e){const{values:n,children:r}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return b(e).map((e=>{let{props:{value:n,label:r,attributes:s,default:a}}=e;return{value:n,label:r,attributes:s,default:a}}))}(r);return function(e){const n=(0,l.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function h(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:r}=e;const a=(0,c.W6)(),t=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The 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 r??null}({queryString:n,groupId:r});return[(0,i.aZ)(t),(0,s.useCallback)((e=>{if(!t)return;const n=new URLSearchParams(a.location.search);n.set(t,e),a.replace({...a.location,search:n.toString()})}),[t,a])]}function u(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,t=f(e),[c,i]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=r.find((e=>e.default))??r[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:t}))),[l,b]=x({queryString:r,groupId:a}),[u,p]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,t]=(0,o.Dv)(r);return[a,(0,s.useCallback)((e=>{r&&t.set(e)}),[r,t])]}({groupId:a}),j=(()=>{const e=l??u;return h({value:e,tabValues:t})?e:null})();(0,d.A)((()=>{j&&i(j)}),[j]);return{selectedValue:c,selectValue:(0,s.useCallback)((e=>{if(!h({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),b(e),p(e)}),[b,p,t]),tabValues:t}}var p=r(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var m=r(4848);function g(e){let{className:n,block:r,selectedValue:s,selectValue:c,tabValues:d}=e;const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,t.a_)(),o=e=>{const n=e.currentTarget,r=i.indexOf(n),a=d[r].value;a!==s&&(l(n),c(a))},b=e=>{let n=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const r=i.indexOf(e.currentTarget)+1;n=i[r]??i[0];break}case"ArrowLeft":{const r=i.indexOf(e.currentTarget)-1;n=i[r]??i[i.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":r},n),children:d.map((e=>{let{value:n,label:r,attributes:t}=e;return(0,m.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>i.push(e),onKeyDown:b,onClick:o,...t,className:(0,a.A)("tabs__item",j.tabItem,t?.className,{"tabs__item--active":s===n}),children:r??n},n)}))})}function k(e){let{lazy:n,children:r,selectedValue:a}=e;const t=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=t.find((e=>e.props.value===a));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:t.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function y(e){const n=u(e);return(0,m.jsxs)("div",{className:(0,a.A)("tabs-container",j.tabList),children:[(0,m.jsx)(g,{...n,...e}),(0,m.jsx)(k,{...n,...e})]})}function v(e){const n=(0,p.A)();return(0,m.jsx)(y,{...e,children:b(e.children)},String(n))}},8453:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>d});var s=r(6540);const a={},t=s.createContext(a);function c(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0979cdad.943be056.js b/assets/js/0979cdad.943be056.js new file mode 100644 index 00000000..1d35d96f --- /dev/null +++ b/assets/js/0979cdad.943be056.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[744],{4462:l=>{l.exports=JSON.parse('{"tag":{"label":"Hello Bitlayer","permalink":"/blog/tags/hello-bitlayer","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hello-bitlayer","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/09a35e94.50140cc7.js b/assets/js/09a35e94.50140cc7.js new file mode 100644 index 00000000..567575c2 --- /dev/null +++ b/assets/js/09a35e94.50140cc7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2547],{1868:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>i,contentTitle:()=>c,default:()=>f,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var t=n(4848),a=n(8453);const r={sidebar_position:5},c="Contracts",d={id:"BitlayerNetwork/Contracts",title:"Contracts",description:"Contract Addresses (Mainnet)",source:"@site/docs/BitlayerNetwork/Contracts.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/Contracts",permalink:"/docs/BitlayerNetwork/Contracts",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"docs",previous:{title:"JSON-RPC",permalink:"/docs/BitlayerNetwork/Json-RPC"},next:{title:"Peg Tokens",permalink:"/docs/BitlayerNetwork/PegTokens"}},i={},l=[{value:"Contract Addresses (Mainnet)",id:"contract-addresses-mainnet",level:2},{value:"Contract Addresses (Testnet)",id:"contract-addresses-testnet",level:2}];function o(e){const s={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"contracts",children:"Contracts"}),"\n",(0,t.jsx)(s.h2,{id:"contract-addresses-mainnet",children:"Contract Addresses (Mainnet)"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Staking : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0x000000000000000000000000000000000000f000?tab=Transactions",children:"0x000000000000000000000000000000000000f000"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["BTR : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0x0e4cf4affdb72b39ea91fa726d291781cbd020bf?tab=Transactions",children:"0x0E4cF4Affdb72b39Ea91fA726D291781cBd020bF"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Deterministic Deployment Proxy : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0x4e59b44847b379578588920ca78fbf26c0b4956c?tab=Transactions",children:"0x4e59b44847b379578588920ca78fbf26c0b4956c"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Vault : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0xddf655d9afd934b4851873ba55a678dc82282d4a?tab=Transactions",children:"0xDDf655d9afd934b4851873ba55A678dc82282D4a"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Multicall : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0xc8818aaeabf0df9f3f3fff54ab185705177a6234?tab=Transactions",children:"0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["WBTC : ",(0,t.jsx)(s.a,{href:"https://www.btrscan.com/address/0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f?tab=Transactions",children:"0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"contract-addresses-testnet",children:"Contract Addresses (Testnet)"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Staking : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0x000000000000000000000000000000000000f000?tab=Transactions",children:"0x000000000000000000000000000000000000F000"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["BTR : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0xf4340cf5f3891a3827713b33f769b501a0b5b122?tab=Transactions",children:"0xf4340CF5F3891A3827713b33f769b501A0b5b122"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["LockingContract : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0x845d2b001934a99d072ef409b719cffe468ba7e3?tab=Transactions",children:"0x845D2b001934a99d072EF409b719cffE468ba7e3"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Vault : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0x7765992cae0cd7dc02e2b5857a375b0b090933b5?tab=Transactions",children:"0x7765992cAE0Cd7DC02e2B5857a375b0B090933b5"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Multicall_v1 : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0x688f1dac2a07bdce6e7781ab1177880fc8d13ae3?tab=Transactions",children:"0x688f1Dac2a07BDCE6e7781Ab1177880fC8d13AE3"})]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["WBTC : ",(0,t.jsx)(s.a,{href:"https://testnet-scan.bitlayer.org/address/0x3e57d6946f893314324c975aa9cebbdf3232967e?tab=Transactions",children:"0x3e57d6946f893314324C975AA9CEBBdF3232967E"})]}),"\n"]}),"\n"]})]})}function f(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>d});var t=n(6540);const a={},r=t.createContext(a);function c(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/09a35e94.8a60e953.js b/assets/js/09a35e94.8a60e953.js deleted file mode 100644 index 2f320b9f..00000000 --- a/assets/js/09a35e94.8a60e953.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5931],{3905:function(e,t,a){a.d(t,{Zo:function(){return l},kt:function(){return b}});var r=a(7294);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 s(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 c(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),p=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},l=function(e){var t=p(e.components);return r.createElement(i.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,i=e.parentName,l=o(e,["components","mdxType","originalType","parentName"]),d=p(a),b=n,u=d["".concat(i,".").concat(b)]||d[b]||f[b]||s;return a?r.createElement(u,c(c({ref:t},l),{},{components:a})):r.createElement(u,c({ref:t},l))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,c=new Array(s);c[0]=d;var o={};for(var i in t)hasOwnProperty.call(t,i)&&(o[i]=t[i]);o.originalType=e,o.mdxType="string"==typeof e?e:n,c[1]=o;for(var p=2;p{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Introduction","slug":"/category/introduction","permalink":"/docs/category/introduction","sidebar":"docs","navigation":{"next":{"title":"Welcome","permalink":"/docs/Introduction/"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/138e0e15.15c94c1b.js b/assets/js/138e0e15.15c94c1b.js new file mode 100644 index 00000000..ea887686 --- /dev/null +++ b/assets/js/138e0e15.15c94c1b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4921],{1597:e=>{e.exports=JSON.parse('{"name":"@easyops-cn/docusaurus-search-local","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.035b0c1a.js b/assets/js/14eb3368.035b0c1a.js new file mode 100644 index 00000000..42915ed2 --- /dev/null +++ b/assets/js/14eb3368.035b0c1a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6969],{1243:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var s=n(8215),r=n(7559),i=n(4142),a=n(9169),l=n(8774),o=n(1312),c=n(6025),d=n(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function h(){const e=(0,c.A)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(l.A,{"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m.breadcrumbHomeIcon})})})}const b={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function x(e){let{children:t,href:n,isLast:s}=e;const r="breadcrumbs__link";return s?(0,d.jsx)("span",{className:r,itemProp:"name",children:t}):n?(0,d.jsx)(l.A,{className:r,href:n,itemProp:"item",children:(0,d.jsx)("span",{itemProp:"name",children:t})}):(0,d.jsx)("span",{className:r,children:t})}function p(e){let{children:t,active:n,index:r,addMicrodata:i}=e;return(0,d.jsxs)("li",{...i&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,d.jsx)("meta",{itemProp:"position",content:String(r+1)})]})}function g(){const e=(0,i.OF)(),t=(0,a.Dt)();return e?(0,d.jsx)("nav",{className:(0,s.A)(r.G.docs.docBreadcrumbs,b.breadcrumbsContainer),"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,d.jsx)(h,{}),e.map(((t,n)=>{const s=n===e.length-1,r="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,d.jsx)(p,{active:s,index:n,addMicrodata:!!r,children:(0,d.jsx)(x,{href:r,isLast:s,children:t.label})},n)}))]})}):null}},4136:(e,t,n)=>{n.r(t),n.d(t,{default:()=>y});n(6540);var s=n(1213),r=n(4142),i=n(6025),a=n(8215),l=n(8774),o=n(5846),c=n(6654),d=n(1312),u=n(1107);const m={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var h=n(4848);function b(e){let{href:t,children:n}=e;return(0,h.jsx)(l.A,{href:t,className:(0,a.A)("card padding--lg",m.cardContainer),children:n})}function x(e){let{href:t,icon:n,title:s,description:r}=e;return(0,h.jsxs)(b,{href:t,children:[(0,h.jsxs)(u.A,{as:"h2",className:(0,a.A)("text--truncate",m.cardTitle),title:s,children:[n," ",s]}),r&&(0,h.jsx)("p",{className:(0,a.A)("text--truncate",m.cardDescription),title:r,children:r})]})}function p(e){let{item:t}=e;const n=(0,r.Nr)(t),s=function(){const{selectMessage:e}=(0,o.W)();return t=>e(t,(0,d.T)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t}))}();return n?(0,h.jsx)(x,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??s(t.items.length)}):null}function g(e){let{item:t}=e;const n=(0,c.A)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",s=(0,r.cC)(t.docId??void 0);return(0,h.jsx)(x,{href:t.href,icon:n,title:t.label,description:t.description??s?.description})}function v(e){let{item:t}=e;switch(t.type){case"link":return(0,h.jsx)(g,{item:t});case"category":return(0,h.jsx)(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function f(e){let{className:t}=e;const n=(0,r.$S)();return(0,h.jsx)(j,{items:n.items,className:t})}function j(e){const{items:t,className:n}=e;if(!t)return(0,h.jsx)(f,{...e});const s=(0,r.d1)(t);return(0,h.jsx)("section",{className:(0,a.A)("row",n),children:s.map(((e,t)=>(0,h.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,h.jsx)(v,{item:e})},t)))})}var A=n(7719),N=n(1878),T=n(4267),L=n(1243);const _={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function k(e){let{categoryGeneratedIndex:t}=e;return(0,h.jsx)(s.be,{title:t.title,description:t.description,keywords:t.keywords,image:(0,i.A)(t.image)})}function w(e){let{categoryGeneratedIndex:t}=e;const n=(0,r.$S)();return(0,h.jsxs)("div",{className:_.generatedIndexPage,children:[(0,h.jsx)(N.A,{}),(0,h.jsx)(L.A,{}),(0,h.jsx)(T.A,{}),(0,h.jsxs)("header",{children:[(0,h.jsx)(u.A,{as:"h1",className:_.title,children:t.title}),t.description&&(0,h.jsx)("p",{children:t.description})]}),(0,h.jsx)("article",{className:"margin-top--lg",children:(0,h.jsx)(j,{items:n.items,className:_.list})}),(0,h.jsx)("footer",{className:"margin-top--lg",children:(0,h.jsx)(A.A,{previous:t.navigation.previous,next:t.navigation.next})})]})}function y(e){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(k,{...e}),(0,h.jsx)(w,{...e})]})}},7719:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var s=n(1312),r=n(9022),i=n(4848);function a(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(r.A,{...t,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(r.A,{...n,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var s=n(8215),r=n(1312),i=n(7559),a=n(2252),l=n(4848);function o(e){let{className:t}=e;const n=(0,a.r)();return n.badge?(0,l.jsx)("span",{className:(0,s.A)(t,i.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(r.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},1878:(e,t,n)=>{n.d(t,{A:()=>p});n(6540);var s=n(8215),r=n(4586),i=n(8774),a=n(1312),l=n(4070),o=n(7559),c=n(5597),d=n(2252),u=n(4848);const m={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const t=m[e.versionMetadata.banner];return(0,u.jsx)(t,{...e})}function b(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(i.A,{to:n,onClick:s,children:(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function x(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:i}}=(0,r.A)(),{pluginId:a}=(0,l.vT)({failfast:!0}),{savePreferredVersionName:d}=(0,c.g1)(a),{latestDocSuggestion:m,latestVersionSuggestion:x}=(0,l.HW)(a),p=m??(g=x).docs.find((e=>e.id===g.mainDocId));var g;return(0,u.jsxs)("div",{className:(0,s.A)(t,o.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:i,versionMetadata:n})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(b,{versionLabel:x.label,to:p.path,onClick:()=>d(x.name)})})]})}function p(e){let{className:t}=e;const n=(0,d.r)();return n.banner?(0,u.jsx)(x,{className:t,versionMetadata:n}):null}},9022:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var s=n(8215),r=n(8774),i=n(4848);function a(e){const{permalink:t,title:n,subLabel:a,isNext:l}=e;return(0,i.jsxs)(r.A,{className:(0,s.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[a&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:a}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}},5846:(e,t,n)=>{n.d(t,{W:()=>c});var s=n(6540),r=n(4586);const i=["zero","one","two","few","many","other"];function a(e){return i.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(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`),l}}),[e])}function c(){const e=o();return{selectMessage:(t,n)=>function(e,t,n){const s=e.split("|");if(1===s.length)return s[0];s.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 ${s.length}: ${e}`);const r=n.select(t),i=n.pluralForms.indexOf(r);return s[Math.min(i,s.length-1)]}(n,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.b5cbeff1.js b/assets/js/14eb3368.b5cbeff1.js deleted file mode 100644 index 59ed0cdd..00000000 --- a/assets/js/14eb3368.b5cbeff1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9817],{4067:function(e,t,n){n.d(t,{Z:function(){return v}});var a=n(7294),r=n(5450),i="breadcrumbsContainer_Xlws",l="breadcrumbsItemLink_e5ie",s=n(6010),c=n(9960),o=n(4996);function m(e){var t=e.children,n=e.href,r=(0,s.Z)("breadcrumbs__link",l);return n?a.createElement(c.Z,{className:r,href:n},t):a.createElement("span",{className:r},t)}function u(e){var t=e.children,n=e.active;return a.createElement("li",{className:(0,s.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})},t)}function d(){var e=(0,o.Z)("/");return a.createElement(u,null,a.createElement(m,{href:e},"\ud83c\udfe0"))}function v(){var e=(0,r.s1)(),t=(0,r.Ns)();return e?a.createElement("nav",{className:(0,s.Z)(r.kM.docs.docBreadcrumbs,i),"aria-label":"breadcrumbs"},a.createElement("ul",{className:"breadcrumbs"},t&&a.createElement(d,null),e.map((function(t,n){return a.createElement(u,{key:n,active:n===e.length-1},a.createElement(m,{href:t.href},t.label))})))):null}},8507:function(e,t,n){n.r(t),n.d(t,{default:function(){return x}});var a=n(7294),r=n(5450),i=n(9960),l=n(6010),s="cardContainer_woeA",c="cardContainerLink_iOSj",o="cardTitle_pNjP",m="cardDescription_qC_k",u=n(3919),d=n(5999);function v(e){var t=e.href,n=e.children,r=(0,l.Z)("card margin-bottom--lg padding--lg",s,t&&c);return t?a.createElement(i.Z,{href:t,className:r},n):a.createElement("div",{className:r},n)}function h(e){var t=e.href,n=e.icon,r=e.title,i=e.description;return a.createElement(v,{href:t},a.createElement("h2",{className:(0,l.Z)("text--truncate",o),title:r},n," ",r),a.createElement("div",{className:(0,l.Z)("text--truncate",m),title:i},i))}function b(e){var t=e.item,n=(0,r.Wl)(t);return a.createElement(h,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,d.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})})}function f(e){var t,n=e.item,i=(0,u.Z)(n.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=n.docId)?t:void 0);return a.createElement(h,{href:n.href,icon:i,title:n.label,description:null==l?void 0:l.description})}function E(e){var t=e.item;switch(t.type){case"link":return a.createElement(f,{item:t});case"category":return a.createElement(b,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.items;return a.createElement("div",{className:"row"},t.map((function(e,t){return a.createElement("article",{key:t,className:"col col--6"},a.createElement(E,{item:e}))})))}var p=n(1101),Z=n(1217),N=n(4474),k=n(7597),_=n(4067),L=n(9649),T=n(4996),w="generatedIndexPage_vzzw",y="title_qBh7";function x(e){var t=e.categoryGeneratedIndex,n=(0,r.jA)();return a.createElement(a.Fragment,null,a.createElement(Z.Z,{title:t.title,description:t.description,keywords:t.keywords,image:(0,T.Z)(t.image)}),a.createElement("div",{className:w},a.createElement(N.Z,null),a.createElement(_.Z,null),a.createElement(k.Z,null),a.createElement("header",null,a.createElement(L.Z,{as:"h1",className:y},t.title),t.description&&a.createElement("p",null,t.description)),a.createElement("main",{className:"margin-top--lg"},a.createElement(g,{items:n.items})),a.createElement("footer",{className:"margin-top--lg"},a.createElement(p.Z,{previous:t.navigation.previous,next:t.navigation.next}))))}},1101:function(e,t,n){n.d(t,{Z:function(){return s}});var a=n(7462),r=n(7294),i=n(5999),l=n(1750);function s(e){var t=e.previous,n=e.next;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},r.createElement("div",{className:"pagination-nav__item"},t&&r.createElement(l.Z,(0,a.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")}))),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},n&&r.createElement(l.Z,(0,a.Z)({},n,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")}))))}},7597:function(e,t,n){n.d(t,{Z:function(){return s}});var a=n(7294),r=n(5999),i=n(5450),l=n(6010);function s(e){var t=e.className,n=(0,i.E6)();return n.badge?a.createElement("span",{className:(0,l.Z)(t,i.kM.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},4474:function(e,t,n){n.d(t,{Z:function(){return h}});var a=n(7294),r=n(2263),i=n(9960),l=n(5999),s=n(5551),c=n(5450),o=n(6010);var m={unreleased:function(e){var t=e.siteTitle,n=e.versionMetadata;return a.createElement(l.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){var t=e.siteTitle,n=e.versionMetadata;return a.createElement(l.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function u(e){var t=m[e.versionMetadata.banner];return a.createElement(t,e)}function d(e){var t=e.versionLabel,n=e.to,r=e.onClick;return a.createElement(l.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(i.Z,{to:n,onClick:r},a.createElement(l.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){var t,n=e.className,i=e.versionMetadata,l=(0,r.Z)().siteConfig.title,m=(0,s.gA)({failfast:!0}).pluginId,v=(0,c.J)(m).savePreferredVersionName,h=(0,s.Jo)(m),b=h.latestDocSuggestion,f=h.latestVersionSuggestion,E=null!=b?b:(t=f).docs.find((function(e){return e.id===t.mainDocId}));return a.createElement("div",{className:(0,o.Z)(n,c.kM.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(u,{siteTitle:l,versionMetadata:i})),a.createElement("div",{className:"margin-top--md"},a.createElement(d,{versionLabel:f.label,to:E.path,onClick:function(){return v(f.name)}})))}function h(e){var t=e.className,n=(0,c.E6)();return n.banner?a.createElement(v,{className:t,versionMetadata:n}):null}},9649:function(e,t,n){n.d(t,{Z:function(){return h}});var a=n(7462),r=n(3366),i=n(7294),l=n(6010),s=n(5999),c=n(5450),o="anchorWithStickyNavbar_mojV",m="anchorWithHideOnScrollNavbar_R0VQ",u=["as","id"],d=["as"];function v(e){var t,n=e.as,d=e.id,v=(0,r.Z)(e,u),h=(0,c.LU)().navbar.hideOnScroll;return d?i.createElement(n,(0,a.Z)({},v,{className:(0,l.Z)("anchor",(t={},t[m]=h,t[o]=!h,t)),id:d}),v.children,i.createElement("a",{className:"hash-link",href:"#"+d,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):i.createElement(n,v)}function h(e){var t=e.as,n=(0,r.Z)(e,d);return"h1"===t?i.createElement("h1",(0,a.Z)({},n,{id:void 0}),n.children):i.createElement(v,(0,a.Z)({as:t},n))}},1750:function(e,t,n){n.d(t,{Z:function(){return i}});var a=n(7294),r=n(9960);function i(e){var t=e.permalink,n=e.title,i=e.subLabel;return a.createElement(r.Z,{className:"pagination-nav__link",to:t},i&&a.createElement("div",{className:"pagination-nav__sublabel"},i),a.createElement("div",{className:"pagination-nav__label"},n))}}}]); \ No newline at end of file diff --git a/assets/js/15315605.369a571d.js b/assets/js/15315605.369a571d.js deleted file mode 100644 index 78d2d4c9..00000000 --- a/assets/js/15315605.369a571d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8745],{3905:function(e,t,i){i.d(t,{Zo:function(){return u},kt:function(){return d}});var n=i(7294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},u=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(i),d=o,m=p["".concat(l,".").concat(d)]||p[d]||h[d]||a;return i?n.createElement(m,r(r({ref:t},u),{},{components:i})):n.createElement(m,r({ref:t},u))}));function d(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=i.length,r=new Array(a);r[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,r[1]=s;for(var c=2;c{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var n=i(4848),o=i(8453);const a={slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]},s="The Revival of a Bitcoin-Building Culture",r={permalink:"/blog/Bitlayer: Amplifying Bitcoin",source:"@site/blog/2024-03-01-first-blog-post.md",title:"Bitlayer: Amplifying Bitcoin",description:"Bitcoin is changing. Drastically.",date:"2024-03-01T00:00:00.000Z",tags:[{label:"Hello Bitlayer",permalink:"/blog/tags/hello-bitlayer"}],readingTime:9.435,hasTruncateMarker:!1,authors:[{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"}],frontMatter:{slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]},unlisted:!1},l={authorsImageUrls:[void 0]},c=[];function h(e){const t={p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Bitcoin is changing. Drastically."}),"\n",(0,n.jsx)(t.p,{children:"And the Bitcoin halving is less than 60 days away\u2026."}),"\n",(0,n.jsx)(t.p,{children:"A new \u201corder\u201d of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs \u2014 maybe a maxi\u2019s worst enemy \u2014 are coming to Bitcoin."}),"\n",(0,n.jsx)(t.p,{children:"But at this point, if you don\u2019t at least understand the trade-offs, then you\u2019re not listening."}),"\n",(0,n.jsx)(t.p,{children:"Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s\u2026these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology."}),"\n",(0,n.jsx)(t.p,{children:"Another signal, perhaps the biggest of them all, was the SEC\u2019s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024."}),"\n",(0,n.jsx)(t.p,{children:"It\u2019s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:"}),"\n",(0,n.jsx)(t.p,{children:"Increased security from innumerable new transaction fees (especially as mining rewards decrease)\nInflows of buyers and thriving new global market economies previously blocked by regulation\nCountless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting\u2026\nIntroduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming\n\u2026and all the upside we would otherwise leave on the table, all the innovations and applications we can\u2019t currently conceive\nDespite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they\u2019re storming their way in."}),"\n",(0,n.jsx)(t.p,{children:"Though, their path is not easy."}),"\n",(0,n.jsx)(t.p,{children:"For years, the unique technical characteristics of Bitcoin and the protocol\u2019s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum."}),"\n",(0,n.jsx)(t.p,{children:"The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions."}),"\n",(0,n.jsx)(t.p,{children:"The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key."}),"\n",(0,n.jsx)(t.p,{children:"A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form."}),"\n",(0,n.jsx)(t.p,{children:"In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network\u2019s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin\u2019s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer."}),"\n",(0,n.jsx)(t.p,{children:"\u201cAs long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,\u201d stated Bitlayer cofounder Charlie Hu."}),"\n",(0,n.jsx)(t.p,{children:"A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy."}),"\n",(0,n.jsx)(t.p,{children:"Welcome to Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s Mission\nBitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It\u2019s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin."}),"\n",(0,n.jsx)(t.p,{children:"\u201cBitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,\u201d said Kevin He, cofounder at Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group\u2019s web3 tech head."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network."}),"\n",(0,n.jsx)(t.p,{children:"The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision."}),"\n",(0,n.jsx)(t.p,{children:"Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN."}),"\n",(0,n.jsx)(t.p,{children:"Is Bitlayer the Next Big Thing for Bitcoin\uff1f\nBitVM\u2019s value is gaining increased recognition by developers as many teams continually work towards its implementation."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine)."}),"\n",(0,n.jsx)(t.p,{children:"The project\u2019s tech team has abstracted three key tasks from these inspirations:"}),"\n",(0,n.jsx)(t.p,{children:"Trustless entry and exit of Layer 1 assets\nState transitions using a Turing-complete Layer 2 virtual machine\nLayer 1 verification of the validity of Layer 2 state transitions\nThe security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets."}),"\n",(0,n.jsx)(t.p,{children:"This traditional approach results in users completely losing control of their assets, while the platform\u2019s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets."}),"\n",(0,n.jsx)(t.p,{children:"The verification of Layer 2 state transitions operates on a principle comparable to proving one\u2019s innocence\u2013 an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin\u2019s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin\u2019s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network."}),"\n",(0,n.jsx)(t.p,{children:"Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications)."}),"\n",(0,n.jsx)(t.p,{children:"Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users."}),"\n",(0,n.jsx)(t.p,{children:"Above is an outline of preliminary ideation for Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"Following the publication of the Bitlayer white paper, expect more insight into the project\u2019s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is Making History on Bitcoin\nBitcoin initially emerged and endured as an asset or \u201cstore of value\u201d. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards \u201cbuilding on Bitcoin\u201d, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum\u2019s."}),"\n",(0,n.jsx)(t.p,{children:"At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM\u2019s technology, and promoting the implementation of BitVM."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin\u2019s value, and harnessing its security, is the open future we all desire and deserve."}),"\n",(0,n.jsx)(t.p,{children:"A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin\u2019s scalability challenges remains a key endeavor for the team."}),"\n",(0,n.jsx)(t.p,{children:"Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step."}),"\n",(0,n.jsx)(t.p,{children:"With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don\u2019t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?"}),"\n",(0,n.jsx)(t.p,{children:"Shouldn\u2019t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?"}),"\n",(0,n.jsx)(t.p,{children:"Bitcoin has been left in the corner so far. But things might soon change."}),"\n",(0,n.jsx)(t.p,{children:"Satoshi Nakamoto once predicted: \u201cIn a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.\u201d"}),"\n",(0,n.jsx)(t.p,{children:"Now, at the historical juncture of Bitcoin\u2019s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy."})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>r});var n=i(6540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17794634.98e54728.js b/assets/js/17794634.98e54728.js deleted file mode 100644 index 11022d7f..00000000 --- a/assets/js/17794634.98e54728.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9641],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={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,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=l(n),f=i,m=h["".concat(s,".").concat(f)]||h[f]||p[f]||o;return n?r.createElement(m,a(a({ref:t},u),{},{components:n})):r.createElement(m,a({ref:t},u))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=h;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:i,a[1]=c;for(var l=2;l{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=i(4848),o=i(8453);const s={sidebar_position:4},r="Technical Architecture",a={id:"Introduction/TechnicalArchitecture",title:"Technical Architecture",description:"Technical Architecture",source:"@site/docs/Introduction/TechnicalArchitecture.md",sourceDirName:"Introduction",slug:"/Introduction/TechnicalArchitecture",permalink:"/docs/Introduction/TechnicalArchitecture",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docs",previous:{title:"Bitlayer vs. Ethereum",permalink:"/docs/Introduction/BitlayerVsEth"},next:{title:"Roadmap",permalink:"/docs/Introduction/Roadmap"}},c={},l=[];function h(e){const t={h1:"h1",img:"img",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"technical-architecture",children:"Technical Architecture"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Technical Architecture",src:i(9133).A+"",width:"966",height:"473"})}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer's solution synthesizes the technical characteristics of BitVM, DLC, and various XVMs (such as EVM, CairoVM, SolVM, MoveVM), addressing three major challenges: Layer 1 verification, asset bridging, and enriching state transition expressions."}),"\n",(0,n.jsx)(t.p,{children:"From an architectural standpoint, Bitlayer is a fairly typical example of a Rollup-equivalent model. To adapt to Bitcoin's unique programming model, BitVM has been introduced as a component for state challenges. Additionally, DLC|BitVM has been incorporated as a cross-chain component for messaging/assets, and the sequencer component's XVM, in theory, can support any Turing-complete programming language."}),"\n",(0,n.jsx)(t.p,{children:"The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation - Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets."}),"\n",(0,n.jsx)(t.p,{children:"This traditional approach results in users completely losing control of their assets, while the platform's multi-signature management capabilities can impact the security of those assets. In the wake of certain extreme cases, users have become dissatisfied with these types of multi-signature solutions. Models like DLC|BitVM that encompass two-party game scenarios may be a better direction. Leveraging DLC|BitVM technology, users could retain partial control over their assets and potentially achieve a secure escape with their assets."}),"\n",(0,n.jsx)(t.p,{children:"The verification of Layer 2 state transitions operates on a principle comparable to proving one's innocence\u2014an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin's base layer for verification enables Bitlayer to inherit Bitcoin's robust security measures, achieving an equivalent level of security to Bitcoin itself. The introduction of the BitVM paradigm challenges the conventional view that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network."}),"\n",(0,n.jsx)(t.p,{children:"In terms of Layer 1 verification, autonomous asset escape, secure asset bridging, and EVM compatibility, Bitlayer exhibits superior performance compared to existing Bitcoin Layer 2 solutions such as Lightning Network and Stacks."})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},9133:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/Architecture-61262ca41a0407e80de1ab306437c03e.png"},8453:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>a});var n=i(6540);const o={},s=n.createContext(o);function r(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.13696d18.js b/assets/js/17896441.13696d18.js new file mode 100644 index 00000000..befe0bcf --- /dev/null +++ b/assets/js/17896441.13696d18.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8401],{1243:(e,n,t)=>{t.d(n,{A:()=>g});t(6540);var s=t(8215),a=t(7559),i=t(4142),l=t(9169),o=t(8774),r=t(1312),c=t(6025),d=t(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function h(){const e=(0,c.A)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(o.A,{"aria-label":(0,r.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m.breadcrumbHomeIcon})})})}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function b(e){let{children:n,href:t,isLast:s}=e;const a="breadcrumbs__link";return s?(0,d.jsx)("span",{className:a,itemProp:"name",children:n}):t?(0,d.jsx)(o.A,{className:a,href:t,itemProp:"item",children:(0,d.jsx)("span",{itemProp:"name",children:n})}):(0,d.jsx)("span",{className:a,children:n})}function x(e){let{children:n,active:t,index:a,addMicrodata:i}=e;return(0,d.jsxs)("li",{...i&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:[n,(0,d.jsx)("meta",{itemProp:"position",content:String(a+1)})]})}function g(){const e=(0,i.OF)(),n=(0,l.Dt)();return e?(0,d.jsx)("nav",{className:(0,s.A)(a.G.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,r.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[n&&(0,d.jsx)(h,{}),e.map(((n,t)=>{const s=t===e.length-1,a="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,d.jsx)(x,{active:s,index:t,addMicrodata:!!a,children:(0,d.jsx)(b,{href:a,isLast:s,children:n.label})},t)}))]})}):null}},6011:(e,n,t)=>{t.r(n),t.d(n,{default:()=>S});var s=t(6540),a=t(1213),i=t(9532),l=t(4848);const o=s.createContext(null);function r(e){let{children:n,content:t}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(t);return(0,l.jsx)(o.Provider,{value:a,children:n})}function c(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:n,assets:t}=c();return(0,l.jsx)(a.be,{title:e.title,description:e.description,keywords:n.keywords,image:t.image??n.image})}var u=t(8215),m=t(4581),h=t(7719);function v(){const{metadata:e}=c();return(0,l.jsx)(h.A,{previous:e.previous,next:e.next})}var b=t(1878),x=t(4267),g=t(7559),p=t(2053),f=t(4336);function j(){const{metadata:e}=c(),{editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s,tags:a}=e,i=a.length>0,o=!!(n||t||s);return i||o?(0,l.jsxs)("footer",{className:(0,u.A)(g.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,l.jsx)("div",{className:(0,u.A)("row margin-top--sm",g.G.docs.docFooterTagsRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(p.A,{tags:a})})}),o&&(0,l.jsx)(f.A,{className:(0,u.A)("margin-top--sm",g.G.docs.docFooterEditMetaRow),editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s})]}):null}var A=t(1422),C=t(5195),L=t(1312);const N={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function _(e){let{collapsed:n,...t}=e;return(0,l.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",N.tocCollapsibleButton,!n&&N.tocCollapsibleButtonExpanded,t.className),children:(0,l.jsx)(L.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const k={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function T(e){let{toc:n,className:t,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:o}=(0,A.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.A)(k.tocCollapsible,!i&&k.tocCollapsibleExpanded,t),children:[(0,l.jsx)(_,{collapsed:i,onClick:o}),(0,l.jsx)(A.N,{lazy:!0,className:k.tocCollapsibleContent,collapsed:i,children:(0,l.jsx)(C.A,{toc:n,minHeadingLevel:s,maxHeadingLevel:a})})]})}const H={tocMobile:"tocMobile_ITEo"};function M(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(T,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.A)(g.G.docs.docTocMobile,H.tocMobile)})}var w=t(7763);function I(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(w.A,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:g.G.docs.docTocDesktop})}var y=t(1107),E=t(8509);function B(e){let{children:n}=e;const t=function(){const{metadata:e,frontMatter:n,contentTitle:t}=c();return n.hide_title||void 0!==t?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.A)(g.G.docs.docMarkdown,"markdown"),children:[t&&(0,l.jsx)("header",{children:(0,l.jsx)(y.A,{as:"h1",children:t})}),(0,l.jsx)(E.A,{children:n})]})}var O=t(1243),V=t(996);const G={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function R(e){let{children:n}=e;const t=function(){const{frontMatter:e,toc:n}=c(),t=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&n.length>0;return{hidden:s,mobile:a?(0,l.jsx)(M,{}):void 0,desktop:!a||"desktop"!==t&&"ssr"!==t?void 0:(0,l.jsx)(I,{})}}(),{metadata:{unlisted:s}}=c();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&G.docItemCol),children:[s&&(0,l.jsx)(V.A,{}),(0,l.jsx)(b.A,{}),(0,l.jsxs)("div",{className:G.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(O.A,{}),(0,l.jsx)(x.A,{}),t.mobile,(0,l.jsx)(B,{children:n}),(0,l.jsx)(j,{})]}),(0,l.jsx)(v,{})]})]}),t.desktop&&(0,l.jsx)("div",{className:"col col--3",children:t.desktop})]})}function S(e){const n=`docs-doc-id-${e.content.metadata.id}`,t=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(a.e3,{className:n,children:[(0,l.jsx)(d,{}),(0,l.jsx)(R,{children:(0,l.jsx)(t,{})})]})})}},7719:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var s=t(1312),a=t(9022),i=t(4848);function l(e){const{previous:n,next:t}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,i.jsx)(a.A,{...n,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),t&&(0,i.jsx)(a.A,{...t,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267:(e,n,t)=>{t.d(n,{A:()=>r});t(6540);var s=t(8215),a=t(1312),i=t(7559),l=t(2252),o=t(4848);function r(e){let{className:n}=e;const t=(0,l.r)();return t.badge?(0,o.jsx)("span",{className:(0,s.A)(n,i.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(a.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}},1878:(e,n,t)=>{t.d(n,{A:()=>x});t(6540);var s=t(8215),a=t(4586),i=t(8774),l=t(1312),o=t(4070),r=t(7559),c=t(5597),d=t(2252),u=t(4848);const m={unreleased:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:n,versionLabel:(0,u.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:n,versionLabel:(0,u.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const n=m[e.versionMetadata.banner];return(0,u.jsx)(n,{...e})}function v(e){let{versionLabel:n,to:t,onClick:s}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:n,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(i.A,{to:t,onClick:s,children:(0,u.jsx)(l.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function b(e){let{className:n,versionMetadata:t}=e;const{siteConfig:{title:i}}=(0,a.A)(),{pluginId:l}=(0,o.vT)({failfast:!0}),{savePreferredVersionName:d}=(0,c.g1)(l),{latestDocSuggestion:m,latestVersionSuggestion:b}=(0,o.HW)(l),x=m??(g=b).docs.find((e=>e.id===g.mainDocId));var g;return(0,u.jsxs)("div",{className:(0,s.A)(n,r.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:i,versionMetadata:t})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(v,{versionLabel:b.label,to:x.path,onClick:()=>d(b.name)})})]})}function x(e){let{className:n}=e;const t=(0,d.r)();return t.banner?(0,u.jsx)(b,{className:n,versionMetadata:t}):null}},9022:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var s=t(8215),a=t(8774),i=t(4848);function l(e){const{permalink:n,title:t,subLabel:l,isNext:o}=e;return(0,i.jsxs)(a.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n,children:[l&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,i.jsx)("div",{className:"pagination-nav__label",children:t})]})}},7763:(e,n,t)=>{t.d(n,{A:()=>c});t(6540);var s=t(8215),a=t(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const o="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,s.A)(i.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(a.A,{...t,linkClassName:o,linkActiveClassName:r})})}},5195:(e,n,t)=>{t.d(n,{A:()=>b});var s=t(6540),a=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)})),s}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:s});return function(e){return e.level>=t&&e.level<=s}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const s=e.find((e=>o(e).top>=t));if(s){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const s=[];for(let a=n;a<=t;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),c=r(o,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,t])}var u=t(8774),m=t(4848);function h(e){let{toc:n,className:t,linkClassName:s,isChild:a}=e;return n.length?(0,m.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:t,linkClassName:s})]},e.id)))}):null}const v=s.memo(h);function b(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...h}=e;const b=(0,a.p)(),x=c??b.tableOfContents.minHeadingLevel,g=u??b.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>l({toc:i(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:x,maxHeadingLevel:g});return d((0,s.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:g}}),[o,r,x,g])),(0,m.jsx)(v,{toc:p,className:t,linkClassName:o,...h})}},6133:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var s=t(8215),a=t(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function o(e){let{permalink:n,label:t,count:o}=e;return(0,l.jsxs)(a.A,{href:n,className:(0,s.A)(i.tag,o?i.tagWithCount:i.tagRegular),children:[t,o&&(0,l.jsx)("span",{children:o})]})}},2053:(e,n,t)=>{t.d(n,{A:()=>r});t(6540);var s=t(8215),a=t(1312),i=t(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var o=t(4848);function r(e){let{tags:n}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:n.map((e=>{let{label:n,permalink:t}=e;return(0,o.jsx)("li",{className:l.tag,children:(0,o.jsx)(i.A,{label:n,permalink:t})},t)}))})]})}},996:(e,n,t)=>{t.d(n,{A:()=>h});t(6540);var s=t(8215),a=t(1312),i=t(5260),l=t(4848);function o(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),u=t(7293);function m(e){let{className:n}=e;return(0,l.jsx)(u.A,{type:"caution",title:(0,l.jsx)(o,{}),className:(0,s.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(r,{})})}function h(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c,{}),(0,l.jsx)(m,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/17896441.3f80dc10.js b/assets/js/17896441.3f80dc10.js deleted file mode 100644 index 2a95b2ae..00000000 --- a/assets/js/17896441.3f80dc10.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7918],{4067:function(e,t,a){a.d(t,{Z:function(){return v}});var n=a(7294),l=a(5450),r="breadcrumbsContainer_Xlws",i="breadcrumbsItemLink_e5ie",s=a(6010),c=a(9960),o=a(4996);function d(e){var t=e.children,a=e.href,l=(0,s.Z)("breadcrumbs__link",i);return a?n.createElement(c.Z,{className:l,href:a},t):n.createElement("span",{className:l},t)}function m(e){var t=e.children,a=e.active;return n.createElement("li",{className:(0,s.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})},t)}function u(){var e=(0,o.Z)("/");return n.createElement(m,null,n.createElement(d,{href:e},"\ud83c\udfe0"))}function v(){var e=(0,l.s1)(),t=(0,l.Ns)();return e?n.createElement("nav",{className:(0,s.Z)(l.kM.docs.docBreadcrumbs,r),"aria-label":"breadcrumbs"},n.createElement("ul",{className:"breadcrumbs"},t&&n.createElement(u,null),e.map((function(t,a){return n.createElement(m,{key:a,active:a===e.length-1},n.createElement(d,{href:t.href},t.label))})))):null}},9153:function(e,t,a){a.r(t),a.d(t,{default:function(){return x}});var n=a(7294),l=a(6010),r=a(1101),i=a(4474),s=a(7597),c=a(1217),o=a(5999),d=a(5450);function m(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt;return n.createElement(o.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function u(e){var t=e.lastUpdatedBy;return n.createElement(o.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function v(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt,l=e.lastUpdatedBy;return n.createElement("span",{className:d.kM.common.lastUpdated},n.createElement(o.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(m,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:l?n.createElement(u,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var b=a(6753),h=a(62),E="lastUpdated_foO9";function g(e){return n.createElement("div",{className:(0,l.Z)(d.kM.docs.docFooterTagsRow,"row margin-bottom--sm")},n.createElement("div",{className:"col"},n.createElement(h.Z,e)))}function f(e){var t=e.editUrl,a=e.lastUpdatedAt,r=e.lastUpdatedBy,i=e.formattedLastUpdatedAt;return n.createElement("div",{className:(0,l.Z)(d.kM.docs.docFooterEditMetaRow,"row")},n.createElement("div",{className:"col"},t&&n.createElement(b.Z,{editUrl:t})),n.createElement("div",{className:(0,l.Z)("col",E)},(a||r)&&n.createElement(v,{lastUpdatedAt:a,formattedLastUpdatedAt:i,lastUpdatedBy:r})))}function p(e){var t=e.content.metadata,a=t.editUrl,r=t.lastUpdatedAt,i=t.formattedLastUpdatedAt,s=t.lastUpdatedBy,c=t.tags,o=c.length>0,m=!!(a||r||s);return o||m?n.createElement("footer",{className:(0,l.Z)(d.kM.docs.docFooter,"docusaurus-mt-lg")},o&&n.createElement(g,{tags:c}),m&&n.createElement(f,{editUrl:a,lastUpdatedAt:r,lastUpdatedBy:s,formattedLastUpdatedAt:i})):null}var Z=a(1575),N="tocCollapsible_jdIR",k="tocCollapsibleButton_Fzxq",_="tocCollapsibleContent_MpvI",L="tocCollapsibleExpanded_laf4",U=a(5002);function C(e){var t,a=e.toc,r=e.className,i=e.minHeadingLevel,s=e.maxHeadingLevel,c=(0,d.uR)({initialState:!0}),m=c.collapsed,u=c.toggleCollapsed;return n.createElement("div",{className:(0,l.Z)(N,(t={},t[L]=!m,t),r)},n.createElement("button",{type:"button",className:(0,l.Z)("clean-btn",k),onClick:u},n.createElement(o.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page")),n.createElement(d.zF,{lazy:!0,className:_,collapsed:m},n.createElement(U.Z,{toc:a,minHeadingLevel:i,maxHeadingLevel:s})))}var T=a(9649),w="docItemContainer_vinB",y="docItemCol_DM6M",M="tocMobile_TmEX",A=a(4067);function x(e){var t,a,o=e.content,m=o.metadata,u=o.frontMatter,v=o.assets,b=u.keywords,h=u.hide_title,E=u.hide_table_of_contents,g=u.toc_min_heading_level,f=u.toc_max_heading_level,N=m.description,k=m.title,_=null!=(t=v.image)?t:u.image,L=!h&&void 0===o.contentTitle,U=(0,d.iP)(),x=!E&&o.toc&&o.toc.length>0,H=x&&("desktop"===U||"ssr"===U);return n.createElement(n.Fragment,null,n.createElement(c.Z,{title:k,description:N,keywords:b,image:_}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,l.Z)("col",(a={},a[y]=!E,a))},n.createElement(i.Z,null),n.createElement("div",{className:w},n.createElement("article",null,n.createElement(A.Z,null),n.createElement(s.Z,null),x&&n.createElement(C,{toc:o.toc,minHeadingLevel:g,maxHeadingLevel:f,className:(0,l.Z)(d.kM.docs.docTocMobile,M)}),n.createElement("div",{className:(0,l.Z)(d.kM.docs.docMarkdown,"markdown")},L&&n.createElement("header",null,n.createElement(T.Z,{as:"h1"},k)),n.createElement(o,null)),n.createElement(p,e)),n.createElement(r.Z,{previous:m.previous,next:m.next}))),H&&n.createElement("div",{className:"col col--3"},n.createElement(Z.Z,{toc:o.toc,minHeadingLevel:g,maxHeadingLevel:f,className:d.kM.docs.docTocDesktop}))))}},1101:function(e,t,a){a.d(t,{Z:function(){return s}});var n=a(7462),l=a(7294),r=a(5999),i=a(1750);function s(e){var t=e.previous,a=e.next;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},l.createElement("div",{className:"pagination-nav__item"},t&&l.createElement(i.Z,(0,n.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")}))),l.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},a&&l.createElement(i.Z,(0,n.Z)({},a,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")}))))}},7597:function(e,t,a){a.d(t,{Z:function(){return s}});var n=a(7294),l=a(5999),r=a(5450),i=a(6010);function s(e){var t=e.className,a=(0,r.E6)();return a.badge?n.createElement("span",{className:(0,i.Z)(t,r.kM.docs.docVersionBadge,"badge badge--secondary")},n.createElement(l.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},4474:function(e,t,a){a.d(t,{Z:function(){return b}});var n=a(7294),l=a(2263),r=a(9960),i=a(5999),s=a(5551),c=a(5450),o=a(6010);var d={unreleased:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(i.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(i.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function m(e){var t=d[e.versionMetadata.banner];return n.createElement(t,e)}function u(e){var t=e.versionLabel,a=e.to,l=e.onClick;return n.createElement(i.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(r.Z,{to:a,onClick:l},n.createElement(i.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){var t,a=e.className,r=e.versionMetadata,i=(0,l.Z)().siteConfig.title,d=(0,s.gA)({failfast:!0}).pluginId,v=(0,c.J)(d).savePreferredVersionName,b=(0,s.Jo)(d),h=b.latestDocSuggestion,E=b.latestVersionSuggestion,g=null!=h?h:(t=E).docs.find((function(e){return e.id===t.mainDocId}));return n.createElement("div",{className:(0,o.Z)(a,c.kM.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(m,{siteTitle:i,versionMetadata:r})),n.createElement("div",{className:"margin-top--md"},n.createElement(u,{versionLabel:E.label,to:g.path,onClick:function(){return v(E.name)}})))}function b(e){var t=e.className,a=(0,c.E6)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},6753:function(e,t,a){a.d(t,{Z:function(){return u}});var n=a(7294),l=a(5999),r=a(7462),i=a(3366),s=a(6010),c="iconEdit_dcUD",o=["className"];function d(e){var t=e.className,a=(0,i.Z)(e,o);return n.createElement("svg",(0,r.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(c,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}var m=a(5450);function u(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:m.kM.common.editThisPage},n.createElement(d,null),n.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},9649:function(e,t,a){a.d(t,{Z:function(){return b}});var n=a(7462),l=a(3366),r=a(7294),i=a(6010),s=a(5999),c=a(5450),o="anchorWithStickyNavbar_mojV",d="anchorWithHideOnScrollNavbar_R0VQ",m=["as","id"],u=["as"];function v(e){var t,a=e.as,u=e.id,v=(0,l.Z)(e,m),b=(0,c.LU)().navbar.hideOnScroll;return u?r.createElement(a,(0,n.Z)({},v,{className:(0,i.Z)("anchor",(t={},t[d]=b,t[o]=!b,t)),id:u}),v.children,r.createElement("a",{className:"hash-link",href:"#"+u,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):r.createElement(a,v)}function b(e){var t=e.as,a=(0,l.Z)(e,u);return"h1"===t?r.createElement("h1",(0,n.Z)({},a,{id:void 0}),a.children):r.createElement(v,(0,n.Z)({as:t},a))}},1750:function(e,t,a){a.d(t,{Z:function(){return r}});var n=a(7294),l=a(9960);function r(e){var t=e.permalink,a=e.title,r=e.subLabel;return n.createElement(l.Z,{className:"pagination-nav__link",to:t},r&&n.createElement("div",{className:"pagination-nav__sublabel"},r),n.createElement("div",{className:"pagination-nav__label"},a))}},1575:function(e,t,a){a.d(t,{Z:function(){return d}});var n=a(7462),l=a(3366),r=a(7294),i=a(6010),s=a(5002),c="tableOfContents_cNA8",o=["className"];function d(e){var t=e.className,a=(0,l.Z)(e,o);return r.createElement("div",{className:(0,i.Z)(c,"thin-scrollbar",t)},r.createElement(s.Z,(0,n.Z)({},a,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},5002:function(e,t,a){a.d(t,{Z:function(){return o}});var n=a(7462),l=a(3366),r=a(7294),i=a(5450),s=["toc","className","linkClassName","linkActiveClassName","minHeadingLevel","maxHeadingLevel"];function c(e){var t=e.toc,a=e.className,n=e.linkClassName,l=e.isChild;return t.length?r.createElement("ul",{className:l?void 0:a},t.map((function(e){return r.createElement("li",{key:e.id},r.createElement("a",{href:"#"+e.id,className:null!=n?n:void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(c,{isChild:!0,toc:e.children,className:a,linkClassName:n}))}))):null}function o(e){var t=e.toc,a=e.className,o=void 0===a?"table-of-contents table-of-contents__left-border":a,d=e.linkClassName,m=void 0===d?"table-of-contents__link":d,u=e.linkActiveClassName,v=void 0===u?void 0:u,b=e.minHeadingLevel,h=e.maxHeadingLevel,E=(0,l.Z)(e,s),g=(0,i.LU)(),f=null!=b?b:g.tableOfContents.minHeadingLevel,p=null!=h?h:g.tableOfContents.maxHeadingLevel,Z=(0,i.b9)({toc:t,minHeadingLevel:f,maxHeadingLevel:p}),N=(0,r.useMemo)((function(){if(m&&v)return{linkClassName:m,linkActiveClassName:v,minHeadingLevel:f,maxHeadingLevel:p}}),[m,v,f,p]);return(0,i.Si)(N),r.createElement(c,(0,n.Z)({toc:Z,className:o,linkClassName:m},E))}},7774:function(e,t,a){a.d(t,{Z:function(){return o}});var n=a(7294),l=a(6010),r=a(9960),i="tag_hD8n",s="tagRegular_D6E_",c="tagWithCount_i0QQ";function o(e){var t,a=e.permalink,o=e.name,d=e.count;return n.createElement(r.Z,{href:a,className:(0,l.Z)(i,(t={},t[s]=!d,t[c]=d,t))},o,d&&n.createElement("span",null,d))}},62:function(e,t,a){a.d(t,{Z:function(){return o}});var n=a(7294),l=a(6010),r=a(5999),i=a(7774),s="tags_XVD_",c="tag_JSN8";function o(e){var t=e.tags;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,l.Z)(s,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return n.createElement("li",{key:a,className:c},n.createElement(i.Z,{name:t,permalink:a}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/182ba0de.80e495a7.js b/assets/js/182ba0de.80e495a7.js deleted file mode 100644 index b44bd11e..00000000 --- a/assets/js/182ba0de.80e495a7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7401],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var r=t(7294);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 l(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 o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var u=r.createContext({}),c=function(e){var n=r.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=c(e.components);return r.createElement(u.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},s=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=c(t),m=a,h=s["".concat(u,".").concat(m)]||s[m]||d[m]||l;return t?r.createElement(h,o(o({ref:n},p),{},{components:t})):r.createElement(h,o({ref:n},p))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,o=new Array(l);o[0]=s;var i={};for(var u in n)hasOwnProperty.call(n,u)&&(i[u]=n[u]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var c=2;c 0, 2=trace all\n")),(0,l.kt)("p",null,"This option allows you to enable or disable custom JSON-RPC methods for tracing internal transactions."),(0,l.kt)("h2",{id:"deployment"},"Deployment"),(0,l.kt)("p",null,"Introduce systemd management configs."),(0,l.kt)("h3",{id:"hardware"},"Hardware"),(0,l.kt)("h4",{id:"minimum"},"Minimum"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"8core\n16g\nssd iops>5k\n")),(0,l.kt)("h4",{id:"recommended"},"Recommended"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"16core\n32g\nssd iops>5k\n")),(0,l.kt)("h4",{id:"network--port"},"Network & Port"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"External IP Address\nPort TCP/UDP 31031\n")),(0,l.kt)("h3",{id:"chain-node"},"Chain Node"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"config.toml")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},'[Eth]\nSyncMode = "snap"\nTrieCleanCacheRejournal= 300000000000\nTrieTimeout = 20000000000\n\n\n[Eth.Miner]\nGasFloor = 40000000\nGasCeil = 40000000\nGasPrice = 100000000\nRecommit = 3000000000\n\n\n[Eth.TxPool]\nNoLocals = true\nJournal = "transactions.rlp"\nRejournal = 600000000000\nPriceLimit = 100000000\nPriceBump = 10\nAccountSlots = 64\nGlobalSlots = 10240\nAccountQueue = 32\nGlobalQueue = 1024\nLifetime = 1800000000000\n\n[Node]\nDataDir = "/data/bitlayer-l2/chain/data"\nInsecureUnlockAllowed = true\nNoUSB = true\nIPCPath = "geth.ipc"\nHTTPHost = "0.0.0.0"\nHTTPPort = 8545\nHTTPCors = ["*"]\nHTTPVirtualHosts = ["*"]\nHTTPModules = [\'eth\', \'net\', \'web3\']\n\nWSHost = "0.0.0.0"\nWSPort = 8546\nWSModules = [\'eth\', \'net\', \'web3\']\n\nGraphQLVirtualHosts = ["localhost"]\n\n\n[Node.P2P]\nMaxPeers = 50\nNoDiscovery = false\nListenAddr = ":31031"\nEnableMsgEvents = false\n\n[Node.HTTPTimeouts]\nReadTimeout = 30000000000\nWriteTimeout = 30000000000\nIdleTimeout = 120000000000\n')),(0,l.kt)("p",null,"use snap sync in the config, if full needed - change this line"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},'SyncMode = "snap"\n')),(0,l.kt)("p",null,"to"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},'SyncMode = "full"\n')),(0,l.kt)("h3",{id:"start-bash"},"Start Bash"),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"To show full detail help info of all flags, type ",(0,l.kt)("inlineCode",{parentName:"p"},"geth help")," or ",(0,l.kt)("inlineCode",{parentName:"p"},"geth -h"))),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"run.sh")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"#!/usr/bin/env bash\n/data/bitlayer-l2/chain/geth-linux-amd64 \\\n--config /data/bitlayer-l2/chain/config.toml \\\n--log.file /data/bitlayer-l2/chain/logs/chain.log \\\n--log.rotate=true \\\n--authrpc.port 8445 \\\n--traceaction 2 \\\n--verbosity 3 \n")),(0,l.kt)("p",null,"if you need to use it as archive node, add: "),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"--syncmode full \\\n--gcmode archive \\\n")),(0,l.kt)("p",null,"so: "),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"#!/usr/bin/env bash\n/data/bitlayer-l2/chain/geth-linux-amd64 \\\n--config /data/bitlayer-l2/chain/config.toml \\\n--log.file /data/bitlayer-l2/chain/logs/chain.log \\\n--log.rotate=true \\\n--authrpc.port 8445 \\\n--traceaction 2 \\\n--syncmode full \\\n--gcmode archive \\\n--verbosity 3 \n")),(0,l.kt)("p",null,"If no network flags were provided, the node will connect the bitlayer mainnet by default. If you want to connect to bitlayer testnet, add:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"--testnet\n")),(0,l.kt)("h3",{id:"systemd-config"},"systemd config"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"[Unit]\nDescription=bitlayer-l2 chain service\n\n[Service]\nType=simple\nExecStart=/bin/sh /data/bitlayer-l2/chain/run.sh\nWorkingDirectory=/data/bitlayer-l2/chain\nTimeoutSec=600\nRestart=on-failure\nRestartSec=5s\n\nLimitNOFILE=65536\n\n[Install]\nWantedBy=multi-user.target\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/182ba0de.96275d43.js b/assets/js/182ba0de.96275d43.js new file mode 100644 index 00000000..1d454789 --- /dev/null +++ b/assets/js/182ba0de.96275d43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4842],{4840:(n,e,r)=>{r.r(e),r.d(e,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>a});var i=r(4848),l=r(8453);const t={sidebar_position:3},o="Compile, Run and Deploy",d={id:"Build/Compile and Run",title:"Compile, Run and Deploy",description:"This guide walks you through compiling and running Bitlayer.",source:"@site/docs/Build/Compile and Run.md",sourceDirName:"Build",slug:"/Build/Compile and Run",permalink:"/docs/Build/Compile and Run",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Quick Start Guide",permalink:"/docs/Build/QuickStart"},next:{title:"Bitlayer Network",permalink:"/docs/category/bitlayer-network"}},s={},a=[{value:"Download",id:"download",level:2},{value:"Install Golang",id:"install-golang",level:2},{value:"Compile",id:"compile",level:2},{value:"Run",id:"run",level:2},{value:"Deployment",id:"deployment",level:2},{value:"Hardware",id:"hardware",level:3},{value:"Minimum",id:"minimum",level:4},{value:"Recommended",id:"recommended",level:4},{value:"Network & Port",id:"network--port",level:4},{value:"Chain Node",id:"chain-node",level:3},{value:"Start Bash",id:"start-bash",level:3},{value:"systemd config",id:"systemd-config",level:3}];function c(n){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...n.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"compile-run-and-deploy",children:"Compile, Run and Deploy"}),"\n",(0,i.jsx)(e.p,{children:"This guide walks you through compiling and running Bitlayer."}),"\n",(0,i.jsx)(e.h2,{id:"download",children:"Download"}),"\n",(0,i.jsx)(e.p,{children:"Download the Bitlayer source code using the following git command:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"git clone https://github.com/bitlayer-org/bitlayer-l2.git\n"})}),"\n",(0,i.jsx)(e.h2,{id:"install-golang",children:"Install Golang"}),"\n",(0,i.jsxs)(e.p,{children:["Before compiling Bitlayer, make sure you have Golang installed on your system. Refer to the official Golang website (",(0,i.jsx)(e.a,{href:"https://go.dev/dl/",children:"https://go.dev/dl/"}),") for download and installation instructions."]}),"\n",(0,i.jsx)(e.h2,{id:"compile",children:"Compile"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsx)(e.p,{children:"Navigate to the directory where you cloned the Bitlayer source code using:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"cd /path/to/bitlayer-l2\n"})}),"\n"]}),"\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsx)(e.p,{children:"Compile Bitlayer by running the following command:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"make geth\n"})}),"\n",(0,i.jsxs)(e.p,{children:["This will create a compiled binary in the ",(0,i.jsx)(e.code,{children:"build/bin"})," folder."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(e.h2,{id:"run",children:"Run"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsx)(e.p,{children:"Get a list of available options and their descriptions by running:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"./build/bin/geth --help\n"})}),"\n"]}),"\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsxs)(e.p,{children:["Refer to the ",(0,i.jsx)(e.a,{href:"https://geth.ethereum.org/docs/fundamentals/command-line-options",children:"Command-line Options documentation"})," for specific usage details."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:"Custom Option:"})}),"\n",(0,i.jsxs)(e.p,{children:["Bitlayer offers a custom option named ",(0,i.jsx)(e.code,{children:"--traceaction"}),":"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"--traceaction value (default: 0)\r\n Trace internal tx call/create/suicide action, 0=no trace, 1=trace only native token > 0, 2=trace all\n"})}),"\n",(0,i.jsx)(e.p,{children:"This option allows you to enable or disable custom JSON-RPC methods for tracing internal transactions."}),"\n",(0,i.jsx)(e.h2,{id:"deployment",children:"Deployment"}),"\n",(0,i.jsx)(e.p,{children:"Introduce systemd management configs."}),"\n",(0,i.jsx)(e.h3,{id:"hardware",children:"Hardware"}),"\n",(0,i.jsx)(e.h4,{id:"minimum",children:"Minimum"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"8core\r\n16g\r\nssd iops>5k\n"})}),"\n",(0,i.jsx)(e.h4,{id:"recommended",children:"Recommended"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"16core\r\n32g\r\nssd iops>5k\n"})}),"\n",(0,i.jsx)(e.h4,{id:"network--port",children:"Network & Port"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"External IP Address\r\nPort TCP/UDP 31031\n"})}),"\n",(0,i.jsx)(e.h3,{id:"chain-node",children:"Chain Node"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"config.toml"}),"\n"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:'[Eth]\r\nSyncMode = "snap"\r\nTrieCleanCacheRejournal= 300000000000\r\nTrieTimeout = 20000000000\r\n\r\n\r\n[Eth.Miner]\r\nGasFloor = 40000000\r\nGasCeil = 40000000\r\nGasPrice = 100000000\r\nRecommit = 3000000000\r\n\r\n\r\n[Eth.TxPool]\r\nNoLocals = true\r\nJournal = "transactions.rlp"\r\nRejournal = 600000000000\r\nPriceLimit = 100000000\r\nPriceBump = 10\r\nAccountSlots = 64\r\nGlobalSlots = 10240\r\nAccountQueue = 32\r\nGlobalQueue = 1024\r\nLifetime = 1800000000000\r\n\r\n[Node]\r\nDataDir = "/data/bitlayer-l2/chain/data"\r\nInsecureUnlockAllowed = true\r\nNoUSB = true\r\nIPCPath = "geth.ipc"\r\nHTTPHost = "0.0.0.0"\r\nHTTPPort = 8545\r\nHTTPCors = ["*"]\r\nHTTPVirtualHosts = ["*"]\r\nHTTPModules = [\'eth\', \'net\', \'web3\']\r\n\r\nWSHost = "0.0.0.0"\r\nWSPort = 8546\r\nWSModules = [\'eth\', \'net\', \'web3\']\r\n\r\nGraphQLVirtualHosts = ["localhost"]\r\n\r\n\r\n[Node.P2P]\r\nMaxPeers = 50\r\nNoDiscovery = false\r\nListenAddr = ":31031"\r\nEnableMsgEvents = false\r\n\r\n[Node.HTTPTimeouts]\r\nReadTimeout = 30000000000\r\nWriteTimeout = 30000000000\r\nIdleTimeout = 120000000000\n'})}),"\n",(0,i.jsx)(e.p,{children:"use snap sync in the config, if full needed - change this line"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:'SyncMode = "snap"\n'})}),"\n",(0,i.jsx)(e.p,{children:"to"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:'SyncMode = "full"\n'})}),"\n",(0,i.jsx)(e.h3,{id:"start-bash",children:"Start Bash"}),"\n",(0,i.jsxs)(e.blockquote,{children:["\n",(0,i.jsxs)(e.p,{children:["To show full detail help info of all flags, type ",(0,i.jsx)(e.code,{children:"geth help"})," or ",(0,i.jsx)(e.code,{children:"geth -h"})]}),"\n"]}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"run.sh"}),"\n"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"#!/usr/bin/env bash\r\n/data/bitlayer-l2/chain/geth-linux-amd64 \\\r\n--config /data/bitlayer-l2/chain/config.toml \\\r\n--log.file /data/bitlayer-l2/chain/logs/chain.log \\\r\n--log.rotate=true \\\r\n--authrpc.port 8445 \\\r\n--traceaction 2 \\\r\n--verbosity 3 \n"})}),"\n",(0,i.jsx)(e.p,{children:"if you need to use it as archive node, add:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"--syncmode full \\\r\n--gcmode archive \\\n"})}),"\n",(0,i.jsx)(e.p,{children:"so:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"#!/usr/bin/env bash\r\n/data/bitlayer-l2/chain/geth-linux-amd64 \\\r\n--config /data/bitlayer-l2/chain/config.toml \\\r\n--log.file /data/bitlayer-l2/chain/logs/chain.log \\\r\n--log.rotate=true \\\r\n--authrpc.port 8445 \\\r\n--traceaction 2 \\\r\n--syncmode full \\\r\n--gcmode archive \\\r\n--verbosity 3 \n"})}),"\n",(0,i.jsx)(e.p,{children:"If no network flags were provided, the node will connect the bitlayer mainnet by default. If you want to connect to bitlayer testnet, add:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"--testnet\n"})}),"\n",(0,i.jsx)(e.h3,{id:"systemd-config",children:"systemd config"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{children:"[Unit]\r\nDescription=bitlayer-l2 chain service\r\n\r\n[Service]\r\nType=simple\r\nExecStart=/bin/sh /data/bitlayer-l2/chain/run.sh\r\nWorkingDirectory=/data/bitlayer-l2/chain\r\nTimeoutSec=600\r\nRestart=on-failure\r\nRestartSec=5s\r\n\r\nLimitNOFILE=65536\r\n\r\n[Install]\r\nWantedBy=multi-user.target\n"})})]})}function h(n={}){const{wrapper:e}={...(0,l.R)(),...n.components};return e?(0,i.jsx)(e,{...n,children:(0,i.jsx)(c,{...n})}):c(n)}},8453:(n,e,r)=>{r.d(e,{R:()=>o,x:()=>d});var i=r(6540);const l={},t=i.createContext(l);function o(n){const e=i.useContext(t);return i.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(l):n.components||l:o(n.components),i.createElement(t.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.6361429b.js b/assets/js/1a4e3797.6361429b.js new file mode 100644 index 00000000..3f744f6c --- /dev/null +++ b/assets/js/1a4e3797.6361429b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2138],{5846:(e,t,r)=>{r.d(t,{W:()=>u});var s=r(6540),a=r(4586);const n=["zero","one","two","few","many","other"];function c(e){return n.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,a.A)();return(0,s.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`),l}}),[e])}function u(){const e=o();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}},1283:(e,t,r)=>{r.r(t),r.d(t,{default:()=>b});var s=r(6540),a=r(4586),n=r(5476),c=r(5260),l=r(8774),o=r(1312),u=r(5846),h=r(53),i=r(6347),m=r(2303),d=r(1088);const p=function(){const e=(0,m.A)(),t=(0,i.W6)(),r=(0,i.zy)(),{siteConfig:{baseUrl:s}}=(0,a.A)(),n=e?new URLSearchParams(r.search):null,c=n?.get("q")||"",l=n?.get("ctx")||"",o=n?.get("version")||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:c,searchContext:l&&Array.isArray(d.Hg)&&d.Hg.some((e=>"string"==typeof e?e===l:e.path===l))?l:"",searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return`${s}search?${t.toString()}`}}};var g=r(5891),x=r(2384),f=r(9913),y=r(6841),C=r(3810),S=r(7674),j=r(2849),w=r(4471);const A={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};var I=r(3385),v=r(4848);function R(){const{siteConfig:{baseUrl:e},i18n:{currentLocale:t}}=(0,a.A)(),{selectMessage:r}=(0,u.W)(),{searchValue:n,searchContext:l,searchVersion:i,updateSearchPath:m,updateSearchContext:f}=p(),[y,C]=(0,s.useState)(n),[S,w]=(0,s.useState)(),[R,b]=(0,s.useState)(),F=`${e}${i}`,T=(0,s.useMemo)((()=>y?(0,o.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:y}):(0,o.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[y]);(0,s.useEffect)((()=>{m(y),S&&(y?S(y,(e=>{b(e)})):b(void 0))}),[y,S]);const _=(0,s.useCallback)((e=>{C(e.target.value)}),[]);return(0,s.useEffect)((()=>{n&&n!==y&&C(n)}),[n]),(0,s.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=!Array.isArray(d.Hg)||l||d.dz?await(0,g.Z)(F,l):{wrappedIndexes:[],zhDictionary:[]};w((()=>(0,x.m)(e,t,100)))}()}),[l,F]),(0,v.jsxs)(s.Fragment,{children:[(0,v.jsxs)(c.A,{children:[(0,v.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,v.jsx)("title",{children:T})]}),(0,v.jsxs)("div",{className:"container margin-vert--lg",children:[(0,v.jsx)("h1",{children:T}),(0,v.jsxs)("div",{className:"row",children:[(0,v.jsx)("div",{className:(0,h.A)("col",{[A.searchQueryColumn]:Array.isArray(d.Hg),"col--9":Array.isArray(d.Hg),"col--12":!Array.isArray(d.Hg)}),children:(0,v.jsx)("input",{type:"search",name:"q",className:A.searchQueryInput,"aria-label":"Search",onChange:_,value:y,autoComplete:"off",autoFocus:!0})}),Array.isArray(d.Hg)?(0,v.jsx)("div",{className:(0,h.A)("col","col--3","padding-left--none",A.searchContextColumn),children:(0,v.jsxs)("select",{name:"search-context",className:A.searchContextInput,id:"context-selector",value:l,onChange:e=>f(e.target.value),children:[d.dz&&(0,v.jsx)("option",{value:"",children:(0,o.T)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"})}),d.Hg.map((e=>{const{label:r,path:s}=(0,I.p)(e,t);return(0,v.jsx)("option",{value:s,children:r},s)}))]})}):null]}),!S&&y&&(0,v.jsx)("div",{children:(0,v.jsx)(j.A,{})}),R&&(R.length>0?(0,v.jsx)("p",{children:r(R.length,(0,o.T)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:R.length}))}):(0,v.jsx)("p",{children:(0,o.T)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,v.jsx)("section",{children:R&&R.map((e=>(0,v.jsx)(P,{searchResult:e},e.document.i)))})]})]})}function P(e){let{searchResult:{document:t,type:r,page:s,tokens:a,metadata:n}}=e;const c=r===f.i.Title,o=r===f.i.Keywords,u=r===f.i.Description,h=u||o,i=c||h,m=r===f.i.Content,p=(c?t.b:s.b).slice(),g=m||h?t.s:t.t;i||p.push(s.t);let x="";if(d.CU&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append("_highlight",t);x=`?${e.toString()}`}return(0,v.jsxs)("article",{className:A.searchResultItem,children:[(0,v.jsx)("h2",{children:(0,v.jsx)(l.A,{to:t.u+x+(t.h||""),dangerouslySetInnerHTML:{__html:m||h?(0,y.Z)(g,a):(0,C.C)(g,(0,S.g)(n,"t"),a,100)}})}),p.length>0&&(0,v.jsx)("p",{className:A.searchResultItemPath,children:(0,w.$)(p)}),(m||u)&&(0,v.jsx)("p",{className:A.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,C.C)(t.t,(0,S.g)(n,"t"),a,100)}})]})}const b=function(){return(0,v.jsx)(n.A,{children:(0,v.jsx)(R,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1b2e8bb4.9d81a37e.js b/assets/js/1b2e8bb4.9d81a37e.js deleted file mode 100644 index f6d31053..00000000 --- a/assets/js/1b2e8bb4.9d81a37e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9581],{2929:function(e){e.exports=JSON.parse('{"title":"Bitlayer Architecture","slug":"/category/bitlayer-architecture","permalink":"/docs/category/bitlayer-architecture","navigation":{"previous":{"title":"Peg Tokens","permalink":"/docs/BitlayerNetwork/PegTokens"},"next":{"title":"Overview of Bitlayer\'s Design","permalink":"/docs/BitlayerArchitecture/BitlayerDesign"}}}')}}]); \ No newline at end of file diff --git a/assets/js/1be78505.f8bc29db.js b/assets/js/1be78505.f8bc29db.js deleted file mode 100644 index 05fb93cc..00000000 --- a/assets/js/1be78505.f8bc29db.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9514,4608],{6756:function(e,t,a){a.r(t),a.d(t,{default:function(){return ee}});var n=a(7294),l=a(3905),r=a(8790),o=a(2434),i=a(6010),c=a(5450),s=a(5537),d=a(7462);function m(e){return n.createElement("svg",(0,d.Z)({width:"20",height:"20","aria-hidden":"true"},e),n.createElement("g",{fill:"#7a7a7a"},n.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),n.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}var u=a(5999),b=a(3366),p=a(9960),f=a(3919),h=a(541),v="menuHtmlItem_fVIQ",E=a(2389),g=["item"],k=["item","onItemClick","activePath","level","index"],_=["item","onItemClick","activePath","level","index"];function C(e){var t=e.item,a=(0,b.Z)(e,g);switch(t.type){case"category":return n.createElement(S,(0,d.Z)({item:t},a));case"html":return n.createElement(I,(0,d.Z)({item:t},a));default:return n.createElement(N,(0,d.Z)({item:t},a))}}function S(e){var t=e.item,a=e.onItemClick,l=e.activePath,r=e.level,o=e.index,s=(0,b.Z)(e,k),m=t.items,f=t.label,h=t.collapsible,v=t.className,g=t.href,_=function(e){var t=(0,E.Z)();return(0,n.useMemo)((function(){return e.href?e.href:!t&&e.collapsible?(0,c.Wl)(e):void 0}),[e,t])}(t),C=(0,c._F)(t,l),S=(0,c.Mg)(g,l),I=(0,c.uR)({initialState:function(){return!!h&&(!C&&t.collapsed)}}),N=I.collapsed,Z=I.setCollapsed;!function(e){var t=e.isActive,a=e.collapsed,l=e.setCollapsed,r=(0,c.D9)(t);(0,n.useEffect)((function(){t&&!r&&a&&l(!1)}),[t,r,a,l])}({isActive:C,collapsed:N,setCollapsed:Z});var T=(0,c.fP)(),y=T.expandedItem,x=T.setExpandedItem;function L(e){void 0===e&&(e=!N),x(e?null:o),Z(e)}var w=(0,c.LU)().autoCollapseSidebarCategories;return(0,n.useEffect)((function(){h&&y&&y!==o&&w&&Z(!0)}),[h,y,o,Z,w]),n.createElement("li",{className:(0,i.Z)(c.kM.docs.docSidebarItemCategory,c.kM.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":N},v)},n.createElement("div",{className:(0,i.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":S})},n.createElement(p.Z,(0,d.Z)({className:(0,i.Z)("menu__link",{"menu__link--sublist":h&&!g,"menu__link--active":C}),onClick:h?function(e){null==a||a(t),g?L(!1):(e.preventDefault(),L())}:function(){null==a||a(t)},"aria-current":S?"page":void 0,href:h?null!=_?_:"#":_},s),f),g&&h&&n.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:f}),type:"button",className:"clean-btn menu__caret",onClick:function(e){e.preventDefault(),L()}})),n.createElement(c.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:N},n.createElement(M,{items:m,tabIndex:N?-1:0,onItemClick:a,activePath:l,level:r+1})))}function I(e){var t=e.item,a=e.level,l=e.index,r=t.value,o=t.defaultStyle,s=t.className;return n.createElement("li",{className:(0,i.Z)(c.kM.docs.docSidebarItemLink,c.kM.docs.docSidebarItemLinkLevel(a),o&&v+" menu__list-item",s),key:l,dangerouslySetInnerHTML:{__html:r}})}function N(e){var t=e.item,a=e.onItemClick,l=e.activePath,r=e.level,o=(e.index,(0,b.Z)(e,_)),s=t.href,m=t.label,u=t.className,v=(0,c._F)(t,l);return n.createElement("li",{className:(0,i.Z)(c.kM.docs.docSidebarItemLink,c.kM.docs.docSidebarItemLinkLevel(r),"menu__list-item",u),key:m},n.createElement(p.Z,(0,d.Z)({className:(0,i.Z)("menu__link",{"menu__link--active":v}),"aria-current":v?"page":void 0,to:s},(0,f.Z)(s)&&{onClick:a?function(){return a(t)}:void 0},o),(0,f.Z)(s)?m:n.createElement("span",null,m,n.createElement(h.Z,null))))}var Z=["items"];function T(e){var t=e.items,a=(0,b.Z)(e,Z);return n.createElement(c.D_,null,t.map((function(e,t){return n.createElement(C,(0,d.Z)({key:t,item:e,index:t},a))})))}var M=(0,n.memo)(T),y="sidebar_CW9Y",x="sidebarWithHideableNavbar_FoYL",L="sidebarHidden_D64r",w="sidebarLogo_FJUI",A="menu_SkdO",P="menuWithAnnouncementBar_x19h",F="collapseSidebarButton_cwdi",B="collapseSidebarButtonIcon_xORG";function D(e){var t=e.onClick;return n.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.Z)("button button--secondary button--outline",F),onClick:t},n.createElement(m,{className:B}))}function H(e){var t,a,l=e.path,r=e.sidebar,o=e.onCollapse,d=e.isHidden,m=function(){var e=(0,c.nT)().isActive,t=(0,n.useState)(e),a=t[0],l=t[1];return(0,c.RF)((function(t){var a=t.scrollY;e&&l(0===a)}),[e]),e&&a}(),u=(0,c.LU)(),b=u.navbar.hideOnScroll,p=u.hideableSidebar;return n.createElement("div",{className:(0,i.Z)(y,(t={},t[x]=b,t[L]=d,t))},b&&n.createElement(s.Z,{tabIndex:-1,className:w}),n.createElement("nav",{className:(0,i.Z)("menu thin-scrollbar",A,(a={},a[P]=m,a))},n.createElement("ul",{className:(0,i.Z)(c.kM.docs.docSidebarMenu,"menu__list")},n.createElement(M,{items:r,activePath:l,level:1}))),p&&n.createElement(D,{onClick:o}))}var R=function(e){var t=e.toggleSidebar,a=e.sidebar,l=e.path;return n.createElement("ul",{className:(0,i.Z)(c.kM.docs.docSidebarMenu,"menu__list")},n.createElement(M,{items:a,activePath:l,onItemClick:function(e){"category"===e.type&&e.href&&t(),"link"===e.type&&t()},level:1}))};function W(e){return n.createElement(c.Cv,{component:R,props:e})}var Y=n.memo(H),q=n.memo(W);function z(e){var t=(0,c.iP)(),a="desktop"===t||"ssr"===t,l="mobile"===t;return n.createElement(n.Fragment,null,a&&n.createElement(Y,e),l&&n.createElement(q,e))}var U=a(4689),O=a(4608),V="backToTopButton_RiI4",G="backToTopButtonShow_ssHd";function K(){var e=(0,n.useRef)(null);return{smoothScrollTop:function(){var t;e.current=(t=null,function e(){var a=document.documentElement.scrollTop;a>0&&(t=requestAnimationFrame(e),window.scrollTo(0,Math.floor(.85*a)))}(),function(){return t&&cancelAnimationFrame(t)})},cancelScrollToTop:function(){return null==e.current?void 0:e.current()}}}function X(){var e,t=(0,n.useState)(!1),a=t[0],l=t[1],r=(0,n.useRef)(!1),o=K(),s=o.smoothScrollTop,d=o.cancelScrollToTop;return(0,c.RF)((function(e,t){var a=e.scrollY,n=null==t?void 0:t.scrollY;if(n)if(r.current)r.current=!1;else{var o=a{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var n=i(4848),a=i(8453);const r={sidebar_position:3},s="Bitlayer's Transaction Lifecycle",o={id:"BitlayerArchitecture/TransactionLifecycle",title:"Bitlayer's Transaction Lifecycle",description:"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:",source:"@site/docs/BitlayerArchitecture/TransactionLifecycle.md",sourceDirName:"BitlayerArchitecture",slug:"/BitlayerArchitecture/TransactionLifecycle",permalink:"/docs/BitlayerArchitecture/TransactionLifecycle",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Layered Virtual Machine (LVM)",permalink:"/docs/BitlayerArchitecture/LVM"},next:{title:"Bitlayer Scan APIs",permalink:"/docs/category/bitlayer-scan-apis"}},c={},l=[{value:"1. BitVM Federation",id:"1-bitvm-federation",level:2},{value:"2. DLC Components",id:"2-dlc-components",level:2},{value:"3. Layer 2 Smart Contracts",id:"3-layer-2-smart-contracts",level:2},{value:"4. Relayers",id:"4-relayers",level:2}];function d(e){const t={h1:"h1",h2:"h2",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"bitlayers-transaction-lifecycle",children:"Bitlayer's Transaction Lifecycle"}),"\n",(0,n.jsx)(t.p,{children:"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:"}),"\n",(0,n.jsx)(t.h2,{id:"1-bitvm-federation",children:"1. BitVM Federation"}),"\n",(0,n.jsx)(t.p,{children:"The nodes within the BitVM Federation act as a verification network to ensure the secure execution of Layer 2 transactions and the stable operation of the Bitlayer bridge. When Layer 2 begins, validated organizations can join the federation by depositing a specific amount of BTC. As the Layer 2 network progresses, the federation dynamically adjusts and increases its membership to boost security and decentralization. Within the cross-chain bridge, the BitVM Federation collectively manages decentralized asset custody for the BitVM bridge channel, attaining a 1 of (N) security level, meaning only one honest node is needed for network integrity. Moreover, the BitVM Federation functions as an oracle network for the OP-DCL bridge channel, requiring only some members to agree ((t) of (N)) to produce a legitimate oracle signature."}),"\n",(0,n.jsx)(t.h2,{id:"2-dlc-components",children:"2. DLC Components"}),"\n",(0,n.jsx)(t.p,{children:"Using DLC for deposits and withdrawals ensures users' autonomous control over their assets but introduces restrictions on the BTC amount for deposits and withdrawals. Because DLC requires predefined CETs to determine the withdrawal amount, supporting fine-grained CETs is necessary to meet user-friendly withdrawal requirements. The first function of the DLC component is to facilitate the creation of funding transactions, where the assets are initially output to a 2 of 2 multi-sig output, with the parties involved being the user and the BitVM Federation ((N) of (N)) address. The second function is the CET manager, which pre-creates DLCs supporting multiple future withdrawal requirements, thus realizing a user-friendly cross-chain solution."}),"\n",(0,n.jsx)(t.h2,{id:"3-layer-2-smart-contracts",children:"3. Layer 2 Smart Contracts"}),"\n",(0,n.jsx)(t.p,{children:"The bridge and light client are two core smart contracts on Layer 2 that implement the trustless bridge. The bridge smart contract manages the issuance and destruction of BTC assets on Layer 2. The light client contract maintains Bitcoin block header information on Layer 2, and Bitlayer uses ZKP-based Bitcoin state proofs to update and maintain the block header information. The light client contract also provides a Verify function to validate Bitcoin transactions, by submitting a Simplified Payment Verification (SPV) proof of the transaction to the light client contract to verify the legitimacy of the Bitcoin transaction. The bridge contract calls the light client's Verify function to validate the legitimacy of users' locking transactions on Bitcoin, ensuring that all BTC assets on Layer 2 are issued in a trustless manner."}),"\n",(0,n.jsx)(t.h2,{id:"4-relayers",children:"4. Relayers"}),"\n",(0,n.jsx)(t.p,{children:"The Relayer plays a critical, trustless role in the Bitlayer asset bridge, primarily tasked with monitoring both Layer 1 and Layer 2 blockchains and updating the state of light client data on the Layer 2 blockchain. When the Bitcoin network commits a new block, the relayer submits a state update transaction for the light client, accompanied by a zero-knowledge proof. Whenever there is a bridge transaction, the relayer forwards it to a smart contract (peg-in) or a BitVM Federation node (peg-out) for further processing. The inclusion of this permissionless relayer system ensures the continuous operation of the asset bridge; the bridge remains functional as long as at least one relayer is operational."})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>o});var n=i(6540);const a={},r=n.createContext(a);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1cbcec10.e770e789.js b/assets/js/1cbcec10.e770e789.js deleted file mode 100644 index 84e11349..00000000 --- a/assets/js/1cbcec10.e770e789.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6922],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return f}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function 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 o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=l(r),f=i,y=h["".concat(c,".").concat(f)]||h[f]||u[f]||a;return r?n.createElement(y,o(o({ref:t},d),{},{components:r})):n.createElement(y,o({ref:t},d))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.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.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l{t.r(n),t.d(n,{default:()=>f});t(6540);var a=t(8215),i=t(1213),s=t(7559),l=t(5476),r=t(8509),c=t(7763),o=t(996),d=t(4336);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var u=t(4848);function f(e){const{content:n}=e,{metadata:{title:t,editUrl:f,description:v,frontMatter:h,unlisted:g,lastUpdatedBy:x,lastUpdatedAt:p},assets:L}=n,{keywords:j,wrapperClassName:A,hide_table_of_contents:N}=h,C=L.image??h.image,b=!!(f||p||x);return(0,u.jsx)(i.e3,{className:(0,a.A)(A??s.G.wrapper.mdxPages,s.G.page.mdxPage),children:(0,u.jsxs)(l.A,{children:[(0,u.jsx)(i.be,{title:t,description:v,keywords:j,image:C}),(0,u.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,u.jsxs)("div",{className:(0,a.A)("row",m.mdxPageWrapper),children:[(0,u.jsxs)("div",{className:(0,a.A)("col",!N&&"col--8"),children:[g&&(0,u.jsx)(o.A,{}),(0,u.jsx)("article",{children:(0,u.jsx)(r.A,{children:(0,u.jsx)(n,{})})}),b&&(0,u.jsx)(d.A,{className:(0,a.A)("margin-top--sm",s.G.pages.pageFooterEditMetaRow),editUrl:f,lastUpdatedAt:p,lastUpdatedBy:x})]}),!N&&n.toc.length>0&&(0,u.jsx)("div",{className:"col col--2",children:(0,u.jsx)(c.A,{toc:n.toc,minHeadingLevel:h.toc_min_heading_level,maxHeadingLevel:h.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var a=t(8215),i=t(5195);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const r="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,a.A)(s.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(i.A,{...t,linkClassName:r,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>h});var a=t(6540),i=t(6342);function s(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...i}=e;t>=0?n[t].children.push(i):a.push(i)})),a}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function r(e){const n=e.getBoundingClientRect();return n.top===n.bottom?r(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>r(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,a.useRef)(void 0),t=o();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:i,minHeadingLevel:s,maxHeadingLevel:l}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),r=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let i=n;i<=t;i+=1)a.push(`h${i}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:s,maxHeadingLevel:l}),o=c(r,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(i),e.classList.add(i),n.current=e):e.classList.remove(i)}(e,e===d)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:a,isChild:i}=e;return n.length?(0,u.jsx)("ul",{className:i?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:a})]},e.id)))}):null}const v=a.memo(f);function h(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const h=(0,i.p)(),g=o??h.tableOfContents.minHeadingLevel,x=m??h.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:i}=e;return(0,a.useMemo)((()=>l({toc:s(n),minHeadingLevel:t,maxHeadingLevel:i})),[n,t,i])}({toc:n,minHeadingLevel:g,maxHeadingLevel:x});return d((0,a.useMemo)((()=>{if(r&&c)return{linkClassName:r,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:x}}),[r,c,g,x])),(0,u.jsx)(v,{toc:p,className:t,linkClassName:r,...f})}},996:(e,n,t)=>{t.d(n,{A:()=>f});t(6540);var a=t(8215),i=t(1312),s=t(5260),l=t(4848);function r(){return(0,l.jsx)(i.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,l.jsx)(i.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,l.jsx)(s.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),m=t(7293);function u(e){let{className:n}=e;return(0,l.jsx)(m.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,a.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(c,{})})}function f(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{}),(0,l.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/1f9bfb41.baf83cd5.js b/assets/js/1f9bfb41.baf83cd5.js deleted file mode 100644 index 8fb5b6c9..00000000 --- a/assets/js/1f9bfb41.baf83cd5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5519],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return d}});var n=r(7294);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 l(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 c=n.createContext({}),a=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=a(e.components);return n.createElement(c.Provider,{value:t},e.children)},u={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,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),f=a(r),d=o,m=f["".concat(c,".").concat(d)]||f[d]||u[d]||i;return r?n.createElement(m,l(l({ref:t},p),{},{components:r})):n.createElement(m,l({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,l=new Array(i);l[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,l[1]=s;for(var a=2;a{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var s=n(4848),r=n(8453);const o={sidebar_position:5},i="Block Explorers",c={id:"DeveloperResources/Block Explorers",title:"Block Explorers",description:"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.",source:"@site/docs/DeveloperResources/Block Explorers.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/Block Explorers",permalink:"/docs/DeveloperResources/Block Explorers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"docs",previous:{title:"Faucets",permalink:"/docs/DeveloperResources/Faucets"},next:{title:"BTC Connect (Account Abstraction)",permalink:"/docs/DeveloperResources/BTC Connect"}},l={},a=[{value:"Mainnet",id:"mainnet",level:2},{value:"Testnet",id:"testnet",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"block-explorers",children:"Block Explorers"}),"\n",(0,s.jsx)(t.p,{children:"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments."}),"\n",(0,s.jsx)(t.h2,{id:"mainnet",children:"Mainnet"}),"\n",(0,s.jsx)(t.p,{children:"Access the Bitlayer mainnet block explorer here:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://www.btrscan.com",children:"BTRScan"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"testnet",children:"Testnet"}),"\n",(0,s.jsx)(t.p,{children:"Access the Bitlayer testnet block explorer here:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://testnet.btrscan.com",children:"Bitlayer Testnet Explorer"})}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2237.edb2a628.js b/assets/js/2237.edb2a628.js new file mode 100644 index 00000000..85352d45 --- /dev/null +++ b/assets/js/2237.edb2a628.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2237],{3363:(e,t,i)=>{i.d(t,{A:()=>a});i(6540);var n=i(8215),s=i(1312),o=i(1107),r=i(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(s.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(s.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(s.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,i)=>{i.r(t),i.d(t,{default:()=>l});i(6540);var n=i(1312),s=i(1213),o=i(5476),r=i(3363),a=i(4848);function l(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.be,{title:e}),(0,a.jsx)(o.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/25003e4f.436fc698.js b/assets/js/25003e4f.436fc698.js new file mode 100644 index 00000000..16327d99 --- /dev/null +++ b/assets/js/25003e4f.436fc698.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2838],{4351:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"Bitlayer: Amplifying Bitcoin","metadata":{"permalink":"/blog/Bitlayer: Amplifying Bitcoin","source":"@site/blog/2024-03-01-first-blog-post.md","title":"Bitlayer: Amplifying Bitcoin","description":"Bitcoin is changing. Drastically.","date":"2024-03-01T00:00:00.000Z","tags":[{"label":"Hello Bitlayer","permalink":"/blog/tags/hello-bitlayer"}],"readingTime":9.435,"hasTruncateMarker":false,"authors":[{"name":"Bitlayer","title":"The First Bitcoin security - equivalent Layer 2 based on BitVM.","url":"https://medium.com/@Bitlayer","image_url":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4","imageURL":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"}],"frontMatter":{"slug":"Bitlayer: Amplifying Bitcoin","title":"Bitlayer: Amplifying Bitcoin","authors":{"name":"Bitlayer","title":"The First Bitcoin security - equivalent Layer 2 based on BitVM.","url":"https://medium.com/@Bitlayer","image_url":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4","imageURL":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},"tags":["Hello Bitlayer"]},"unlisted":false},"content":"Bitcoin is changing. Drastically.\\n\\nAnd the Bitcoin halving is less than 60 days away\u2026.\\n\\nA new \u201corder\u201d of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs \u2014 maybe a maxi\u2019s worst enemy \u2014 are coming to Bitcoin.\\n\\nBut at this point, if you don\u2019t at least understand the trade-offs, then you\u2019re not listening.\\n\\nInscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s\u2026these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.\\n\\nAnother signal, perhaps the biggest of them all, was the SEC\u2019s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.\\n\\nIt\u2019s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:\\n\\nIncreased security from innumerable new transaction fees (especially as mining rewards decrease)\\nInflows of buyers and thriving new global market economies previously blocked by regulation\\nCountless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting\u2026\\nIntroduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming\\n\u2026and all the upside we would otherwise leave on the table, all the innovations and applications we can\u2019t currently conceive\\nDespite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they\u2019re storming their way in.\\n\\nThough, their path is not easy.\\n\\nFor years, the unique technical characteristics of Bitcoin and the protocol\u2019s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.\\n\\nThe Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.\\n\\nThe market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.\\n\\nA solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.\\n\\nIn the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network\u2019s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin\u2019s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.\\n\\n\u201cAs long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,\u201d stated Bitlayer cofounder Charlie Hu.\\n\\nA disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.\\n\\nWelcome to Bitlayer.\\n\\nBitlayer\u2019s Mission\\nBitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It\u2019s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.\\n\\n\u201cBitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,\u201d said Kevin He, cofounder at Bitlayer.\\n\\nWith hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.\\n\\nBitlayer\u2019s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group\u2019s web3 tech head.\\n\\nBitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.\\n\\nThe solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.\\n\\nBuilding on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.\\n\\nIs Bitlayer the Next Big Thing for Bitcoin\uff1f\\nBitVM\u2019s value is gaining increased recognition by developers as many teams continually work towards its implementation.\\n\\nBitlayer\u2019s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).\\n\\nThe project\u2019s tech team has abstracted three key tasks from these inspirations:\\n\\nTrustless entry and exit of Layer 1 assets\\nState transitions using a Turing-complete Layer 2 virtual machine\\nLayer 1 verification of the validity of Layer 2 state transitions\\nThe security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.\\n\\nThis traditional approach results in users completely losing control of their assets, while the platform\u2019s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.\\n\\nThe verification of Layer 2 state transitions operates on a principle comparable to proving one\u2019s innocence\u2013 an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin\u2019s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin\u2019s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.\\n\\nThrough integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).\\n\\nCompatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.\\n\\nAbove is an outline of preliminary ideation for Bitlayer.\\n\\nFollowing the publication of the Bitlayer white paper, expect more insight into the project\u2019s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.\\n\\nBitlayer is Making History on Bitcoin\\nBitcoin initially emerged and endured as an asset or \u201cstore of value\u201d. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards \u201cbuilding on Bitcoin\u201d, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum\u2019s.\\n\\nAt present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.\\n\\nBitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM\u2019s technology, and promoting the implementation of BitVM.\\n\\nBitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin\u2019s value, and harnessing its security, is the open future we all desire and deserve.\\n\\nA focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin\u2019s scalability challenges remains a key endeavor for the team.\\n\\nExpansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.\\n\\nWith a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don\u2019t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?\\n\\nShouldn\u2019t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?\\n\\nBitcoin has been left in the corner so far. But things might soon change.\\n\\nSatoshi Nakamoto once predicted: \u201cIn a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.\u201d\\n\\nNow, at the historical juncture of Bitcoin\u2019s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy."}]}}')}}]); \ No newline at end of file diff --git a/assets/js/25f9780a.0af53055.js b/assets/js/25f9780a.0af53055.js new file mode 100644 index 00000000..793057c8 --- /dev/null +++ b/assets/js/25f9780a.0af53055.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9987],{5903:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=i(4848),r=i(8453);const a={sidebar_position:1},o="Welcome",s={id:"Introduction/Introduction",title:"Welcome",description:"The first bitcoin security-equivalent Layer 2 based on BitVM",source:"@site/docs/Introduction/Introduction.md",sourceDirName:"Introduction",slug:"/Introduction/",permalink:"/docs/Introduction/",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Introduction",permalink:"/docs/category/introduction"},next:{title:"About Bitlayer",permalink:"/docs/Introduction/AboutBitlayer"}},c={},l=[{value:"Explore Bitlayer Technical Documentation",id:"explore-bitlayer-technical-documentation",level:3},{value:"Why Choose Bitlayer?",id:"why-choose-bitlayer",level:3},{value:"Can I Start Using Bitlayer Today?",id:"can-i-start-using-bitlayer-today",level:3},{value:"What Lies Ahead for Bitlayer?",id:"what-lies-ahead-for-bitlayer",level:3}];function d(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",img:"img",p:"p",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"welcome",children:"Welcome"}),"\n",(0,n.jsx)(t.h2,{id:""}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"The first bitcoin security-equivalent Layer 2 based on BitVM",src:i(149).A+"",width:"2000",height:"1080"})}),"\n",(0,n.jsx)(t.h3,{id:"explore-bitlayer-technical-documentation",children:"Explore Bitlayer Technical Documentation"}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is the first Layer 2 solution for Bitcoin that offers security equivalent to Bitcoin's own and Turing completeness. It is also the first Bitcoin Layer 2 solution based on BitVM paradigm. Bitlayer aims to enhance the Bitcoin ecosystem by providing secure scalability, promoting diversity of assets, and encouraging innovation. Ultimately, it seeks to offer users a faster, safer, and more flexible experience."}),"\n",(0,n.jsx)(t.h3,{id:"why-choose-bitlayer",children:"Why Choose Bitlayer?"}),"\n",(0,n.jsx)(t.p,{children:"At Bitlayer, our primary focus is to address the scalability challenges of the Bitcoin network."}),"\n",(0,n.jsx)(t.p,{children:"While Bitcoin remains the leading blockchain for value transfer, it faces limitations in terms of scalability and transaction costs. Bitlayer tackles these issues head-on by leveraging cutting-edge cryptographic protocols and virtual machine technology. Bitlayer is building a native Bitcoin Layer 2 using BitVM paradigm, it will achieve Bitcoin finality, trustless bridge, multiple virtual machine support. This means that developers can easily migrate their existing smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using familiar tools such as Ethereum JSON-RPC and Hardhat."}),"\n",(0,n.jsx)(t.p,{children:"The ingenious integration of Bitcoin smart contracts and Ethereum compatibility sets Bitlayer apart, verifying the integrity of Bitlayer's transactions and ensuring a high level of security, decentralization, and resistance to censorship. These achievements are made possible through recent advancements in cryptography, blockchain protocol design, and hardware optimization."}),"\n",(0,n.jsxs)(t.p,{children:["For detailed insights into our technical architecture, please refer to the ",(0,n.jsx)(t.a,{href:"/docs/Introduction/TechnicalArchitecture",children:"Bitlayer Technical Architecture section"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"can-i-start-using-bitlayer-today",children:"Can I Start Using Bitlayer Today?"}),"\n",(0,n.jsxs)(t.p,{children:["According to our ",(0,n.jsx)(t.a,{href:"/docs/Introduction/Roadmap",children:"roadmap"}),", we, the Bitlayer Mainnet-V1 has launched and we are also glad to offer a testnet environment where you can experiment with Bitlayer's capabilities. Please refer to our ",(0,n.jsx)(t.a,{href:"/docs/Build/QuickStart",children:"Quick Start Guide"})," to get started with our test network and explore the infinite possibilities of Bitcoin on both Bitlayer Testnet and Mainnet."]}),"\n",(0,n.jsx)(t.h3,{id:"what-lies-ahead-for-bitlayer",children:"What Lies Ahead for Bitlayer?"}),"\n",(0,n.jsxs)(t.p,{children:["We have launched the Bitlayer Mainnet-V1 in early April, our journey to further security&decentralization is far from over. We are committed to decentralizing each component of the stack, ensuring a resilient and robust network. Stay updated on our progress by following our ",(0,n.jsx)(t.a,{href:"https://twitter.com/BitLayerLabs",children:"Twitter"})," or joining our active ",(0,n.jsx)(t.a,{href:"https://discord.com/invite/GGSjNyD8nj",children:"Discord"})," / ",(0,n.jsx)(t.a,{href:"https://t.me/bitlayerofficial",children:"Telegram"})," community. You can also connect with us on ",(0,n.jsx)(t.a,{href:"https://medium.com/@Bitlayer",children:"Medium"})," to stay abreast of the latest Bitlayer developments."]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},149:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/FA_Bitlayer-Logo-horizontal-9336769fe282ba5557e03be1cf1bf118.png"},8453:(e,t,i)=>{i.d(t,{R:()=>o,x:()=>s});var n=i(6540);const r={},a=n.createContext(r);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/25f9780a.4e9ee850.js b/assets/js/25f9780a.4e9ee850.js deleted file mode 100644 index 7da44e49..00000000 --- a/assets/js/25f9780a.4e9ee850.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5096],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return y}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function 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 o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=s(r),y=i,h=p["".concat(l,".").concat(y)]||p[y]||d[y]||a;return r?n.createElement(h,o(o({ref:t},u),{},{components:r})):n.createElement(h,o({ref:t},u))}));function y(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var s=2;s{a.d(t,{A:()=>f});var s=a(6540),n=a(8215),l=a(5476),r=a(4581),i=a(8774),o=a(1312),c=a(6347),m=a(9169);function d(e){const{pathname:t}=(0,c.zy)();return(0,s.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,m.ys)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var h=a(4848);function g(e){let{sidebar:t}=e;const a=d(t.items);return(0,h.jsx)("aside",{className:"col col--3",children:(0,h.jsxs)("nav",{className:(0,n.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,h.jsx)("div",{className:(0,n.A)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,h.jsx)("ul",{className:(0,n.A)(u.sidebarItemList,"clean-list"),children:a.map((e=>(0,h.jsx)("li",{className:u.sidebarItem,children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var x=a(5600);function j(e){let{sidebar:t}=e;const a=d(t.items);return(0,h.jsx)("ul",{className:"menu__list",children:a.map((e=>(0,h.jsx)("li",{className:"menu__list-item",children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,h.jsx)(x.GX,{component:j,props:e})}function b(e){let{sidebar:t}=e;const a=(0,r.l)();return t?.items.length?"mobile"===a?(0,h.jsx)(p,{sidebar:t}):(0,h.jsx)(g,{sidebar:t}):null}function f(e){const{sidebar:t,toc:a,children:s,...r}=e,i=t&&t.items.length>0;return(0,h.jsx)(l.A,{...r,children:(0,h.jsx)("div",{className:"container margin-vert--lg",children:(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)(b,{sidebar:t}),(0,h.jsx)("main",{className:(0,n.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),children:s}),a&&(0,h.jsx)("div",{className:"col col--2",children:a})]})})})}},4651:(e,t,a)=>{a.d(t,{A:()=>R});a(6540);var s=a(8215),n=a(7131),l=a(4848);function r(e){let{children:t,className:a}=e;return(0,l.jsx)("article",{className:a,children:t})}var i=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:r}=(0,n.e)(),{permalink:c,title:m}=a,d=r?"h1":"h2";return(0,l.jsx)(d,{className:(0,s.A)(o.title,t),children:r?m:(0,l.jsx)(i.A,{to:c,children:m})})}var m=a(1312),d=a(5846),u=a(6266);const h={container:"container_mt6G"};function g(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,d.W)();return t=>{const a=Math.ceil(t);return e(a,(0,m.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,l.jsx)(l.Fragment,{children:a(t)})}function x(e){let{date:t,formattedDate:a}=e;return(0,l.jsx)("time",{dateTime:t,children:a})}function j(){return(0,l.jsx)(l.Fragment,{children:" \xb7 "})}function p(e){let{className:t}=e;const{metadata:a}=(0,n.e)(),{date:r,readingTime:i}=a,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,l.jsxs)("div",{className:(0,s.A)(h.container,"margin-vert--md",t),children:[(0,l.jsx)(x,{date:r,formattedDate:(c=r,o.format(new Date(c)))}),void 0!==i&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(j,{}),(0,l.jsx)(g,{readingTime:i})]})]});var c}function b(e){return e.href?(0,l.jsx)(i.A,{...e}):(0,l.jsx)(l.Fragment,{children:e.children})}function f(e){let{author:t,className:a}=e;const{name:n,title:r,url:i,imageURL:o,email:c}=t,m=i||c&&`mailto:${c}`||void 0;return(0,l.jsxs)("div",{className:(0,s.A)("avatar margin-bottom--sm",a),children:[o&&(0,l.jsx)(b,{href:m,className:"avatar__photo-link",children:(0,l.jsx)("img",{className:"avatar__photo",src:o,alt:n})}),n&&(0,l.jsxs)("div",{className:"avatar__intro",children:[(0,l.jsx)("div",{className:"avatar__name",children:(0,l.jsx)(b,{href:m,children:(0,l.jsx)("span",{children:n})})}),r&&(0,l.jsx)("small",{className:"avatar__subtitle",children:r})]})]})}const v={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:a},assets:r}=(0,n.e)();if(0===a.length)return null;const i=a.every((e=>{let{name:t}=e;return!t}));return(0,l.jsx)("div",{className:(0,s.A)("margin-top--md margin-bottom--sm",i?v.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,l.jsx)("div",{className:(0,s.A)(!i&&"col col--6",i?v.imageOnlyAuthorCol:v.authorCol),children:(0,l.jsx)(f,{author:{...e,imageURL:r.authorsImageUrls[t]??e.imageURL}})},t)))})}function N(){return(0,l.jsxs)("header",{children:[(0,l.jsx)(c,{}),(0,l.jsx)(p,{}),(0,l.jsx)(A,{})]})}var _=a(440),k=a(8509);function P(e){let{children:t,className:a}=e;const{isBlogPostPage:r}=(0,n.e)();return(0,l.jsx)("div",{id:r?_.blogPostContainerID:void 0,className:(0,s.A)("markdown",a),children:(0,l.jsx)(k.A,{children:t})})}var w=a(7559),T=a(4336),I=a(2053);function L(){return(0,l.jsx)("b",{children:(0,l.jsx)(m.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function y(e){const{blogPostTitle:t,...a}=e;return(0,l.jsx)(i.A,{"aria-label":(0,m.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,l.jsx)(L,{})})}function C(){const{metadata:e,isBlogPostPage:t}=(0,n.e)(),{tags:a,title:r,editUrl:i,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:m}=e,d=!t&&o,u=a.length>0;if(!(u||d||i))return null;if(t){const e=!!(i||m||c);return(0,l.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,l.jsx)("div",{className:(0,s.A)("row","margin-top--sm",w.G.blog.blogFooterEditMetaRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(I.A,{tags:a})})}),e&&(0,l.jsx)(T.A,{className:(0,s.A)("margin-top--sm",w.G.blog.blogFooterEditMetaRow),editUrl:i,lastUpdatedAt:m,lastUpdatedBy:c})]})}return(0,l.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,l.jsx)("div",{className:(0,s.A)("col",{"col--9":d}),children:(0,l.jsx)(I.A,{tags:a})}),d&&(0,l.jsx)("div",{className:(0,s.A)("col text--right",{"col--3":u}),children:(0,l.jsx)(y,{blogPostTitle:r,to:e.permalink})})]})}function R(e){let{children:t,className:a}=e;const i=function(){const{isBlogPostPage:e}=(0,n.e)();return e?void 0:"margin-bottom--xl"}();return(0,l.jsxs)(r,{className:(0,s.A)(i,a),children:[(0,l.jsx)(N,{}),(0,l.jsx)(P,{children:t}),(0,l.jsx)(C,{})]})}},9022:(e,t,a)=>{a.d(t,{A:()=>r});a(6540);var s=a(8215),n=a(8774),l=a(4848);function r(e){const{permalink:t,title:a,subLabel:r,isNext:i}=e;return(0,l.jsxs)(n.A,{className:(0,s.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[r&&(0,l.jsx)("div",{className:"pagination-nav__sublabel",children:r}),(0,l.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var s=a(8215),n=a(8774);const l={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=a(4848);function i(e){let{permalink:t,label:a,count:i}=e;return(0,r.jsxs)(n.A,{href:t,className:(0,s.A)(l.tag,i?l.tagWithCount:l.tagRegular),children:[a,i&&(0,r.jsx)("span",{children:i})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var s=a(8215),n=a(1312),l=a(6133);const r={tags:"tags_jXut",tag:"tag_QGVx"};var i=a(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.A)(r.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:a}=e;return(0,i.jsx)("li",{className:r.tag,children:(0,i.jsx)(l.A,{label:t,permalink:a})},a)}))})]})}},7131:(e,t,a)=>{a.d(t,{e:()=>o,i:()=>i});var s=a(6540),n=a(9532),l=a(4848);const r=s.createContext(null);function i(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:a}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return(0,l.jsx)(r.Provider,{value:i,children:t})}function o(){const e=(0,s.useContext)(r);if(null===e)throw new n.dV("BlogPostProvider");return e}},5846:(e,t,a)=>{a.d(t,{W:()=>c});var s=a(6540),n=a(4586);const l=["zero","one","two","few","many","other"];function r(e){return l.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:r(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:r(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`),i}}),[e])}function c(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const s=e.split("|");if(1===s.length)return s[0];s.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const n=a.select(t),l=a.pluralForms.indexOf(n);return s[Math.min(l,s.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/3673f061.01f39356.js b/assets/js/3673f061.01f39356.js deleted file mode 100644 index 6208e340..00000000 --- a/assets/js/3673f061.01f39356.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8107],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=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=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},u={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,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=c(r),d=a,m=f["".concat(s,".").concat(d)]||f[d]||u[d]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var c=2;c{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>p,frontMatter:()=>l,metadata:()=>a,toc:()=>c});var i=s(4848),n=s(8453);const l={sidebar_position:1},r="Supported Wallets for Bitlayer",a={id:"DeveloperResources/Wallets",title:"Supported Wallets for Bitlayer",description:"EVM-Compatible Wallets",source:"@site/docs/DeveloperResources/Wallets.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/Wallets",permalink:"/docs/DeveloperResources/Wallets",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Developer Resources",permalink:"/docs/category/developer-resources"},next:{title:"Indexing-The-Graph",permalink:"/docs/DeveloperResources/TheGraph"}},o={},c=[{value:"EVM-Compatible Wallets",id:"evm-compatible-wallets",level:2},{value:"Bitcoin-Exclusive Wallets",id:"bitcoin-exclusive-wallets",level:2},{value:"Networks Supported",id:"networks-supported",level:2},{value:"Multi-Signature Smart Contract Wallet",id:"multi-signature-smart-contract-wallet",level:2},{value:"MPC Wallet",id:"mpc-wallet",level:2}];function d(e){const t={a:"a",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"supported-wallets-for-bitlayer",children:"Supported Wallets for Bitlayer"}),"\n",(0,i.jsx)(t.h2,{id:"evm-compatible-wallets",children:"EVM-Compatible Wallets"}),"\n",(0,i.jsx)(t.p,{children:"For interacting with Ethereum and other EVM networks, Bitlayer supports wallets such as:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://www.okx.com/web3",children:"OKX Wallet"})," - A versatile wallet for secure transactions."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://metamask.io/",children:"MetaMask"})," - A browser extension with integrated dApp support."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.em,{children:"EVM-compatible wallets allow you to execute smart contracts and interact with decentralized applications across various EVM networks."})}),"\n",(0,i.jsx)(t.h2,{id:"bitcoin-exclusive-wallets",children:"Bitcoin-Exclusive Wallets"}),"\n",(0,i.jsx)(t.p,{children:"For Bitcoin transactions, Bitlayer is compatible with wallets designed specifically for Bitcoin, including:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://chat.openai.com/c/f352b17c-69a1-457f-be41-a98fd00a8dfc#",children:"Unisat"})," - A secure wallet for Bitcoin enthusiasts."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://chat.openai.com/c/f352b17c-69a1-457f-be41-a98fd00a8dfc#",children:"Xverse"})," - A wallet focused on privacy and security for Bitcoin users."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.em,{children:"Bitcoin-only wallets provide optimized features for handling Bitcoin transactions and secure storage."})}),"\n",(0,i.jsx)(t.h2,{id:"networks-supported",children:"Networks Supported"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"EVM Networks (e.g., Ethereum Mainnet, Binance Smart Chain)"}),"\n",(0,i.jsx)(t.li,{children:"Bitcoin Testnet (for testing and development purposes)"}),"\n",(0,i.jsx)(t.li,{children:"Bitcoin Mainnet (for real Bitcoin transactions)"}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.em,{children:"Choosing the right network is essential for your transactions. The Testnet is ideal for practice and development, while the Mainnet is used for actual transactions."})}),"\n",(0,i.jsx)(t.h2,{id:"multi-signature-smart-contract-wallet",children:"Multi-Signature Smart Contract Wallet"}),"\n",(0,i.jsx)(t.p,{children:"Bitlayer provides a robust multi-signature smart contract wallet solution called Bitlayer Multisig. This wallet enhances security by requiring multiple signatures to approve transactions, ensuring that no single person can compromise the funds."}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{href:"http://multisign.bitlayer.org",children:"Create a Bitlayer Multisig Wallet"})}),"\n",(0,i.jsx)(t.h2,{id:"mpc-wallet",children:"MPC Wallet"}),"\n",(0,i.jsxs)(t.p,{children:["Bitlayer also supports MPC (Multi-Party Computation) wallets for enhanced security and privacy. A notable MPC wallet supported by Bitlayer is provided by ",(0,i.jsx)(t.a,{href:"https://sinohope.com",children:"Sinohope"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(6540);const n={},l=i.createContext(n);function r(e){const t=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/36994c47.8f17e7f5.js b/assets/js/36994c47.8f17e7f5.js new file mode 100644 index 00000000..2ac9c816 --- /dev/null +++ b/assets/js/36994c47.8f17e7f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9858],{5516:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/38295533.2c25da60.js b/assets/js/38295533.2c25da60.js new file mode 100644 index 00000000..c4bead0d --- /dev/null +++ b/assets/js/38295533.2c25da60.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2677],{3762:t=>{t.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Getting Started","description":"5 minutes to learn how to build on Bitlayer.","slug":"/category/getting-started","permalink":"/docs/category/getting-started","sidebar":"docs","navigation":{"previous":{"title":"About BitVM","permalink":"/docs/Introduction/BitVM"},"next":{"title":"Quick Start Guide","permalink":"/docs/Build/QuickStart"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/393be207.04252398.js b/assets/js/393be207.04252398.js new file mode 100644 index 00000000..fa01d3ad --- /dev/null +++ b/assets/js/393be207.04252398.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4134],{6602:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>p,toc:()=>i});var o=n(4848),a=n(8453);const r={title:"Markdown page example"},s="Markdown page example",p={type:"mdx",permalink:"/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"},unlisted:!1},c={},i=[];function d(e){const t={h1:"h1",p:"p",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"markdown-page-example",children:"Markdown page example"}),"\n",(0,o.jsx)(t.p,{children:"You don't need React to write simple standalone pages."})]})}function l(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>p});var o=n(6540);const a={},r=o.createContext(a);function s(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function p(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/393be207.7d8576b6.js b/assets/js/393be207.7d8576b6.js deleted file mode 100644 index 36efd246..00000000 --- a/assets/js/393be207.7d8576b6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7414],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return s}});var r=n(7294);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 c(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 i=r.createContext({}),u=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},f={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,i=e.parentName,l=p(e,["components","mdxType","originalType","parentName"]),m=u(n),s=o,d=m["".concat(i,".").concat(s)]||m[s]||f[s]||a;return n?r.createElement(d,c(c({ref:t},l),{},{components:n})):r.createElement(d,c({ref:t},l))}));function s(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p.mdxType="string"==typeof e?e:o,c[1]=p;for(var u=2;u=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,k=d["".concat(s,".").concat(m)]||d[m]||u[m]||l;return n?a.createElement(k,o(o({ref:t},p),{},{components:n})):a.createElement(k,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,o[1]=i;for(var c=2;c{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>d});var r=s(4848),c=s(8453);const t={sidebar_position:4},l="JSON-RPC",a={id:"BitlayerNetwork/Json-RPC",title:"JSON-RPC",description:"Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.",source:"@site/docs/BitlayerNetwork/Json-RPC.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/Json-RPC",permalink:"/docs/BitlayerNetwork/Json-RPC",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docs",previous:{title:"Bridges",permalink:"/docs/BitlayerNetwork/Bridges"},next:{title:"Contracts",permalink:"/docs/BitlayerNetwork/Contracts"}},i={},d=[{value:"eth_getTraceActionByTxHash",id:"eth_gettraceactionbytxhash",level:2},{value:"Parameters",id:"parameters",level:3},{value:"Returns",id:"returns",level:3},{value:"Example",id:"example",level:3},{value:"eth_getTraceActionByBlockNumber",id:"eth_gettraceactionbyblocknumber",level:2},{value:"Parameters",id:"parameters-1",level:3},{value:"Returns",id:"returns-1",level:3},{value:"Example",id:"example-1",level:3},{value:"eth_getTraceActionByBlockHash",id:"eth_gettraceactionbyblockhash",level:2},{value:"Parameters",id:"parameters-2",level:3},{value:"Returns",id:"returns-2",level:3},{value:"Example",id:"example-2",level:3}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,c.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"json-rpc",children:"JSON-RPC"}),"\n",(0,r.jsxs)(n.p,{children:["Bitlayer provides all JSON-RPC API methods listed on ",(0,r.jsx)(n.a,{href:"https://ethereum.org/developers/docs/apis/json-rpc#json-rpc-methods",children:"Ethereum"})," along with several custom methods."]}),"\n",(0,r.jsx)(n.h2,{id:"eth_gettraceactionbytxhash",children:"eth_getTraceActionByTxHash"}),"\n",(0,r.jsx)(n.p,{children:"This method returns logs of internal transactions by the hash of a transaction."}),"\n",(0,r.jsx)(n.h3,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"DATA"}),", 32 Bytes: Hash of a transaction."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"Object"}),": Filter options:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fromUser"}),": ",(0,r.jsx)(n.code,{children:"DATA|Array"}),", 20 Bytes (optional) - Address of the sender."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"toBlock"}),": ",(0,r.jsx)(n.code,{children:"DATA|Array"}),", 20 Bytes (optional) - Address of the receiver."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"opCode"}),": String (optional) - An EVM opcode for a transaction's log."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"minValue"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY|TAG"})," (optional) - The minimal value or amount transferred in BRC."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"returns",children:"Returns"}),"\n",(0,r.jsxs)(n.p,{children:["An object containing an internal transaction's log, or ",(0,r.jsx)(n.code,{children:"null"})," if no log was found:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"transactionHash"}),": ",(0,r.jsx)(n.code,{children:"DATA"}),", 32 Bytes - Hash of the transaction."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockHash"}),": ",(0,r.jsx)(n.code,{children:"DATA"}),", 32 Bytes - Hash of the block (null if pending)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"blockNumber"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY"})," - Block number of the transaction."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"logs"}),": Array of log objects generated by the transaction:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"from"}),": ",(0,r.jsx)(n.code,{children:"DATA"}),", 20 Bytes - Address of the sender."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"to"}),": ",(0,r.jsx)(n.code,{children:"DATA"}),", 20 Bytes - Address of the receiver (null if it's a contract creation transaction)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"value"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY"})," - Value transferred in BRC."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"success"}),": Boolean - Indicates whether the call was successful."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"opcode"}),": ",(0,r.jsx)(n.code,{children:"DATA"})," - The EVM opcode of the transaction's log."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"depth"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY"})," - The depth of the call stack in EVM."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY"})," - Gas provided by the sender."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"gas_used"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY"})," - Amount of gas used by the transaction."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"input"}),": ",(0,r.jsx)(n.code,{children:"DATA"})," - Data sent along with the transaction."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"trace_address"}),": ",(0,r.jsx)(n.code,{children:"QUANTITY|Array"})," - Array representing the call trace depth during execution."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,r.jsx)(n.p,{children:"Request:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:'curl -X POST --data \'{ "jsonrpc":"2.0", "method":"eth_getTraceActionByTxHash", "params":["0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694"], "id":1}\'\n'})}),"\n",(0,r.jsx)(n.p,{children:"Response:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "id": 1,\n "jsonrpc": "2.0",\n "result": [\n {\n "transactionHash": "0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694",\n "blockHash": "0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3",\n "blockNumber": 54,\n "logs": [\n {\n "from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",\n "to": "0x000000000000000000000000000000000000f000",\n "value": 0,\n "success": true,\n "opcode": "CALL",\n "depth": 18446744073709551615,\n "gas": 165629,\n "gas_used": 162996,\n "input": "0x6374299e0000000000000000000000009f01eb5eb4dbea8b2cecc679050819990ab68a1a000000000000000000000000000000000000000000295be96e64066972000000",\n "trace_address": []\n },\n {\n "from": "0x000000000000000000000000000000000000f000",\n "to": "0x4b20bbf3652696b9afd27b8f88ff8b7c1f361336",\n "value": 0,\n "success": true,\n "opcode": "STATICCALL",\n "depth": 0,\n "gas": 157800,\n "gas_used": 2443,\n "input": "0x00000000",\n "output": "0x0000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075",\n "trace_address": [\n 0\n ]\n },\n {\n "from": "0x000000000000000000000000000000000000f000",\n "to": "0xf4340cf5f3891a3827713b33f769b501a0b5b122",\n "value": 0,\n "success": true,\n "opcode": "STATICCALL",\n "depth": 0,\n "gas": 150040,\n "gas_used": 2814,\n "input": "0x0000000000000000000000000000000000000000007c13bc4b2c133c560000000000000000000000000000000000000000000000007c13bc4b2c133c5600000000000000",\n "output": "0x0000000000000000000000000000000000000000007c13bc4b2c133c56000000",\n "trace_address": [\n 1\n ]\n }\n ]\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"eth_gettraceactionbyblocknumber",children:"eth_getTraceActionByBlockNumber"}),"\n",(0,r.jsx)(n.p,{children:"Returns logs of internal transactions by block number."}),"\n",(0,r.jsx)(n.h3,{id:"parameters-1",children:"Parameters"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"QUANTITY|TAG - integer of a block number"}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Object - The filter options:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"fromUser: DATA|Array, 20 Bytes - (optional) address of the sender."}),"\n",(0,r.jsx)(n.li,{children:"toBlock: DATA|Array, 20 Bytes - (optional) address of the receiver."}),"\n",(0,r.jsx)(n.li,{children:"opCode: String - (optional) An EVM opcode for a transaction's log."}),"\n",(0,r.jsx)(n.li,{children:"minValue: QUANTITY|TAG - (optional) the minimal value or amount transferred in BRC."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"returns-1",children:"Returns"}),"\n",(0,r.jsxs)(n.p,{children:["Same as ",(0,r.jsx)(n.a,{href:"#returns",children:"eth_getTraceActionByTxHash"})]}),"\n",(0,r.jsx)(n.h3,{id:"example-1",children:"Example"}),"\n",(0,r.jsx)(n.p,{children:"Request:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:'curl -X POST --data \'{ "jsonrpc":"2.0", "method":"eth_getTraceActionByBlockNumber", "params":["0x36"], "id":1}\'\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Result see ",(0,r.jsx)(n.a,{href:"#example",children:"eth_getTraceActionByTxHash"})]}),"\n",(0,r.jsx)(n.h2,{id:"eth_gettraceactionbyblockhash",children:"eth_getTraceActionByBlockHash"}),"\n",(0,r.jsx)(n.p,{children:"Returns logs of internal transactions by block hash."}),"\n",(0,r.jsx)(n.h3,{id:"parameters-2",children:"Parameters"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"DATA, 32 Bytes - Hash of a block."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"returns-2",children:"Returns"}),"\n",(0,r.jsxs)(n.p,{children:["Same as ",(0,r.jsx)(n.a,{href:"#returns",children:"eth_getTraceActionByTxHash"})]}),"\n",(0,r.jsx)(n.h3,{id:"example-2",children:"Example"}),"\n",(0,r.jsx)(n.p,{children:"Request:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:'curl -X POST --data \'{ "jsonrpc":"2.0", "method":"eth_getTraceActionByBlockHash", "params":["0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3"], "id":1}\'\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Result see ",(0,r.jsx)(n.a,{href:"#example",children:"eth_getTraceActionByTxHash"})]})]})}function h(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>a});var r=s(6540);const c={},t=r.createContext(c);function l(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:l(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b705731.128f830d.js b/assets/js/3b705731.128f830d.js deleted file mode 100644 index 49d6db6f..00000000 --- a/assets/js/3b705731.128f830d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3789],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);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},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={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,u=s(e,["components","mdxType","originalType","parentName"]),f=l(r),d=o,m=f["".concat(c,".").concat(d)]||f[d]||p[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function d(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.mdxType="string"==typeof e?e:o,i[1]=s;for(var l=2;l{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var n=s(4848),o=s(8453);const r={sidebar_position:4},a="Faucets",i={id:"DeveloperResources/Faucets",title:"Faucets",description:"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.",source:"@site/docs/DeveloperResources/Faucets.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/Faucets",permalink:"/docs/DeveloperResources/Faucets",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docs",previous:{title:"Indexing-3rd-Party",permalink:"/docs/DeveloperResources/Subgraph"},next:{title:"Block Explorers",permalink:"/docs/DeveloperResources/Block Explorers"}},c={},l=[];function u(e){const t={a:"a",h1:"h1",img:"img",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"faucets",children:"Faucets"}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites."}),"\n",(0,n.jsx)(t.p,{children:"If you want to interact with the Dapps on Bitlayer Testnet, your first stop is going to be to a \u201cfaucet\u201d to fill up your \u201ctank\u201d."}),"\n",(0,n.jsxs)(t.p,{children:["Here is a faucet directly distributes Bitlayer Testnet tokens: ",(0,n.jsx)(t.a,{href:"https://www.bitlayer.org/faucet",children:"https://www.bitlayer.org/faucet"})]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"faucet",src:s(2607).A+"",width:"1898",height:"878"})}),"\n",(0,n.jsxs)(t.p,{children:["It may take a few seconds for them to appear, but you can check the status by looking for a transaction for your address in ",(0,n.jsx)(t.a,{href:"https://testnet-scan.bitlayer.org",children:"Bitlayer Explorer"}),"."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"testnetscan",src:s(9505).A+"",width:"1893",height:"874"})}),"\n",(0,n.jsx)(t.p,{children:"This faucet allows developers to request 0.05 BTC test tokens for use in development and testing. You can obtain Bitlayer Testnet tokens every 24 hours for development and the testnet token has no financial value and cannot be traded at a real price."})]})}function p(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},2607:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/faucet-f921fea2f765c02b01dc542378cce996.png"},9505:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/testnetscan-5b72e56f2a65b566954806c56049e80e.png"},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var n=s(6540);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/41756ce8.096e4a09.js b/assets/js/41756ce8.096e4a09.js new file mode 100644 index 00000000..e5d6a93b --- /dev/null +++ b/assets/js/41756ce8.096e4a09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9616],{5205:e=>{e.exports=JSON.parse('{"tags":[{"label":"Hello Bitlayer","permalink":"/blog/tags/hello-bitlayer","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/4608.8a1af423.js b/assets/js/4608.8a1af423.js deleted file mode 100644 index 9950c250..00000000 --- a/assets/js/4608.8a1af423.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4608],{4608:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var a=n(7294),o=n(2434),l=n(5999);function i(){return a.createElement(o.Z,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})},a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/487d435a.d6eb9896.js b/assets/js/487d435a.d6eb9896.js new file mode 100644 index 00000000..f9dc33fc --- /dev/null +++ b/assets/js/487d435a.d6eb9896.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8379],{3840:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Bitlayer Architecture","slug":"/category/bitlayer-architecture","permalink":"/docs/category/bitlayer-architecture","sidebar":"docs","navigation":{"previous":{"title":"Peg Tokens","permalink":"/docs/BitlayerNetwork/PegTokens"},"next":{"title":"Overview of Bitlayer\'s Design","permalink":"/docs/BitlayerArchitecture/BitlayerDesign"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/489.ca291d9d.js b/assets/js/489.ca291d9d.js new file mode 100644 index 00000000..5eb01674 --- /dev/null +++ b/assets/js/489.ca291d9d.js @@ -0,0 +1,2 @@ +/*! For license information please see 489.ca291d9d.js.LICENSE.txt */ +(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[489],{489:(t,e,n)=>{"use strict";t.exports=n(810)},2542:(t,e,n)=>{"use strict";var i=n(6573),s={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(s.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(s.input,{marginTop:"-1px"}),t.exports=s},897:(t,e,n)=>{"use strict";var i="aaDataset",s="aaValue",r="aaDatum",o=n(6573),a=n(1348),u=n(9272),c=n(2542),l=n(4436);function h(t){var e;(t=t||{}).templates=t.templates||{},t.source||o.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&o.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?o.getUniqueId():t.name,this.source=t.source,this.displayFn=function(t){return t=t||"value",o.isFunction(t)?t:e;function e(e){return e[t]}}(t.display||t.displayKey),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=function(t,e){return{empty:t.empty&&o.templatify(t.empty),header:t.header&&o.templatify(t.header),footer:t.footer&&o.templatify(t.footer),suggestion:t.suggestion||n};function n(t){return"

"+e(t)+"

"}}(t.templates,this.displayFn),this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(n+"-"+this.name).length>0?a.element(t.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(t){return a.element(t).data(i)},h.extractValue=function(t){return a.element(t).data(s)},h.extractDatum=function(t){var e=a.element(t).data(r);return"string"==typeof e&&(e=JSON.parse(e)),e},o.mixin(h.prototype,l,{_render:function(t,e){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),c.templates.empty.apply(this,e)}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html(function(){var t,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=a.element(p).css(this.css.suggestions),n=o.map(e,f),t.append.apply(t,n),t;function f(t){var e,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(e=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[t].concat(l)))).data(i,c.name),e.data(s,c.displayFn(t)||void 0),e.data(r,JSON.stringify(t)),e.children().each((function(){a.element(this).css(h.css.suggestionChild)})),e}}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.header.apply(this,e)}function p(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(t,e.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=h},1540:(t,e,n)=>{"use strict";var i=n(6573),s=n(1348),r=n(4436),o=n(897),a=n(2542);function u(t){var e,n,r,o=this;(t=t||{}).menu||i.error("menu is required"),i.isArray(t.datasets)||i.isObject(t.datasets)||i.error("1 or more datasets required"),t.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=i.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=i.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),r=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,r).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=i.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=i.templatify(t.templates.empty),this.$empty=s.element('
'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(i.mixin({$menu:t,cssClasses:n},e))}(o.$menu,e,t.cssClasses)})),i.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&o.$menu.append(e),t.onSync("rendered",o._onRendered,o)})),t.templates&&t.templates.footer&&(this.templates.footer=i.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,r,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);if(!e.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){if(t.relatedTarget&&s.element(t.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){if(this.isEmpty=i.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,i,s;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=e.index(n)+t)+1)%(e.length+1)-1)?(i<-1&&(i=e.length-1),this._setCursor(s=e.eq(i),!0),this._ensureVisible(s)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,i,s;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),i=this.$menu.scrollTop(),s=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(i+e):s{"use strict";var i=n(6573),s=n(1348);function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=s.element(t.el)}i.mixin(r.prototype,{trigger:function(t,e,n,s){var r=i.Event("autocomplete:"+t);return this.$el.trigger(r,[e,n,s]),r}}),t.exports=r},4436:(t,e,n)=>{"use strict";var i=n(874),s=/\s+/;function r(t,e,n,i){var r;if(!n)return this;for(e=e.split(s),n=i?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function o(t,e,n){return function(){for(var i,s=0,r=t.length;!i&&s{"use strict";t.exports={wrapper:'',dropdown:'',dataset:'
',suggestions:'',suggestion:'
'}},9629:(t,e,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var s=n(6573),r=n(1348),o=n(4436);function a(t){var e,n,o,a,u,c=this;(t=t||{}).input||s.error("input is missing"),e=s.bind(this._onBlur,this),n=s.bind(this._onFocus,this),o=s.bind(this._onKeydown,this),a=s.bind(this._onInput,this),this.$hint=r.element(t.hint),this.$input=r.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=s.noop),s.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){i[t.which||t.keyCode]||s.defer(s.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,r.element('').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},s.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=i[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,i,s;switch(t){case"tab":i=this.getHint(),s=this.getInputValue(),n=i&&i!==s&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;if("tab"===t)n=!u(e);else n=!0;return n},_checkInputValue:function(){var t,e,n,i,s;t=this.getInputValue(),i=t,s=this.query,n=!(!(e=a.normalizeQuery(i)===a.normalizeQuery(s))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,s.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},7360:(t,e,n)=>{"use strict";var i="aaAttrs",s=n(6573),r=n(1348),o=n(2324),a=n(9629),u=n(1540),c=n(9272),l=n(2542);function h(t){var e,n;if((t=t||{}).input||s.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=s.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=s.mixin({},l,t.appendTo?l.appendTo:{}),this.cssClasses=t.cssClasses=s.mixin({},l.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=s.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",s.getUniqueId()].join("-");var a=function(t){var e,n,o,a;e=r.element(t.input),n=r.element(c.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=r.element(u).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(s.templatify(t.templates.dropdownMenu)());a=e.clone().css(t.css.hint).css(function(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}(e)),a.val("").addClass(s.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();e.data(i,{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(s.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(l){}return n=t.appendTo?n.appendTo(r.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent(),n.prepend(t.hint?a:null).append(o),{wrapper:n,input:e,hint:a,menu:o}}(t);this.$node=a.wrapper;var u=this.$input=a.input;e=a.menu,n=a.hint,t.dropdownMenuContainer&&r.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),u.on("blur.aa",(function(t){var n=document.activeElement;s.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),s.defer((function(){u.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}s.mixin(h.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];s.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),r.element(document).keydown((function(t){var i=t.target||t.srcElement,s=i.tagName;if(!i.isContentEditable&&"INPUT"!==s&&"SELECT"!==s&&"TEXTAREA"!==s){var r=t.which||t.keyCode;-1!==n.indexOf(r)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var i=t.left-e.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var s={selectionMethod:"enterKey"};n?(this._select(n,s),e.preventDefault()):this.autoselect&&i&&(this._select(i,s),e.preventDefault())},_onTabKeyed:function(t,e){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,r;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=a.normalizeQuery(e),i=s.escapeRegExChars(n),(r=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+r[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,i,s;e=this.input.getHint(),n=this.input.getQuery(),i=t||this.input.isCursorAtEnd(),e&&n!==e&&i&&((s=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(s.value),this.eventBus.trigger("autocompleted",s.raw,s.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),s.defer(s.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=s.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(t,e){var n=t.find(s.className(e.prefix,e.input));s.each(n.data(i),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(s.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(i);t.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(6353),t.exports=h},1348:t=>{"use strict";t.exports={element:null}},9715:t=>{"use strict";t.exports=function(t){var e=t.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},6573:(t,e,n)=>{"use strict";var i,s=n(8937),r=n(1348);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,i){t&&(n.isArray(t)?e[i]=[].concat(t):n.isObject(t)&&(e[i]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(i,s){n&&(n=e.call(null,i,s,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(i,s){if(e.call(null,i,s,t))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(t){if(this.isFunction(t))return t;var e=r.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return n?t+e:"."+s(t+e,{isIdentifier:!0})},escapeHighlightedString:function(t,e,n){e=e||"";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var r=document.createElement("div");return r.appendChild(document.createTextNode(t)),r.innerHTML.replace(RegExp(o(i.innerHTML),"g"),e).replace(RegExp(o(s.innerHTML),"g"),n)}}},6903:(t,e,n)=>{"use strict";var i=n(6573),s=n(2281),r=n(9715);var o,a,u=(o=[],a=window.Promise.resolve(),function(t,e){return function(n,s){(function(t,e){return window.Promise.resolve().then((function(){return o.length&&(a=t.search(o),o=[]),a})).then((function(t){if(t)return t.results[e]}))})(t.as,o.push({indexName:t.indexName,query:n,params:e})-1).then((function(t){t&&s(t.hits,t)})).catch((function(t){i.error(t.message)}))}});t.exports=function(t,e){var n=r(t.as._ua);if(n&&n[0]>=3&&n[1]>20){var i="autocomplete.js "+s;-1===t.as._ua.indexOf(i)&&(t.as._ua+="; "+i)}return u(t,e)}},6353:(t,e,n)=>{"use strict";t.exports={hits:n(6903),popularIn:n(6839)}},6839:(t,e,n)=>{"use strict";var i=n(6573),s=n(2281),r=n(9715);t.exports=function(t,e,n,o){var a=r(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+s),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){t.search(a,e,(function(t,a){if(t)i.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=r(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(e.additionalUA="autocomplete.js "+s),void c.search(u(h),p,(function(t,e){if(t)i.error(t.message);else{var n=[];if(o.includeAll){var s=o.allTitle||"All departments";n.push(i.mixin({facet:{value:s,count:e.nbHits}},i.cloneDeep(h)))}i.each(e.facets,(function(t,e){i.each(t,(function(t,s){n.push(i.mixin({facet:{facet:e,value:s,count:t}},i.cloneDeep(h)))}))}));for(var r=1;r{"use strict";var i=n(9539);n(1348).element=i;var s=n(6573);s.isArray=i.isArray,s.isFunction=i.isFunction,s.isObject=i.isPlainObject,s.bind=i.proxy,s.each=function(t,e){i.each(t,(function(t,n){return e(n,t)}))},s.map=i.map,s.mixin=i.extend,s.Event=i.Event;var r="aaAutocomplete",o=n(7360),a=n(2324);function u(t,e,n,u){n=s.isArray(n)?n:[].slice.call(arguments,2);var c=i(t).each((function(t,s){var c=i(s),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth,ariaLabel:e.ariaLabel||s.getAttribute("aria-label")});c.data(r,h)}));return c.autocomplete={},s.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){c.autocomplete[t]=function(){var e,n=arguments;return c.each((function(s,o){var a=i(o).data(r);e=a[t].apply(a,n)})),e}})),c}u.sources=o.sources,u.escapeHighlightedString=s.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},t.exports=u},2281:t=>{t.exports="0.38.1"},9539:t=>{var e;e=window,t.exports=function(t){var e,n,i=function(){var e,n,i,s,r,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=t.document,p={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],C=["after","prepend","before","append"],x=h.createElement("table"),_=h.createElement("tr"),S={tr:h.createElement("tbody"),tbody:x,thead:x,tfoot:x,td:_,th:_,"*":h.createElement("div")},E=/complete|loaded|interactive/,A=/^[\w-]*$/,$={},T=$.toString,O={},D=h.createElement("div"),N={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},k=Array.isArray||function(t){return t instanceof Array};function I(t){return null==t?String(t):$[T.call(t)]||"object"}function P(t){return"function"==I(t)}function L(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function F(t){return"object"==I(t)}function R(t){return F(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,n=i.type(t);return"function"!=n&&!L(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function V(t){return c.call(t,(function(t){return null!=t}))}function H(t){return t.length>0?i.fn.concat.apply([],t):t}function B(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function K(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function j(t,e){return"number"!=typeof e||d[B(t)]?e:e+"px"}function z(t){var e,n;return p[t]||(e=h.createElement(t),h.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),p[t]=n),p[t]}function U(t){return"children"in t?l.call(t.children):i.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function Q(t,e){var n,i=t?t.length:0;for(n=0;n")),n===e&&(n=g.test(t)&&RegExp.$1),n in S||(n="*"),(a=S[n]).innerHTML=""+t,r=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(s)&&(o=i(r),i.each(s,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),r},O.Z=function(t,e){return new Q(t,e)},O.isZ=function(t){return t instanceof O.Z},O.init=function(t,n){var s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))s=O.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}else{if(P(t))return i(h).ready(t);if(O.isZ(t))return t;if(k(t))s=V(t);else if(F(t))s=[t],t=null;else if(g.test(t))s=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}}return O.Z(s,t)},(i=function(t,e){return O.init(t,e)}).extend=function(t){var e,n=l.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){W(t,n,e)})),t},O.qsa=function(t,e){var n,i="#"==e[0],s=!i&&"."==e[0],r=i||s?e.slice(1):e,o=A.test(r);return t.getElementById&&o&&i?(n=t.getElementById(r))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:l.call(o&&!i&&t.getElementsByClassName?s?t.getElementsByClassName(r):t.getElementsByTagName(e):t.querySelectorAll(e))},i.contains=h.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},i.type=I,i.isFunction=P,i.isWindow=L,i.isArray=k,i.isPlainObject=R,i.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},i.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},i.inArray=function(t,e,n){return a.indexOf.call(e,t,n)},i.camelCase=r,i.trim=function(t){return null==t?"":String.prototype.trim.call(t)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(t,e){var n,i,s,r=[];if(q(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return a.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return P(t)?this.not(this.not(t)):i(c.call(this,(function(e){return O.matches(e,t)})))},add:function(t,e){return i(o(this.concat(i(t,e))))},is:function(t){return this.length>0&&O.matches(this[0],t)},not:function(t){var n=[];if(P(t)&&t.call!==e)this.each((function(e){t.call(this,e)||n.push(this)}));else{var s="string"==typeof t?this.filter(t):q(t)&&P(t.item)?l.call(t):i(t);this.forEach((function(t){s.indexOf(t)<0&&n.push(t)}))}return i(n)},has:function(t){return this.filter((function(){return F(t)?i.contains(this,t):i(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!F(t)?t:i(t)},last:function(){var t=this[this.length-1];return t&&!F(t)?t:i(t)},find:function(t){var e=this;return t?"object"==typeof t?i(t).filter((function(){var t=this;return a.some.call(e,(function(e){return i.contains(e,t)}))})):1==this.length?i(O.qsa(this[0],t)):this.map((function(){return O.qsa(this,t)})):i()},closest:function(t,e){var n=[],s="object"==typeof t&&i(t);return this.each((function(i,r){for(;r&&!(s?s.indexOf(r)>=0:O.matches(r,t));)r=r!==e&&!M(r)&&r.parentNode;r&&n.indexOf(r)<0&&n.push(r)})),i(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=i.map(n,(function(t){if((t=t.parentNode)&&!M(t)&&e.indexOf(t)<0)return e.push(t),t}));return Z(e,t)},parent:function(t){return Z(o(this.pluck("parentNode")),t)},children:function(t){return Z(this.map((function(){return U(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(t){return Z(this.map((function(t,e){return c.call(U(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return i.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=P(t);if(this[0]&&!e)var n=i(t).get(0),s=n.parentNode||this.length>1;return this.each((function(r){i(this).wrapAll(e?t.call(this,r):s?n.cloneNode(!0):n)}))},wrapAll:function(t){if(this[0]){var e;for(i(this[0]).before(t=i(t));(e=t.children()).length;)t=e.first();i(t).append(this)}return this},wrapInner:function(t){var e=P(t);return this.each((function(n){var s=i(this),r=s.contents(),o=e?t.call(this,n):t;r.length?r.wrapAll(o):s.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var n=i(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()}))},prev:function(t){return i(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return i(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var n=this.innerHTML;i(this).empty().append(X(this,t,e,n))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=X(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var s;return"string"!=typeof t||1 in arguments?this.each((function(e){if(1===this.nodeType)if(F(t))for(n in t)G(this,n,t[n]);else G(this,t,X(this,i,e,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(s=this[0].getAttribute(t))?s:e},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){G(this,t)}),this)}))},prop:function(t,e){return t=N[t]||t,1 in arguments?this.each((function(n){this[t]=X(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=N[t]||t,this.each((function(){delete this[t]}))},data:function(t,n){var i="data-"+t.replace(w,"-$1").toLowerCase(),s=1 in arguments?this.attr(i,n):this.attr(i);return null!==s?Y(s):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=X(this,t,e,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var n=i(this),s=X(this,e,t,n.offset()),r=n.offsetParent().offset(),o={top:s.top-r.top,left:s.left-r.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var s=this[0];if("string"==typeof t){if(!s)return;return s.style[r(t)]||getComputedStyle(s,"").getPropertyValue(t)}if(k(t)){if(!s)return;var o={},a=getComputedStyle(s,"");return i.each(t,(function(t,e){o[e]=s.style[r(e)]||a.getPropertyValue(e)})),o}}var u="";if("string"==I(t))e||0===e?u=B(t)+":"+j(t,e):this.each((function(){this.style.removeProperty(B(t))}));else for(n in t)t[n]||0===t[n]?u+=B(n)+":"+j(n,t[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(i(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&a.some.call(this,(function(t){return this.test(J(t))}),K(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){s=[];var n=J(this);X(this,t,e,n).split(/\s+/g).forEach((function(t){i(this).hasClass(t)||s.push(t)}),this),s.length&&J(this,n+(n?" ":"")+s.join(" "))}})):this},removeClass:function(t){return this.each((function(n){if("className"in this){if(t===e)return J(this,"");s=J(this),X(this,t,n,s).split(/\s+/g).forEach((function(t){s=s.replace(K(t)," ")})),J(this,s.trim())}}))},toggleClass:function(t,n){return t?this.each((function(s){var r=i(this);X(this,t,s,J(this)).split(/\s+/g).forEach((function(t){(n===e?!r.hasClass(t):n)?r.addClass(t):r.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),s=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(i(t).css("margin-top"))||0,n.left-=parseFloat(i(t).css("margin-left"))||0,s.top+=parseFloat(i(e[0]).css("border-top-width"))||0,s.left+=parseFloat(i(e[0]).css("border-left-width"))||0,{top:n.top-s.top,left:n.left-s.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||h.body;t&&!y.test(t.nodeName)&&"static"==i(t).css("position");)t=t.offsetParent;return t}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(t){var n=t.replace(/./,(function(t){return t[0].toUpperCase()}));i.fn[t]=function(s){var r,o=this[0];return s===e?L(o)?o["inner"+n]:M(o)?o.documentElement["scroll"+n]:(r=this.offset())&&r[t]:this.each((function(e){(o=i(this)).css(t,X(this,s,e,o[t]()))}))}})),C.forEach((function(n,s){var r=s%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(t){var s=[];return"array"==(n=I(t))?(t.forEach((function(t){return t.nodeType!==e?s.push(t):i.zepto.isZ(t)?s=s.concat(t.get()):void(s=s.concat(O.fragment(t)))})),s):"object"==n||null==t?t:O.fragment(t)})),u=this.length>1;return a.length<1?this:this.each((function(e,n){o=r?n:n.parentNode,n=0==s?n.nextSibling:1==s?n.firstChild:2==s?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&tt(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},i.fn[r?n+"To":"insert"+(s?"Before":"After")]=function(t){return i(t)[n](this),this}})),O.Z.prototype=Q.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(e){var n,i=1,s=Array.prototype.slice,r=e.isFunction,o=function(t){return"string"==typeof t},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(t){return t._zid||(t._zid=i++)}function f(t,e,n,i){if((e=d(e)).ns)var s=g(e.ns);return(a[p(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||s.test(t.ns))&&(!n||p(t.fn)===p(n))&&(!i||t.sel==i)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function g(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!c&&t.e in l||!!e}function v(t){return h[t]||c&&l[t]||t}function y(t,i,s,r,o,u,c){var l=p(t),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return e(document).ready(s);var a=d(i);a.fn=s,a.sel=o,a.e in h&&(s=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||s;a.proxy=function(e){if(!(e=S(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");i&&!i.writable||(e.data=r)}catch(e){}var s=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===s&&(e.preventDefault(),e.stopPropagation()),s}},a.i=f.length,f.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,m(a,c))}))}function w(t,e,n,i,s){var r=p(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,i).forEach((function(e){delete a[r][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,m(e,s))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:w},e.proxy=function(t,n){var i=2 in arguments&&s.call(arguments,2);if(r(t)){var a=function(){return t.apply(n,i?i.concat(s.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))return i?(i.unshift(t[n],t),e.proxy.apply(null,i)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var b=function(){return!0},C=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function S(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(_,(function(e,n){var s=i[e];t[e]=function(){return this[n]=b,s&&s.apply(i,arguments)},t[n]=C}));try{t.timeStamp||(t.timeStamp=Date.now())}catch(s){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=b)}return t}function E(t){var e,i={originalEvent:t};for(e in t)x.test(e)||t[e]===n||(i[e]=t[e]);return S(i,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,(function(t,e){p.on(t,i,a,e,c)})),p):(o(i)||r(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=C),p.each((function(n,r){c&&(l=function(t){return w(r,t.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,r).get(0);if(o&&o!==r)return n=e.extend(E(t),{currentTarget:o,liveFired:r}),(l||u).apply(o,[n].concat(s.call(arguments,1)))}),y(r,t,u,a,i,h||l)})))},e.fn.off=function(t,i,s){var a=this;return t&&!o(t)?(e.each(t,(function(t,e){a.off(t,i,e)})),a):(o(i)||r(s)||!1===s||(s=i,i=n),!1===s&&(s=C),a.each((function(){w(this,t,s,i)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):S(t))._args=n,this.each((function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var i,s;return this.each((function(r,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(f(a,t.type||t),(function(t,e){if(s=e.proxy(i),i.isImmediatePropagationStopped())return!1}))})),s},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(u[t]||"Events"),i=!0;if(e)for(var s in e)"bubbles"==s?i=!!e[s]:n[s]=e[s];return n.initEvent(t,i,!0),S(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,i=t.camelCase,s=t.expando="Zepto"+ +new Date,r=[];function o(r,o){var u=r[s],c=u&&e[u];if(void 0===o)return c||a(r);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(t(r),o)}function a(n,r,o){var a=n[s]||(n[s]=++t.uuid),c=e[a]||(e[a]=u(n));return void 0!==r&&(c[i(r)]=o),c}function u(e){var n={};return t.each(e.attributes||r,(function(e,s){0==s.name.indexOf("data-")&&(n[i(s.name.replace("data-",""))]=t.zepto.deserializeValue(s.value))})),n}t.fn.data=function(e,n){return void 0===n?t.isPlainObject(e)?this.each((function(n,i){t.each(e,(function(t,e){a(i,t,e)}))})):0 in this?o(this[0],e):void 0:this.each((function(){a(this,e,n)}))},t.data=function(e,n,i){return t(e).data(n,i)},t.hasData=function(n){var i=n[s],r=i&&e[i];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var r=this[s],o=r&&e[r];o&&t.each(n||o,(function(t){delete o[n?i(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(i),i}(e)},8937:t=>{"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,r=function t(r,o){"single"!=(o=function(t,n){if(!t)return n;var i={};for(var s in n)i[s]=e.call(t,s)?t[s]:n[s];return i}(o,t.options)).quotes&&"double"!=o.quotes&&(o.quotes="single");for(var a="double"==o.quotes?'"':"'",u=o.isIdentifier,c=r.charAt(0),l="",h=0,p=r.length;h126){if(d>=55296&&d<=56319&&h{"use strict";var i,s,r,o=[n(5741),n(1856),n(1015),n(6486),n(5723),n(6345)],a=-1,u=[],c=!1;function l(){i&&s&&(i=!1,s.length?u=s.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var t=u.length,e=setTimeout(l);t;){for(s=u,u=[];s&&++a1)for(var n=1;n{"use strict";e.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},e.install=function(t){var e=new n.g.MessageChannel;return e.port1.onmessage=t,function(){e.port2.postMessage(0)}}},1015:(t,e,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;e.test=function(){return i},e.install=function(t){var e=0,s=new i(t),r=n.g.document.createTextNode("");return s.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}},1856:(t,e,n)=>{"use strict";e.test=function(){return"function"==typeof n.g.queueMicrotask},e.install=function(t){return function(){n.g.queueMicrotask(t)}}},5723:(t,e,n)=>{"use strict";e.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},e.install=function(t){return function(){var e=n.g.document.createElement("script");return e.onreadystatechange=function(){t(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},n.g.document.documentElement.appendChild(e),t}}},6345:(t,e)=>{"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}}}]); \ No newline at end of file diff --git a/assets/js/489.ca291d9d.js.LICENSE.txt b/assets/js/489.ca291d9d.js.LICENSE.txt new file mode 100644 index 00000000..4f7ccd8a --- /dev/null +++ b/assets/js/489.ca291d9d.js.LICENSE.txt @@ -0,0 +1 @@ +/*! https://mths.be/cssesc v3.0.0 by @mathias */ diff --git a/assets/js/494fd248.90f18b99.js b/assets/js/494fd248.90f18b99.js new file mode 100644 index 00000000..3f4a43df --- /dev/null +++ b/assets/js/494fd248.90f18b99.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5338],{3322:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>u,toc:()=>c});var r=t(4848),a=t(8453),s=t(1470),i=t(9365);const o={sidebar_position:2,title:"Contracts"},l=void 0,u={id:"Bitlayer Scan APIs/Contracts",title:"Contracts",description:"Verify the contract through hardhat verify",source:"@site/docs/Bitlayer Scan APIs/Contracts.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,title:"Contracts"},sidebar:"docs",previous:{title:"Accounts",permalink:"/docs/Bitlayer Scan APIs/Accounts"},next:{title:"Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions"}},d={},c=[{value:"Verify the contract through hardhat verify",id:"verify-the-contract-through-hardhat-verify",level:2},{value:"An example of Hardhat Project Configuration and Contract Verification",id:"an-example-of-hardhat-project-configuration-and-contract-verification",level:3},{value:"The configuration in the hardhat.config.js file is as follows:",id:"the-configuration-in-the-hardhatconfigjs-file-is-as-follows",level:3},{value:"Steps to Verify a Contract\uff1a",id:"steps-to-verify-a-contract",level:3},{value:"Contract-related APls:",id:"contract-related-apls",level:2},{value:"Get Contract ABI for Verified Contract Source Codes",id:"get-contract-abi-for-verified-contract-source-codes",level:3},{value:"Get Contract Source Code for Verified Contract Source Codes",id:"get-contract-source-code-for-verified-contract-source-codes",level:3},{value:"Get Contract Creator and Creation Tx Hash",id:"get-contract-creator-and-creation-tx-hash",level:3},{value:"Verify Source Code (beta)",id:"verify-source-code-beta",level:3},{value:"Source Code Submission Gist (returns a guid as part of the result upon success):",id:"source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success",level:3},{value:"Check Source code verification submission status:",id:"check-source-code-verification-submission-status",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"verify-the-contract-through-hardhat-verify",children:"Verify the contract through hardhat verify"}),"\n",(0,r.jsx)(n.p,{children:"The official recommendation of Hardhat is to use hardhat-verify along with hardhat-toolbox for custom browser API configurations and contract verification."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"Please use hardhat-verify for contract verification , hardhat-etherscan is not recommended."})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.a,{href:"https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify",children:"https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify"})}),"\n",(0,r.jsx)(n.h3,{id:"an-example-of-hardhat-project-configuration-and-contract-verification",children:"An example of Hardhat Project Configuration and Contract Verification"}),"\n",(0,r.jsx)(n.p,{children:"The package.json file needs to add the following dependencies:"}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"Please use hardhat-verify for contract verification, hardhat-etherscan is not recommended."})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'// Adjust the version according to needs\r\n"@nomicfoundation/hardhat-toolbox": "^4.0.0",\r\n"@nomicfoundation/hardhat-verify": "^2.0.5",\r\n"hardhat": "^2.19.4"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Execute the npm install command to install dependencies."}),"\n",(0,r.jsx)(n.h3,{id:"the-configuration-in-the-hardhatconfigjs-file-is-as-follows",children:"The configuration in the hardhat.config.js file is as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'require("@nomicfoundation/hardhat-toolbox"); // The toolbox library supports customChains configuration.\r\nrequire("@nomicfoundation/hardhat-verify");\r\n\r\nmodule.exports = {\r\n solidity: {\r\n version: "0.8.23", // Configure the solidity version for your own project, noting that the solidity version for deploying and verifying contracts should be the same.\r\n settings: {\r\n // Configure this part according to needs.\r\n optimizer:{\r\n enabled: true,\r\n runs: 200,\r\n }\r\n }\r\n },\r\n networks: {\r\n bitlayertestnet: {\r\n url: \'https://testnet-rpc.bitlayer.org\', \r\n chainId: 200810,\r\n accounts: ["private key of your account"]\r\n },\r\n bitlayer: {\r\n url: \'https://rpc.bitlayer.org\',\r\n chainId: 200901,\r\n accounts: ["private key of your account"]\r\n },\r\n },\r\n etherscan: {\r\n apiKey: {\r\n // An API key needs to be written as the hardhat-verify plugin will require it, and the verification will fail if it is not provided.\r\n // The current bitlayer browser has not yet enabled API key verification, so you can write any random string for now.\r\n bitlayertestnet: "1234",\r\n bitlayer: "1234"\r\n },\r\n customChains: [\r\n {\r\n network: "bitlayertestnet",\r\n chainId: 200810,\r\n urls: {\r\n apiURL: "https://api-testnet.btrscan.com/scan/api",\r\n browserURL: "https://testnet.btrscan.com/"\r\n }\r\n },\r\n {\r\n network: "bitlayer",\r\n chainId: 200901,\r\n urls: {\r\n apiURL: "https://api.btrscan.com/scan/api",\r\n browserURL: "https://www.btrscan.com/"\r\n }\r\n }\r\n ]\r\n }\r\n};\n'})}),"\n",(0,r.jsx)(n.h3,{id:"steps-to-verify-a-contract",children:"Steps to Verify a Contract\uff1a"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Contract compilation requires compiling the contract according to the configuration parameters used during deployment (such as the Solidity version, whether the optimizer is enabled, etc.), otherwise the compiled bytecode will not match the bytecode of the contract on the blockchain, and verification will not be possible."}),"\n",(0,r.jsx)(n.li,{children:"When verifying a contract, you need to specify the network, contract path, contract name, etc. If the contract constructor has parameters, you need to include the constructor arguments that were passed in during the deployment of the contract. Provide as many as there are, and if there are no parameters, you don't need to write \"constructorArguments\". Here's an example:"}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"npx hardhat verify --network bitlayer --contract contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy ${contract_address} constructorArguments1 constructorArguments2 constructorArguments3...\n"})}),"\n",(0,r.jsxs)(n.ol,{start:"3",children:["\n",(0,r.jsx)(n.li,{children:"Regarding passing constructor arguments, if the constructor arguments are of complex types, such as address[] or custom structs, it can be inconvenient to pass them through the command line. Instead, you can use --constructor-args arguments.js, where arguments.js exports the parameters in order."}),"\n"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Example of an arguments.js file"}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'module.exports = [\r\n "arg0",\r\n "arg1"\r\n];\n'})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Example of an arguments.js file for complex types"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"For example, the contract is defined with the following constructor:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"struct Point {\r\n uint x;\r\n uint y;\r\n}\r\n\r\ncontract Foo {\r\n constructor (uint x, string s, Point memory point, bytes b) { ... }\r\n}\n"})}),"\n",(0,r.jsx)(n.p,{children:"Then the arguments.js file can be written like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'module.exports = [\r\n 50,\r\n "a string argument",\r\n {\r\n x: 10,\r\n y: 5,\r\n },\r\n // bytes have to be 0x-prefixed\r\n "0xabcdef",\r\n];\n'})}),"\n",(0,r.jsx)(n.p,{children:"An example of using arguments.js file to pass arguments and execute the verify command is as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"npx hardhat verify --constructor-args arguments.js --contract contracts/path/path/SimpleContract.sol:SimpleContract DEPLOYED_CONTRACT_ADDRESS\n"})}),"\n",(0,r.jsx)(n.h2,{id:"contract-related-apls",children:"Contract-related APls:"}),"\n",(0,r.jsx)(n.h3,{id:"get-contract-abi-for-verified-contract-source-codes",children:"Get Contract ABI for Verified Contract Source Codes"}),"\n",(0,r.jsx)(n.p,{children:"Returns the Contract Application Binary Interface ( ABI ) of a verified smart contract."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=contract\r\n&action=getabi\r\n&address=0xc9121e476155ebf0b794b7b351808af3787e727d\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Try this endpoint in your ",(0,r.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsxs)(i.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.p,{children:"Query Parameters"}),(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Parameter"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"address"}),(0,r.jsxs)(n.td,{children:["the ",(0,r.jsx)(n.code,{children:"contract address"})," that has a verified source code"]})]})})]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'var Web3 = require(\'web3\');\r\nvar web3 = new Web3(new Web3.providers.HttpProvider());\r\nvar version = web3.version.api;\r\n\r\n$.getJSON(\'https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d\', function (data) {\r\n\u2003var contractABI = "";\r\n\u2003\u2003contractABI = JSON.parse(data.result);\r\n\u2003if (contractABI != \'\'){\r\n\u2003\u2003var MyContract = web3.eth.contract(contractABI);\r\n\u2003\u2003var myContractInstance = MyContract.at("0xc9121e476155ebf0b794b7b351808af3787e727d");\r\n\u2003\u2003var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");\r\n\u2003\u2003console.log("result1 : " + result);\r\n\u2003\u2003var result = myContractInstance.members(1);\r\n\u2003\u2003console.log("result2 : " + result);\r\n\u2003} else {\r\n\u2003\u2003console.log("Error");\r\n\u2003}\r\n});\n'})})]}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"Sample Response"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\r\n "status": 1,\r\n "message": "OK",\r\n "result": "[{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"name_\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"indexed\\":false,\\"name\\":\\"symbol_\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint8\\",\\"type\\":\\"uint8\\"}],\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"subtractedValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"decreaseAllowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"addedValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"increaseAllowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"name\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"from\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]"\r\n}\n'})})]})]}),"\n",(0,r.jsx)(n.h3,{id:"get-contract-source-code-for-verified-contract-source-codes",children:"Get Contract Source Code for Verified Contract Source Codes"}),"\n",(0,r.jsx)(n.p,{children:"Returns the source code of a verified smart contract."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=contract\r\n&action=getsourcecode\r\n&address=0xc9121e476155ebf0b794b7b351808af3787e727d\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Try this endpoint in your ",(0,r.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=contract&action=getsourcecode&address=0xc9121e476155ebf0b794b7b351808af3787e727d",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsxs)(i.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(n.p,{children:"Query Parameters"}),(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Parameter"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"address"}),(0,r.jsxs)(n.td,{children:["the ",(0,r.jsx)(n.code,{children:"contract address"})," that has a verified source code"]})]})})]})]}),(0,r.jsxs)(i.A,{value:"response",label:"Response",children:[(0,r.jsx)(n.p,{children:"sample response"}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:' { \r\n "status":"1",\r\n "message":"OK",\r\n "result":[\r\n "proxy": "",\r\n "evmversion": "default",\r\n "abi": "[{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"contractName\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"target\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"AddressEmptyCode\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"AddressInsufficientBalance\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"ECDSAInvalidSignature\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"length\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ECDSAInvalidSignatureLength\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"s\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"ECDSAInvalidSignatureS\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"FailedInnerCall\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"currentNonce\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"InvalidAccountNonce\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"InvalidShortString\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"token\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"SafeERC20FailedOperation\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"str\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"name\\":\\"StringTooLong\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"EIP712DomainChanged\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"approver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountIn\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"amountOut\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"deadline\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"PermitAndSwap\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"sender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Received\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"SetMaxOutput\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOp\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"on\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"SetOperator\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"valut\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"status\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"SetVaults\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOwner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"TransferOwnership\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Withdrawn\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"}],\\"inputs\\":[],\\"name\\":\\"DOMAIN_SEPARATOR\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[],\\"name\\":\\"MAX_BTC_AMOUNT\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"fields\\",\\"internalType\\":\\"bytes1\\",\\"type\\":\\"bytes1\\"},{\\"name\\":\\"name\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"name\\":\\"version\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"name\\":\\"chainId\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"verifyingContract\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"name\\":\\"salt\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"extensions\\",\\"internalType\\":\\"uint256[]\\",\\"type\\":\\"uint256[]\\"}],\\"inputs\\":[],\\"name\\":\\"eip712Domain\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"name\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"_owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"nonces\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"operators\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"inputs\\":[],\\"name\\":\\"owner\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"approver\\",\\"internalType\\":\\"address payable\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountIn\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"deadline\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"price\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"amountOut\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"permitSig\\",\\"internalType\\":\\"bytes\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"swapSig\\",\\"internalType\\":\\"bytes\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"permitAndSwap\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMaxOutput\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOp\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_on\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"setOperator\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"valut\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"status\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"setVaults\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOwner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"transferOwnership\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"vaults\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address payable\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"withdrawBTC\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"withdrawERC20\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"receive\\"}]",\r\n "optimizationUsed": "0",\r\n "runs": "200",\r\n "licenseType": "None",\r\n "compilerVersion": "v0.8.20+commit.a1b79de6",\r\n "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d546f6b656e45786368616e676500000000000000000000000000000000000000",\r\n "swarmSource": "",\r\n "library": "",\r\n "implementation": "",\r\n "contractName": "TokenExchange",\r\n "SourceCode": "{\\"language\\":\\"Solidity\\",\\"sources\\":{\\"@openzeppelin/contracts/interfaces/IERC5267.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\ninterface IERC5267 {\\\\n /**\\\\n * @dev MAY be emitted to signal that the domain could have changed.\\\\n */\\\\n event EIP712DomainChanged();\\\\n\\\\n /**\\\\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\\\n * signature.\\\\n */\\\\n function eip712Domain()\\\\n external\\\\n view\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n );\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\\\n *\\\\n * Adds the {permit} method, which can be used to change an account\'s ERC20 allowance (see {IERC20-allowance}) by\\\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn\'t\\\\n * need to send a transaction, and thus is not required to hold Ether at all.\\\\n *\\\\n * ==== Security Considerations\\\\n *\\\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\\\n * generally recommended is:\\\\n *\\\\n * ```solidity\\\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\\\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\\\n * doThing(..., value);\\\\n * }\\\\n *\\\\n * function doThing(..., uint256 value) public {\\\\n * token.safeTransferFrom(msg.sender, address(this), value);\\\\n * ...\\\\n * }\\\\n * ```\\\\n *\\\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\\\n * {SafeERC20-safeTransferFrom}).\\\\n *\\\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\\\n * contracts should have entry points that don\'t rely on permit.\\\\n */\\\\ninterface IERC20Permit {\\\\n /**\\\\n * @dev Sets `value` as the allowance of `spender` over ``owner``\'s tokens,\\\\n * given ``owner``\'s signed approval.\\\\n *\\\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\\\n * ordering also apply here.\\\\n *\\\\n * Emits an {Approval} event.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `spender` cannot be the zero address.\\\\n * - `deadline` must be a timestamp in the future.\\\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\\\n * over the EIP712-formatted function arguments.\\\\n * - the signature must use ``owner``\'s current nonce (see {nonces}).\\\\n *\\\\n * For more information on the signature format, see the\\\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\\\n * section].\\\\n *\\\\n * CAUTION: See Security Considerations above.\\\\n */\\\\n function permit(\\\\n address owner,\\\\n address spender,\\\\n uint256 value,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) external;\\\\n\\\\n /**\\\\n * @dev Returns the current nonce for `owner`. This value must be\\\\n * included whenever a signature is generated for {permit}.\\\\n *\\\\n * Every successful call to {permit} increases ``owner``\'s nonce by one. This\\\\n * prevents a signature from being used multiple times.\\\\n */\\\\n function nonces(address owner) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\\\n */\\\\ninterface IERC20 {\\\\n /**\\\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\\\n * another (`to`).\\\\n *\\\\n * Note that `value` may be zero.\\\\n */\\\\n event Transfer(address indexed from, address indexed to, uint256 value);\\\\n\\\\n /**\\\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\\\n * a call to {approve}. `value` is the new allowance.\\\\n */\\\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens in existence.\\\\n */\\\\n function totalSupply() external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens owned by `account`.\\\\n */\\\\n function balanceOf(address account) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from the caller\'s account to `to`.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transfer(address to, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Returns the remaining number of tokens that `spender` will be\\\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\\\n * zero by default.\\\\n *\\\\n * This value changes when {approve} or {transferFrom} are called.\\\\n */\\\\n function allowance(address owner, address spender) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\\\n * caller\'s tokens.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\\\n * that someone may use both the old and the new allowance by unfortunate\\\\n * transaction ordering. One possible solution to mitigate this race\\\\n * condition is to first reduce the spender\'s allowance to 0 and set the\\\\n * desired value afterwards:\\\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\\\n *\\\\n * Emits an {Approval} event.\\\\n */\\\\n function approve(address spender, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\\\\n * allowance mechanism. `value` is then deducted from the caller\'s\\\\n * allowance.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transferFrom(address from, address to, uint256 value) external returns (bool);\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {IERC20} from \\\\\\"../IERC20.sol\\\\\\";\\\\nimport {IERC20Permit} from \\\\\\"../extensions/IERC20Permit.sol\\\\\\";\\\\nimport {Address} from \\\\\\"../../../utils/Address.sol\\\\\\";\\\\n\\\\n/**\\\\n * @title SafeERC20\\\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\\\n * contract returns false). Tokens that return no value (and instead revert or\\\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\\\n * successful.\\\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\\\n */\\\\nlibrary SafeERC20 {\\\\n using Address for address;\\\\n\\\\n /**\\\\n * @dev An operation with an ERC20 token failed.\\\\n */\\\\n error SafeERC20FailedOperation(address token);\\\\n\\\\n /**\\\\n * @dev Indicates a failed `decreaseAllowance` request.\\\\n */\\\\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Increase the calling contract\'s allowance toward `spender` by `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\\\n uint256 oldAllowance = token.allowance(address(this), spender);\\\\n forceApprove(token, spender, oldAllowance + value);\\\\n }\\\\n\\\\n /**\\\\n * @dev Decrease the calling contract\'s allowance toward `spender` by `requestedDecrease`. If `token` returns no\\\\n * value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\\\n unchecked {\\\\n uint256 currentAllowance = token.allowance(address(this), spender);\\\\n if (currentAllowance < requestedDecrease) {\\\\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\\\n }\\\\n forceApprove(token, spender, currentAllowance - requestedDecrease);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Set the calling contract\'s allowance toward `spender` to `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\\\n */\\\\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\\\\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\\\n\\\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\\\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\\\n _callOptionalReturn(token, approvalCall);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n */\\\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\\\n // We need to perform a low level call here, to bypass Solidity\'s return data size checking mechanism, since\\\\n // we\'re implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\\\n // the target address contains contract code and also asserts for success in the low-level call.\\\\n\\\\n bytes memory returndata = address(token).functionCall(data);\\\\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\\\\n revert SafeERC20FailedOperation(address(token));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n *\\\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\\\n */\\\\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\\\n // We need to perform a low level call here, to bypass Solidity\'s return data size checking mechanism, since\\\\n // we\'re implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\\\n // and not revert is the subcall reverts.\\\\n\\\\n (bool success, bytes memory returndata) = address(token).call(data);\\\\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Address.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Collection of functions related to the address type\\\\n */\\\\nlibrary Address {\\\\n /**\\\\n * @dev The ETH balance of the account is not enough to perform the operation.\\\\n */\\\\n error AddressInsufficientBalance(address account);\\\\n\\\\n /**\\\\n * @dev There\'s no code at `target` (it is not a contract).\\\\n */\\\\n error AddressEmptyCode(address target);\\\\n\\\\n /**\\\\n * @dev A call to an address target failed. The target may have reverted.\\\\n */\\\\n error FailedInnerCall();\\\\n\\\\n /**\\\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\\\n * `recipient`, forwarding all available gas and reverting on errors.\\\\n *\\\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\\\n * imposed by `transfer`, making them unable to receive funds via\\\\n * `transfer`. {sendValue} removes this limitation.\\\\n *\\\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\\\n *\\\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\\\n * taken to not create reentrancy vulnerabilities. Consider using\\\\n * {ReentrancyGuard} or the\\\\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\\\n */\\\\n function sendValue(address payable recipient, uint256 amount) internal {\\\\n if (address(this).balance < amount) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n\\\\n (bool success, ) = recipient.call{value: amount}(\\\\\\"\\\\\\");\\\\n if (!success) {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Performs a Solidity function call using a low level `call`. A\\\\n * plain `call` is an unsafe replacement for a function call: use this\\\\n * function instead.\\\\n *\\\\n * If `target` reverts with a revert reason or custom error, it is bubbled\\\\n * up by this function (like regular Solidity function calls). However, if\\\\n * the call reverted with no returned reason, this function reverts with a\\\\n * {FailedInnerCall} error.\\\\n *\\\\n * Returns the raw returned data. To convert to the expected return value,\\\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `target` must be a contract.\\\\n * - calling `target` with `data` must not revert.\\\\n */\\\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n return functionCallWithValue(target, data, 0);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but also transferring `value` wei to `target`.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - the calling contract must have an ETH balance of at least `value`.\\\\n * - the called Solidity function must be `payable`.\\\\n */\\\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\\\n if (address(this).balance < value) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a static call.\\\\n */\\\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.staticcall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a delegate call.\\\\n */\\\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\\\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\\\n * unsuccessful call.\\\\n */\\\\n function verifyCallResultFromTarget(\\\\n address target,\\\\n bool success,\\\\n bytes memory returndata\\\\n ) internal view returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n // only check if target is a contract if the call was successful and the return data is empty\\\\n // otherwise we already know that it was a contract\\\\n if (returndata.length == 0 && target.code.length == 0) {\\\\n revert AddressEmptyCode(target);\\\\n }\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn\'t, either by bubbling the\\\\n * revert reason or with a default {FailedInnerCall} error.\\\\n */\\\\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\\\n */\\\\n function _revert(bytes memory returndata) private pure {\\\\n // Look for revert reason and bubble it up if present\\\\n if (returndata.length > 0) {\\\\n // The easiest way to bubble the revert reason is using memory via assembly\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let returndata_size := mload(returndata)\\\\n revert(add(32, returndata), returndata_size)\\\\n }\\\\n } else {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\\\n *\\\\n * These functions can be used to verify that a message was signed by the holder\\\\n * of the private keys of a given address.\\\\n */\\\\nlibrary ECDSA {\\\\n enum RecoverError {\\\\n NoError,\\\\n InvalidSignature,\\\\n InvalidSignatureLength,\\\\n InvalidSignatureS\\\\n }\\\\n\\\\n /**\\\\n * @dev The signature derives the `address(0)`.\\\\n */\\\\n error ECDSAInvalidSignature();\\\\n\\\\n /**\\\\n * @dev The signature has an invalid length.\\\\n */\\\\n error ECDSAInvalidSignatureLength(uint256 length);\\\\n\\\\n /**\\\\n * @dev The signature has an S value that is in the upper half order.\\\\n */\\\\n error ECDSAInvalidSignatureS(bytes32 s);\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\\\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\\\n * and a bytes32 providing additional information about the error.\\\\n *\\\\n * If no error is returned, then the address can be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n *\\\\n * Documentation for signature generation:\\\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\\\\n if (signature.length == 65) {\\\\n bytes32 r;\\\\n bytes32 s;\\\\n uint8 v;\\\\n // ecrecover takes the signature parameters, and the only way to get them\\\\n // currently is to use assembly.\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r := mload(add(signature, 0x20))\\\\n s := mload(add(signature, 0x40))\\\\n v := byte(0, mload(add(signature, 0x60)))\\\\n }\\\\n return tryRecover(hash, v, r, s);\\\\n } else {\\\\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with\\\\n * `signature`. This address can then be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n */\\\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\\\n *\\\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\\\\n unchecked {\\\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\\\n // We do not check for an overflow here since the shift operation results in 0 or 1.\\\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\\\n return tryRecover(hash, v, r, s);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function tryRecover(\\\\n bytes32 hash,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal pure returns (address, RecoverError, bytes32) {\\\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\\\n // the valid range for s in (301): 0 < s < secp256k1n \xf7 2 + 1, and for v in (302): v \u2208 {27, 28}. Most\\\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\\\n //\\\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\\\n // these malleable signatures as well.\\\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\\\n return (address(0), RecoverError.InvalidSignatureS, s);\\\\n }\\\\n\\\\n // If the signature is valid (and not malleable), return the signer address\\\\n address signer = ecrecover(hash, v, r, s);\\\\n if (signer == address(0)) {\\\\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\\\\n }\\\\n\\\\n return (signer, RecoverError.NoError, bytes32(0));\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\\\n */\\\\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\\\\n if (error == RecoverError.NoError) {\\\\n return; // no error: do nothing\\\\n } else if (error == RecoverError.InvalidSignature) {\\\\n revert ECDSAInvalidSignature();\\\\n } else if (error == RecoverError.InvalidSignatureLength) {\\\\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\\\\n } else if (error == RecoverError.InvalidSignatureS) {\\\\n revert ECDSAInvalidSignatureS(errorArg);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {MessageHashUtils} from \\\\\\"./MessageHashUtils.sol\\\\\\";\\\\nimport {ShortStrings, ShortString} from \\\\\\"../ShortStrings.sol\\\\\\";\\\\nimport {IERC5267} from \\\\\\"../../interfaces/IERC5267.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\\\n *\\\\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\\\\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\\\\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\\\\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\\\\n *\\\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\\\n * ({_hashTypedDataV4}).\\\\n *\\\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\\\n *\\\\n * NOTE: This contract implements the version of the encoding known as \\\\\\"v4\\\\\\", as implemented by the JSON RPC method\\\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\\\n *\\\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\\\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\\\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\\\n *\\\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\\\\n */\\\\nabstract contract EIP712 is IERC5267 {\\\\n using ShortStrings for *;\\\\n\\\\n bytes32 private constant TYPE_HASH =\\\\n keccak256(\\\\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\\\\");\\\\n\\\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\\\n // invalidate the cached domain separator if the chain id changes.\\\\n bytes32 private immutable _cachedDomainSeparator;\\\\n uint256 private immutable _cachedChainId;\\\\n address private immutable _cachedThis;\\\\n\\\\n bytes32 private immutable _hashedName;\\\\n bytes32 private immutable _hashedVersion;\\\\n\\\\n ShortString private immutable _name;\\\\n ShortString private immutable _version;\\\\n string private _nameFallback;\\\\n string private _versionFallback;\\\\n\\\\n /**\\\\n * @dev Initializes the domain separator and parameter caches.\\\\n *\\\\n * The meaning of `name` and `version` is specified in\\\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\\\n *\\\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\\\n * - `version`: the current major version of the signing domain.\\\\n *\\\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\\\n * contract upgrade].\\\\n */\\\\n constructor(string memory name, string memory version) {\\\\n _name = name.toShortStringWithFallback(_nameFallback);\\\\n _version = version.toShortStringWithFallback(_versionFallback);\\\\n _hashedName = keccak256(bytes(name));\\\\n _hashedVersion = keccak256(bytes(version));\\\\n\\\\n _cachedChainId = block.chainid;\\\\n _cachedDomainSeparator = _buildDomainSeparator();\\\\n _cachedThis = address(this);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the domain separator for the current chain.\\\\n */\\\\n function _domainSeparatorV4() internal view returns (bytes32) {\\\\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\\\n return _cachedDomainSeparator;\\\\n } else {\\\\n return _buildDomainSeparator();\\\\n }\\\\n }\\\\n\\\\n function _buildDomainSeparator() private view returns (bytes32) {\\\\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\\\n *\\\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\\\n *\\\\n * ```solidity\\\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\\\n * keccak256(\\\\\\"Mail(address to,string contents)\\\\\\"),\\\\n * mailTo,\\\\n * keccak256(bytes(mailContents))\\\\n * )));\\\\n * address signer = ECDSA.recover(digest, signature);\\\\n * ```\\\\n */\\\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\\\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\\\\n }\\\\n\\\\n /**\\\\n * @dev See {IERC-5267}.\\\\n */\\\\n function eip712Domain()\\\\n public\\\\n view\\\\n virtual\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n )\\\\n {\\\\n return (\\\\n hex\\\\\\"0f\\\\\\", // 01111\\\\n _EIP712Name(),\\\\n _EIP712Version(),\\\\n block.chainid,\\\\n address(this),\\\\n bytes32(0),\\\\n new uint256[](0)\\\\n );\\\\n }\\\\n\\\\n /**\\\\n * @dev The name parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _name which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Name() internal view returns (string memory) {\\\\n return _name.toStringWithFallback(_nameFallback);\\\\n }\\\\n\\\\n /**\\\\n * @dev The version parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _version which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Version() internal view returns (string memory) {\\\\n return _version.toStringWithFallback(_versionFallback);\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Strings} from \\\\\\"../Strings.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\\\\n *\\\\n * The library provides methods for generating a hash of a message that conforms to the\\\\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\\\\n * specifications.\\\\n */\\\\nlibrary MessageHashUtils {\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing a bytes32 `messageHash` with\\\\n * `\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\"` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\\\\n * keccak256, although any bytes32 value can be safely used because the final digest will\\\\n * be re-hashed.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(0x00, \\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\") // 32 is the bytes-length of messageHash\\\\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\\\\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `message` with\\\\n * `\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\" + len(message)` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\\\\n return\\\\n keccak256(bytes.concat(\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\", bytes(Strings.toString(message.length)), message));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x00` (data with intended validator).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `data` with `\\\\\\"\\\\\\\\x19\\\\\\\\x00\\\\\\"` and the intended\\\\n * `validator` address. Then hashing the result.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\\\n return keccak256(abi.encodePacked(hex\\\\\\"19_00\\\\\\", validator, data));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\\\\n *\\\\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\\\\n * `\\\\\\\\x19\\\\\\\\x01` and hashing the result. It corresponds to the hash signed by the\\\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let ptr := mload(0x40)\\\\n mstore(ptr, hex\\\\\\"19_01\\\\\\")\\\\n mstore(add(ptr, 0x02), domainSeparator)\\\\n mstore(add(ptr, 0x22), structHash)\\\\n digest := keccak256(ptr, 0x42)\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/math/Math.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard math utilities missing in the Solidity language.\\\\n */\\\\nlibrary Math {\\\\n /**\\\\n * @dev Muldiv operation overflow.\\\\n */\\\\n error MathOverflowedMulDiv();\\\\n\\\\n enum Rounding {\\\\n Floor, // Toward negative infinity\\\\n Ceil, // Toward positive infinity\\\\n Trunc, // Toward zero\\\\n Expand // Away from zero\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n uint256 c = a + b;\\\\n if (c < a) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\\\n */\\\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b > a) return (false, 0);\\\\n return (true, a - b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n // Gas optimization: this is cheaper than requiring \'a\' not being zero, but the\\\\n // benefit is lost if \'b\' is also tested.\\\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\\\n if (a == 0) return (true, 0);\\\\n uint256 c = a * b;\\\\n if (c / a != b) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a / b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a % b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the largest of two numbers.\\\\n */\\\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two numbers.\\\\n */\\\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two numbers. The result is rounded towards\\\\n * zero.\\\\n */\\\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n // (a + b) / 2 can overflow.\\\\n return (a & b) + (a ^ b) / 2;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the ceiling of the division of two numbers.\\\\n *\\\\n * This differs from standard division with `/` in that it rounds towards infinity instead\\\\n * of rounding towards zero.\\\\n */\\\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n if (b == 0) {\\\\n // Guarantee the same behavior as in a regular Solidity division.\\\\n return a / b;\\\\n }\\\\n\\\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\\\n return a == 0 ? 0 : (a - 1) / b + 1;\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\\\n * denominator == 0.\\\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\\\n * Uniswap Labs also under MIT license.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\\\n unchecked {\\\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\\\n // variables such that product = prod1 * 2^256 + prod0.\\\\n uint256 prod0 = x * y; // Least significant 256 bits of the product\\\\n uint256 prod1; // Most significant 256 bits of the product\\\\n assembly {\\\\n let mm := mulmod(x, y, not(0))\\\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\\\n }\\\\n\\\\n // Handle non-overflow cases, 256 by 256 division.\\\\n if (prod1 == 0) {\\\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\\\n // The surrounding unchecked block does not change this fact.\\\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\\\n return prod0 / denominator;\\\\n }\\\\n\\\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\\\n if (denominator <= prod1) {\\\\n revert MathOverflowedMulDiv();\\\\n }\\\\n\\\\n ///////////////////////////////////////////////\\\\n // 512 by 256 division.\\\\n ///////////////////////////////////////////////\\\\n\\\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\\\n uint256 remainder;\\\\n assembly {\\\\n // Compute remainder using mulmod.\\\\n remainder := mulmod(x, y, denominator)\\\\n\\\\n // Subtract 256 bit number from 512 bit number.\\\\n prod1 := sub(prod1, gt(remainder, prod0))\\\\n prod0 := sub(prod0, remainder)\\\\n }\\\\n\\\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\\\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\\\n\\\\n uint256 twos = denominator & (0 - denominator);\\\\n assembly {\\\\n // Divide denominator by twos.\\\\n denominator := div(denominator, twos)\\\\n\\\\n // Divide [prod1 prod0] by twos.\\\\n prod0 := div(prod0, twos)\\\\n\\\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\\\n twos := add(div(sub(0, twos), twos), 1)\\\\n }\\\\n\\\\n // Shift in bits from prod1 into prod0.\\\\n prod0 |= prod1 * twos;\\\\n\\\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\\\n uint256 inverse = (3 * denominator) ^ 2;\\\\n\\\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel\'s lifting lemma, this also\\\\n // works in modular arithmetic, doubling the correct bits in each step.\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\\\n\\\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\\\n // less than 2^256, this is the final result. We don\'t need to compute the high bits of the result and prod1\\\\n // is no longer required.\\\\n result = prod0 * inverse;\\\\n return result;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\\\n uint256 result = mulDiv(x, y, denominator);\\\\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\\\\n result += 1;\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\\\n * towards zero.\\\\n *\\\\n * Inspired by Henry S. Warren, Jr.\'s \\\\\\"Hacker\'s Delight\\\\\\" (Chapter 11).\\\\n */\\\\n function sqrt(uint256 a) internal pure returns (uint256) {\\\\n if (a == 0) {\\\\n return 0;\\\\n }\\\\n\\\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\\\n //\\\\n // We know that the \\\\\\"msb\\\\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\\\n //\\\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\\\n // \u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\\\n // \u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\\\n //\\\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\\\n uint256 result = 1 << (log2(a) >> 1);\\\\n\\\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\\\n // since it is the square root of a uint256. Newton\'s method converges quadratically (precision doubles at\\\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\\\n // into the expected uint128 result.\\\\n unchecked {\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n return min(result, a / result);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\\\n */\\\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = sqrt(a);\\\\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 128;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 64;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 32;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 16;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n value >>= 8;\\\\n result += 8;\\\\n }\\\\n if (value >> 4 > 0) {\\\\n value >>= 4;\\\\n result += 4;\\\\n }\\\\n if (value >> 2 > 0) {\\\\n value >>= 2;\\\\n result += 2;\\\\n }\\\\n if (value >> 1 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log2(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >= 10 ** 64) {\\\\n value /= 10 ** 64;\\\\n result += 64;\\\\n }\\\\n if (value >= 10 ** 32) {\\\\n value /= 10 ** 32;\\\\n result += 32;\\\\n }\\\\n if (value >= 10 ** 16) {\\\\n value /= 10 ** 16;\\\\n result += 16;\\\\n }\\\\n if (value >= 10 ** 8) {\\\\n value /= 10 ** 8;\\\\n result += 8;\\\\n }\\\\n if (value >= 10 ** 4) {\\\\n value /= 10 ** 4;\\\\n result += 4;\\\\n }\\\\n if (value >= 10 ** 2) {\\\\n value /= 10 ** 2;\\\\n result += 2;\\\\n }\\\\n if (value >= 10 ** 1) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log10(value);\\\\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n *\\\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\\\n */\\\\n function log256(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 16;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 8;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 4;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 2;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log256(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\\\n */\\\\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\\\n return uint8(rounding) % 2 == 1;\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/math/SignedMath.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard signed math utilities missing in the Solidity language.\\\\n */\\\\nlibrary SignedMath {\\\\n /**\\\\n * @dev Returns the largest of two signed numbers.\\\\n */\\\\n function max(int256 a, int256 b) internal pure returns (int256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two signed numbers.\\\\n */\\\\n function min(int256 a, int256 b) internal pure returns (int256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two signed numbers without overflow.\\\\n * The result is rounded towards zero.\\\\n */\\\\n function average(int256 a, int256 b) internal pure returns (int256) {\\\\n // Formula from the book \\\\\\"Hacker\'s Delight\\\\\\"\\\\n int256 x = (a & b) + ((a ^ b) >> 1);\\\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the absolute unsigned value of a signed value.\\\\n */\\\\n function abs(int256 n) internal pure returns (uint256) {\\\\n unchecked {\\\\n // must be unchecked in order to support `n = type(int256).min`\\\\n return uint256(n >= 0 ? n : -n);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Nonces.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\\\\n */\\\\nabstract contract Nonces {\\\\n /**\\\\n * @dev The nonce used for an `account` is not the expected current nonce.\\\\n */\\\\n error InvalidAccountNonce(address account, uint256 currentNonce);\\\\n\\\\n mapping(address account => uint256) private _nonces;\\\\n\\\\n /**\\\\n * @dev Returns the next unused nonce for an address.\\\\n */\\\\n function nonces(address owner) public view virtual returns (uint256) {\\\\n return _nonces[owner];\\\\n }\\\\n\\\\n /**\\\\n * @dev Consumes a nonce.\\\\n *\\\\n * Returns the current value and increments nonce.\\\\n */\\\\n function _useNonce(address owner) internal virtual returns (uint256) {\\\\n // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\\\\n // decremented or reset. This guarantees that the nonce never overflows.\\\\n unchecked {\\\\n // It is important to do x++ and not ++x here.\\\\n return _nonces[owner]++;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\\\\n */\\\\n function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\\\\n uint256 current = _useNonce(owner);\\\\n if (nonce != current) {\\\\n revert InvalidAccountNonce(owner, current);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/ShortStrings.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {StorageSlot} from \\\\\\"./StorageSlot.sol\\\\\\";\\\\n\\\\n// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |\\\\n// | length | 0x BB |\\\\ntype ShortString is bytes32;\\\\n\\\\n/**\\\\n * @dev This library provides functions to convert short memory strings\\\\n * into a `ShortString` type that can be used as an immutable variable.\\\\n *\\\\n * Strings of arbitrary length can be optimized using this library if\\\\n * they are short enough (up to 31 bytes) by packing them with their\\\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\\\n * fallback mechanism can be used for every other case.\\\\n *\\\\n * Usage example:\\\\n *\\\\n * ```solidity\\\\n * contract Named {\\\\n * using ShortStrings for *;\\\\n *\\\\n * ShortString private immutable _name;\\\\n * string private _nameFallback;\\\\n *\\\\n * constructor(string memory contractName) {\\\\n * _name = contractName.toShortStringWithFallback(_nameFallback);\\\\n * }\\\\n *\\\\n * function name() external view returns (string memory) {\\\\n * return _name.toStringWithFallback(_nameFallback);\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary ShortStrings {\\\\n // Used as an identifier for strings longer than 31 bytes.\\\\n bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\\\n\\\\n error StringTooLong(string str);\\\\n error InvalidShortString();\\\\n\\\\n /**\\\\n * @dev Encode a string of at most 31 chars into a `ShortString`.\\\\n *\\\\n * This will trigger a `StringTooLong` error is the input string is too long.\\\\n */\\\\n function toShortString(string memory str) internal pure returns (ShortString) {\\\\n bytes memory bstr = bytes(str);\\\\n if (bstr.length > 31) {\\\\n revert StringTooLong(str);\\\\n }\\\\n return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a `ShortString` back to a \\\\\\"normal\\\\\\" string.\\\\n */\\\\n function toString(ShortString sstr) internal pure returns (string memory) {\\\\n uint256 len = byteLength(sstr);\\\\n // using `new string(len)` would work locally but is not memory safe.\\\\n string memory str = new string(32);\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(str, len)\\\\n mstore(add(str, 0x20), sstr)\\\\n }\\\\n return str;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a `ShortString`.\\\\n */\\\\n function byteLength(ShortString sstr) internal pure returns (uint256) {\\\\n uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\\\n if (result > 31) {\\\\n revert InvalidShortString();\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\\\n */\\\\n function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\\\n if (bytes(value).length < 32) {\\\\n return toShortString(value);\\\\n } else {\\\\n StorageSlot.getStringSlot(store).value = value;\\\\n return ShortString.wrap(FALLBACK_SENTINEL);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\\\n */\\\\n function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return toString(value);\\\\n } else {\\\\n return store;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\\\\n * {setWithFallback}.\\\\n *\\\\n * WARNING: This will return the \\\\\\"byte length\\\\\\" of the string. This may not reflect the actual length in terms of\\\\n * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\\\n */\\\\n function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return byteLength(value);\\\\n } else {\\\\n return bytes(store).length;\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/StorageSlot.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Library for reading and writing primitive types to specific storage slots.\\\\n *\\\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\\\n *\\\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\\\n *\\\\n * Example usage to set ERC1967 implementation slot:\\\\n * ```solidity\\\\n * contract ERC1967 {\\\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\\\n *\\\\n * function _getImplementation() internal view returns (address) {\\\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\\\n * }\\\\n *\\\\n * function _setImplementation(address newImplementation) internal {\\\\n * require(newImplementation.code.length > 0);\\\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary StorageSlot {\\\\n struct AddressSlot {\\\\n address value;\\\\n }\\\\n\\\\n struct BooleanSlot {\\\\n bool value;\\\\n }\\\\n\\\\n struct Bytes32Slot {\\\\n bytes32 value;\\\\n }\\\\n\\\\n struct Uint256Slot {\\\\n uint256 value;\\\\n }\\\\n\\\\n struct StringSlot {\\\\n string value;\\\\n }\\\\n\\\\n struct BytesSlot {\\\\n bytes value;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\\\n */\\\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\\\n */\\\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\\\n */\\\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\\\n */\\\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\\\n */\\\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\\\n */\\\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Strings.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Math} from \\\\\\"./math/Math.sol\\\\\\";\\\\nimport {SignedMath} from \\\\\\"./math/SignedMath.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev String operations.\\\\n */\\\\nlibrary Strings {\\\\n bytes16 private constant HEX_DIGITS = \\\\\\"0123456789abcdef\\\\\\";\\\\n uint8 private constant ADDRESS_LENGTH = 20;\\\\n\\\\n /**\\\\n * @dev The `value` string doesn\'t fit in the specified `length`.\\\\n */\\\\n error StringsInsufficientHexLength(uint256 value, uint256 length);\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n uint256 length = Math.log10(value) + 1;\\\\n string memory buffer = new string(length);\\\\n uint256 ptr;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n ptr := add(buffer, add(32, length))\\\\n }\\\\n while (true) {\\\\n ptr--;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\\\n }\\\\n value /= 10;\\\\n if (value == 0) break;\\\\n }\\\\n return buffer;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toStringSigned(int256 value) internal pure returns (string memory) {\\\\n return string.concat(value < 0 ? \\\\\\"-\\\\\\" : \\\\\\"\\\\\\", toString(SignedMath.abs(value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\\\n */\\\\n function toHexString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n return toHexString(value, Math.log256(value) + 1);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\\\n */\\\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\\\n uint256 localValue = value;\\\\n bytes memory buffer = new bytes(2 * length + 2);\\\\n buffer[0] = \\\\\\"0\\\\\\";\\\\n buffer[1] = \\\\\\"x\\\\\\";\\\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\\\n buffer[i] = HEX_DIGITS[localValue & 0xf];\\\\n localValue >>= 4;\\\\n }\\\\n if (localValue != 0) {\\\\n revert StringsInsufficientHexLength(value, length);\\\\n }\\\\n return string(buffer);\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\\\n * representation.\\\\n */\\\\n function toHexString(address addr) internal pure returns (string memory) {\\\\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns true if the two strings are equal.\\\\n */\\\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\\\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\\\n }\\\\n}\\\\n\\"},\\"contracts/TokenExchange.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: GPL-3.0\\\\npragma solidity ^0.8.0;\\\\n\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/Nonces.sol\\\\\\";\\\\n\\\\n// utils/cryptography/EIP712.sol\\\\\\";\\\\n//IERC20Permit\\\\ncontract TokenExchange is EIP712, Nonces {\\\\n bytes32 private constant PERMIT_TYPEHASH =\\\\n keccak256(\\\\\\"Swap(address owner,address tokenAddress,uint256 amountIn,uint256 price,uint256 nonce,uint256 deadline)\\\\\\");\\\\n\\\\n address public owner;\\\\n // address public operator;\\\\n string private _nameString;\\\\n mapping (address => bool ) public vaults;\\\\n mapping (address => bool) public operators;\\\\n uint256 public MAX_BTC_AMOUNT = 0.005 ether;\\\\n\\\\n event PermitAndSwap(address indexed approver, address tokenAddress, uint256 amountIn, uint256 amountOut, uint256 deadline);\\\\n event Withdrawn(address tokenAddress,address receiver,uint256 amount);\\\\n event TransferOwnership(address newOwner);\\\\n event SetOperator(address newOp,bool on);\\\\n event Received(address sender, uint256 value);\\\\n event SetVaults(address valut, bool status);\\\\n event SetMaxOutput(uint256 newValue);\\\\n\\\\n constructor(string memory contractName) EIP712(contractName, \\\\\\"1\\\\\\"){\\\\n owner = msg.sender;\\\\n _nameString = contractName;\\\\n }\\\\n\\\\n modifier onlyOwner() {\\\\n require(msg.sender == owner, \\\\\\"Only_Owner\\\\\\");\\\\n _;\\\\n }\\\\n modifier onlyOperator() {\\\\n require(operators[msg.sender], \\\\\\"Only_Operator\\\\\\");\\\\n _;\\\\n }\\\\n\\\\n function permitAndSwap(\\\\n address payable approver, //\\\\n address tokenAddress, //\\\\n uint256 amountIn, //\\\\n uint256 deadline, //\\\\n uint256 price,\\\\n uint256 amountOut, // \\\\n bytes memory permitSig,\\\\n bytes memory swapSig\\\\n ) external onlyOperator {\\\\n require(vaults[tokenAddress],\\\\\\"TokenAddress_Not_Support\\\\\\");\\\\n require(approver != address(0),\\\\\\"Approver_Not_Zero_Address\\\\\\");\\\\n require(deadline >= block.timestamp,\\\\\\"Deadline_Timeout\\\\\\");\\\\n require(amountOut <= MAX_BTC_AMOUNT && amountOut <= address(this).balance,\\\\\\"AmountOut_Illegal\\\\\\");\\\\n (bytes32 pr, bytes32 ps, uint8 pv) = splitSignature(permitSig);\\\\n IERC20Permit(tokenAddress).permit(approver, address(this), amountIn, deadline, pv, pr, ps);\\\\n \\\\n (bytes32 sr, bytes32 ss, uint8 sv) = splitSignature(swapSig);\\\\n\\\\n verifySignture(approver, tokenAddress, amountIn, price, deadline, sv, sr, ss);\\\\n\\\\n\\\\n\\\\n SafeERC20.safeTransferFrom(IERC20(tokenAddress),approver,address(this),amountIn);\\\\n\\\\n (bool success, bytes memory returnData) = approver.call{value: amountOut}(\\\\\\"\\\\\\");\\\\n require(success, string(returnData));\\\\n emit PermitAndSwap(approver, tokenAddress, amountIn, amountOut, deadline);\\\\n }\\\\n function setVaults(address valut, bool status) external onlyOwner {\\\\n vaults[valut] = status;\\\\n emit SetVaults(valut, status);\\\\n }\\\\n function withdrawERC20(address tokenAddress, address receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= IERC20(tokenAddress).balanceOf(address(this)),\\\\\\"Token_Not_Enough\\\\\\");\\\\n SafeERC20.safeTransfer(IERC20(tokenAddress), receiver, amount);\\\\n emit Withdrawn(tokenAddress, receiver, amount); \\\\n }\\\\n function withdrawBTC(address payable receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= address(this).balance,\\\\\\"BTC_Not_Enough\\\\\\");\\\\n require(receiver != address(0),\\\\\\"Receiver_Should_Not_Zero_Address\\\\\\");\\\\n (bool success, bytes memory returnData) = receiver.call{value: amount}(\\\\\\"\\\\\\");\\\\n require(success, string(returnData));\\\\n emit Withdrawn(address(0), receiver, amount);\\\\n }\\\\n\\\\n function transferOwnership(address newOwner) external onlyOwner {\\\\n require(newOwner != address(0),\\\\\\"Owner_Should_Not_Zero_Address\\\\\\");\\\\n owner = newOwner;\\\\n emit TransferOwnership(newOwner);\\\\n }\\\\n function setOperator(address newOp,bool _on) external onlyOwner {\\\\n require(newOp != address(0),\\\\\\"Operator_Should_Not_Zero_Address\\\\\\");\\\\n operators[newOp] = _on;\\\\n emit SetOperator(newOp,_on);\\\\n }\\\\n\\\\n function setMaxOutput(uint256 newValue) external onlyOwner {\\\\n MAX_BTC_AMOUNT = newValue;\\\\n emit SetMaxOutput(newValue);\\\\n }\\\\n function splitSignature(bytes memory sig)\\\\n internal\\\\n pure\\\\n returns (bytes32 r, bytes32 s, uint8 v)\\\\n {\\\\n require(sig.length == 65, \\\\\\"Invalid_Signature_Length\\\\\\");\\\\n\\\\n assembly {\\\\n /*\\\\n First 32 bytes stores the length of the signature\\\\n\\\\n add(sig, 32) = pointer of sig + 32\\\\n effectively, skips first 32 bytes of signature\\\\n\\\\n mload(p) loads next 32 bytes starting at the memory address p into memory\\\\n */\\\\n\\\\n // first 32 bytes, after the length prefix\\\\n r := mload(add(sig, 32))\\\\n // second 32 bytes\\\\n s := mload(add(sig, 64))\\\\n // final byte (first byte of the next 32 bytes)\\\\n v := byte(0, mload(add(sig, 96)))\\\\n }\\\\n\\\\n // implicitly return (r, s, v)\\\\n }\\\\n \\\\n function verifySignture(\\\\n address approver,\\\\n address tokenAddress,\\\\n uint256 amountIn, \\\\n uint256 price,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal {\\\\n bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, approver, tokenAddress, amountIn, price, _useNonce(approver), deadline));\\\\n\\\\n bytes32 hash = _hashTypedDataV4(structHash);\\\\n\\\\n address signer = ECDSA.recover(hash, v, r, s);\\\\n require(signer == approver,\\\\\\"Signer_Not_Signture_Owner\\\\\\");\\\\n }\\\\n\\\\n function nonces(address _owner) public view virtual override returns (uint256) {\\\\n return super.nonces(_owner);\\\\n }\\\\n\\\\n function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\\\\n return _domainSeparatorV4();\\\\n }\\\\n\\\\n function name() public view virtual returns (string memory) {\\\\n return _nameString;\\\\n }\\\\n\\\\n receive() external payable {\\\\n emit Received(msg.sender, msg.value);\\\\n }\\\\n}\\"}},\\"settings\\":{\\"optimizer\\":{\\"enabled\\":true,\\"runs\\":200},\\"viaIR\\":true,\\"evmVersion\\":\\"paris\\",\\"outputSelection\\":{\\"*\\":{\\"*\\":[\\"abi\\",\\"evm.bytecode\\",\\"evm.deployedBytecode\\",\\"evm.methodIdentifiers\\",\\"metadata\\"],\\"\\":[\\"ast\\"]}},\\"libraries\\":{}}}"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,r.jsx)(n.p,{children:"or"}),"\n",(0,r.jsx)(n.h3,{id:"get-contract-creator-and-creation-tx-hash",children:"Get Contract Creator and Creation Tx Hash"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=contract\r\n&action=getcontractcreation\r\n&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Try this endpoint in your ",(0,r.jsx)(n.a,{href:"https://api.btrscan.com/scan/api?module=contract&action=getcontractcreation&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsx)(n.h3,{id:"verify-source-code-beta",children:"Verify Source Code (beta)"}),"\n",(0,r.jsx)(n.p,{children:"1\u3001Current daily limit of 100 submissions per day per user (subject to change)"}),"\n",(0,r.jsx)(n.p,{children:"2\u3001Only supports HTTP POST due to max transfer size limitations for HTTP GET"}),"\n",(0,r.jsx)(n.p,{children:'3\u3001Contracts that use "imports" will need to have the code concatenated into one file as we do not support "imports" in separate files'}),"\n",(0,r.jsx)(n.p,{children:"4\u3001List ofsupported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1"}),"\n",(0,r.jsx)(n.p,{children:"5\u3001Upon successful submission you will receive a GUID (50 characters) as a receipt"}),"\n",(0,r.jsx)(n.p,{children:"6\u3001You may use this GUID to track the status of your submission"}),"\n",(0,r.jsx)(n.p,{children:"7\u3001Verified Source Codes will be displayed at the Verified Contracts page"}),"\n",(0,r.jsx)(n.h3,{id:"source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success",children:"Source Code Submission Gist (returns a guid as part of the result upon success):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'//Submit Source Code for Verification\r\n$.ajax({\r\n \u2003type: "POST", //Only POST supported\r\n\u2003 url: "//api.btrscan.com/scan/api", //Set to the correct API url for Other Networks\r\n\u2003 data: {\r\n\u2003\u2003 apikey: $(\'#apikey\').val(),\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //A valid API-Key is required\r\n\u2003\u2003 module: \'contract\',\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //Do not change\r\n\u2003\u2003 action: \'verifysourcecode\',\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2002 //Do not change\r\n\u2003\u2003 contractaddress: $(\'#contractaddress\').val(),\u2003\u2003 //Contract Address starts with 0x...\r\n\u2003\u2003 sourceCode: $(\'#sourceCode\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //Contract Source Code (Flattened if necessary)\r\n\u2003\u2003 codeformat: $(\'#codeformat\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support\r\n\u2003\u2003 contractname: $(\'#contractname\').val(),\u2003\u2003\u2003\u2003 //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20)\r\n\u2003\u2003 compilerversion: $(\'#compilerversion\').val(),\u2003\u2003 //see https://api-testnet.bitlayer.org/scan/solcversions for list of support versions\r\n\u2003\u2003 optimizationUsed: $(\'#optimizationUsed\').val(),\u2003//0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file)\r\n\u2003\u2003 runs: 200,\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file)\r\n\u2003 \u2003constructorArguements: $(\'#constructorArguements\').val(),\u2003//if applicable\r\n\u2003\u2003 evmversion: $(\'#evmVersion\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file)\r\n\u2003\u2003 licenseType: $(\'#licenseType\').val(),\u2003\u2003\u2003\u2003\u2003 //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://api-testnet.bitlayer.org/scan/contract-license-types\r\n\u2003 },\r\n\u2003 success: function (result) {\r\n\u2003\u2003 console.log(result);\r\n\u2003\u2003 if (result.status == "1") {\r\n\u2003\u2003\u2003 //1 = submission success, use the guid returned (result.result) to check the status of your submission.\r\n\u2003\u2003\u2003 // Average time of processing is 30-60 seconds\r\n\u2003\u2003\u2003 document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;\r\n\u2003\u2003\u2003 // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status\r\n\u2003\u2003 } else {\r\n\u2003\u2003\u2003 //0 = error\r\n\u2003\u2003\u2003 document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;\r\n\u2003\u2003 }\r\n\u2003\u2003 console.log("status : " + result.status);\r\n\u2003\u2003 console.log("result : " + result.result);\r\n\u2003 },\r\n\u2003 error: function (result) {\r\n\u2003\u2003 console.log("error!");\r\n\u2003\u2003 document.getElementById("postresult").innerHTML = "Unexpected Error"\r\n\u2003 }\r\n});\n'})}),"\n",(0,r.jsx)(n.h3,{id:"check-source-code-verification-submission-status",children:"Check Source code verification submission status:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'//Check Source Code Verification Status\r\n$.ajax({\r\n type: "GET",\r\n url: "https://api-testnet.bitlayer.org/scan/api",\r\n data: {\r\n \u2003\u2003apikey: $(\'#apikey\').val(),\r\n \u2003\u2003guid: \'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn\', //Replace with your Source Code GUID receipt above\r\n \u2003\u2003module: "contract",\r\n \u2003\u2003action: "checkverifystatus"\r\n },\r\n success: function (result) {\r\n \u2003\u2003console.log("status : " + result.status); //0=pending 1=pass 2=fail\r\n \u2003\u2003console.log("message : " + result.message); //Pass - Verified, Fail - Unable to verify Pending in queue\r\n \u2003\u2003console.log("result : " + result.result); //result explanation\r\n \u2003\u2003$(\'#guidstatus\').html(">> " + result.result);\r\n },\r\n error: function (result) {\r\n \u2003\u2003alert(\'error\');\r\n }\r\n});\n'})})]})}function p(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>i});t(6540);var r=t(8215);const a={tabItem:"tabItem_Ymn6"};var s=t(4848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,i),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(6540),a=t(8215),s=t(3104),i=t(6347),o=t(205),l=t(7485),u=t(1682),d=t(9466);function c(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return c(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,u.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const a=(0,i.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The 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 t??null}({queryString:n,groupId:t});return[(0,l.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function f(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=h(e),[i,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[u,c]=m({queryString:t,groupId:a}),[f,y]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,d.Dv)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),g=(()=>{const e=u??f;return p({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{g&&l(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),y(e)}),[c,y,s]),tabValues:s}}var y=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(4848);function b(e){let{className:n,block:t,selectedValue:r,selectValue:i,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),a=o[t].value;a!==r&&(u(n),i(a))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:c,onClick:d,...s,className:(0,a.A)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function w(e){let{lazy:n,children:t,selectedValue:a}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function S(e){const n=f(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,v.jsx)(b,{...n,...e}),(0,v.jsx)(w,{...n,...e})]})}function x(e){const n=(0,y.A)();return(0,v.jsx)(S,{...e,children:c(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(6540);const a={},s=r.createContext(a);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/494fd248.e87b9bca.js b/assets/js/494fd248.e87b9bca.js deleted file mode 100644 index 29447730..00000000 --- a/assets/js/494fd248.e87b9bca.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5491],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return m}});var r=t(7294);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 s(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 s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),u=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},d=function(e){var n=u(e.components);return r.createElement(l.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=u(t),m=a,h=p["".concat(l,".").concat(m)]||p[m]||c[m]||s;return t?r.createElement(h,i(i({ref:n},d),{},{components:t})):r.createElement(h,i({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var s=t.length,i=new Array(s);i[0]=p;var o={};for(var l in n)hasOwnProperty.call(n,l)&&(o[l]=n[l]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var u=2;u child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})),y=null!=p?p:f.map((function(e){var n=e.props;return{value:n.value,label:n.label,attributes:n.attributes}})),g=(0,i.lx)(y,(function(e,n){return e.value===n.value}));if(g.length>0)throw new Error('Docusaurus error: Duplicate values "'+g.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.');var v=null===c?c:null!=(n=null!=c?c:null==(t=f.find((function(e){return e.props.default})))?void 0:t.props.value)?n:null==(s=f[0])?void 0:s.props.value;if(null!==v&&!y.some((function(e){return e.value===v})))throw new Error('Docusaurus error: The has a defaultValue "'+v+'" but none of its children has the corresponding value. Available values are: '+y.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var b=(0,i.UB)(),w=b.tabGroupChoices,S=b.setTabGroupChoices,k=(0,a.useState)(v),T=k[0],x=k[1],I=[],A=(0,i.o5)().blockElementScrollPositionUntilNextRender;if(null!=m){var C=w[m];null!=C&&C!==T&&y.some((function(e){return e.value===C}))&&x(C)}var E=function(e){var n=e.currentTarget,t=I.indexOf(n),r=y[t].value;r!==T&&(A(n),x(r),null!=m&&S(m,r))},R=function(e){var n,t=null;switch(e.key){case"ArrowRight":var r=I.indexOf(e.currentTarget)+1;t=I[r]||I[0];break;case"ArrowLeft":var a=I.indexOf(e.currentTarget)-1;t=I[a]||I[I.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":d},h)},y.map((function(e){var n=e.value,t=e.label,s=e.attributes;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:T===n?0:-1,"aria-selected":T===n,key:n,ref:function(e){return I.push(e)},onKeyDown:R,onFocus:E,onClick:E},s,{className:(0,o.Z)("tabs__item",l,null==s?void 0:s.className,{"tabs__item--active":T===n})}),null!=t?t:n)}))),u?(0,a.cloneElement)(f.filter((function(e){return e.props.value===T}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},f.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==T})}))))}function d(e){var n=(0,s.Z)();return a.createElement(u,(0,r.Z)({key:String(n)},e))}},7782:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return u},contentTitle:function(){return d},metadata:function(){return c},assets:function(){return p},toc:function(){return m},default:function(){return f}});var r=t(7462),a=t(3366),s=(t(7294),t(3905)),i=t(9877),o=t(8215),l=["components"],u={sidebar_position:2,title:"Contracts"},d=void 0,c={unversionedId:"Bitlayer Scan APIs/Contracts",id:"Bitlayer Scan APIs/Contracts",title:"Contracts",description:"Verify the contract through hardhat verify",source:"@site/docs/Bitlayer Scan APIs/Contracts.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,title:"Contracts"},sidebar:"docs",previous:{title:"Accounts",permalink:"/docs/Bitlayer Scan APIs/Accounts"},next:{title:"Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions"}},p={},m=[{value:"Verify the contract through hardhat verify",id:"verify-the-contract-through-hardhat-verify",level:2},{value:"An example of Hardhat Project Configuration and Contract Verification",id:"an-example-of-hardhat-project-configuration-and-contract-verification",level:3},{value:"The configuration in the hardhat.config.js file is as follows:",id:"the-configuration-in-the-hardhatconfigjs-file-is-as-follows",level:3},{value:"Steps to Verify a Contract\uff1a",id:"steps-to-verify-a-contract",level:3},{value:"Contract-related APls:",id:"contract-related-apls",level:2},{value:"Get Contract ABI for Verified Contract Source Codes",id:"get-contract-abi-for-verified-contract-source-codes",level:3},{value:"Get Contract Source Code for Verified Contract Source Codes",id:"get-contract-source-code-for-verified-contract-source-codes",level:3},{value:"Get Contract Creator and Creation Tx Hash",id:"get-contract-creator-and-creation-tx-hash",level:3},{value:"Verify Source Code (beta)",id:"verify-source-code-beta",level:3},{value:"Source Code Submission Gist (returns a guid as part of the result upon success):",id:"source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success",level:3},{value:"Check Source code verification submission status:",id:"check-source-code-verification-submission-status",level:3}],h={toc:m};function f(e){var n=e.components,t=(0,a.Z)(e,l);return(0,s.kt)("wrapper",(0,r.Z)({},h,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"verify-the-contract-through-hardhat-verify"},"Verify the contract through hardhat verify"),(0,s.kt)("p",null,"The official recommendation of Hardhat is to use hardhat-verify along with hardhat-toolbox for custom browser API configurations and contract verification."),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Please use hardhat-verify for contract verification , hardhat-etherscan is not recommended."))),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify"},"https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify")),(0,s.kt)("h3",{id:"an-example-of-hardhat-project-configuration-and-contract-verification"},"An example of Hardhat Project Configuration and Contract Verification"),(0,s.kt)("p",null,"The package.json file needs to add the following dependencies:"),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"Please use hardhat-verify for contract verification, hardhat-etherscan is not recommended."))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'// Adjust the version according to needs\n"@nomicfoundation/hardhat-toolbox": "^4.0.0",\n"@nomicfoundation/hardhat-verify": "^2.0.5",\n"hardhat": "^2.19.4"\n')),(0,s.kt)("p",null,"Execute the npm install command to install dependencies."),(0,s.kt)("h3",{id:"the-configuration-in-the-hardhatconfigjs-file-is-as-follows"},"The configuration in the hardhat.config.js file is as follows:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'require("@nomicfoundation/hardhat-toolbox"); // The toolbox library supports customChains configuration.\nrequire("@nomicfoundation/hardhat-verify");\n\nmodule.exports = {\n solidity: {\n version: "0.8.23", // Configure the solidity version for your own project, noting that the solidity version for deploying and verifying contracts should be the same.\n settings: {\n // Configure this part according to needs.\n optimizer:{\n enabled: true,\n runs: 200,\n }\n }\n },\n networks: {\n bitlayertestnet: {\n url: \'https://testnet-rpc.bitlayer.org\', \n chainId: 200810,\n accounts: ["private key of your account"]\n },\n bitlayer: {\n url: \'https://rpc.bitlayer.org\',\n chainId: 200901,\n accounts: ["private key of your account"]\n },\n },\n etherscan: {\n apiKey: {\n // An API key needs to be written as the hardhat-verify plugin will require it, and the verification will fail if it is not provided.\n // The current bitlayer browser has not yet enabled API key verification, so you can write any random string for now.\n bitlayertestnet: "1234",\n bitlayer: "1234"\n },\n customChains: [\n {\n network: "bitlayertestnet",\n chainId: 200810,\n urls: {\n apiURL: "https://api-testnet.btrscan.com/scan/api",\n browserURL: "https://testnet.btrscan.com/"\n }\n },\n {\n network: "bitlayer",\n chainId: 200901,\n urls: {\n apiURL: "https://api.btrscan.com/scan/api",\n browserURL: "https://www.btrscan.com/"\n }\n }\n ]\n }\n};\n')),(0,s.kt)("h3",{id:"steps-to-verify-a-contract"},"Steps to Verify a Contract\uff1a"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"Contract compilation requires compiling the contract according to the configuration parameters used during deployment (such as the Solidity version, whether the optimizer is enabled, etc.), otherwise the compiled bytecode will not match the bytecode of the contract on the blockchain, and verification will not be possible."),(0,s.kt)("li",{parentName:"ol"},"When verifying a contract, you need to specify the network, contract path, contract name, etc. If the contract constructor has parameters, you need to include the constructor arguments that were passed in during the deployment of the contract. Provide as many as there are, and if there are no parameters, you don't need to write \"constructorArguments\". Here's an example:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},"npx hardhat verify --network bitlayer --contract contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy ${contract_address} constructorArguments1 constructorArguments2 constructorArguments3...\n")),(0,s.kt)("ol",{start:3},(0,s.kt)("li",{parentName:"ol"},"Regarding passing constructor arguments, if the constructor arguments are of complex types, such as address[] or custom structs, it can be inconvenient to pass them through the command line. Instead, you can use --constructor-args arguments.js, where arguments.js exports the parameters in order.")),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Example of an arguments.js file")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'module.exports = [\n "arg0",\n "arg1"\n];\n')),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Example of an arguments.js file for complex types")),(0,s.kt)("p",null,"For example, the contract is defined with the following constructor:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},"struct Point {\n uint x;\n uint y;\n}\n\ncontract Foo {\n constructor (uint x, string s, Point memory point, bytes b) { ... }\n}\n")),(0,s.kt)("p",null,"Then the arguments.js file can be written like this:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'module.exports = [\n 50,\n "a string argument",\n {\n x: 10,\n y: 5,\n },\n // bytes have to be 0x-prefixed\n "0xabcdef",\n];\n')),(0,s.kt)("p",null,"An example of using arguments.js file to pass arguments and execute the verify command is as follows:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},"npx hardhat verify --constructor-args arguments.js --contract contracts/path/path/SimpleContract.sol:SimpleContract DEPLOYED_CONTRACT_ADDRESS\n")),(0,s.kt)("h2",{id:"contract-related-apls"},"Contract-related APls:"),(0,s.kt)("h3",{id:"get-contract-abi-for-verified-contract-source-codes"},"Get Contract ABI for Verified Contract Source Codes"),(0,s.kt)("p",null,"Returns the Contract Application Binary Interface ( ABI ) of a verified smart contract."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=contract\n&action=getabi\n&address=0xc9121e476155ebf0b794b7b351808af3787e727d\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d"},"browser")," \ud83d\udd17"),(0,s.kt)(i.Z,{mdxType:"Tabs"},(0,s.kt)(o.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"contract address")," that has a verified source code")))),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'var Web3 = require(\'web3\');\nvar web3 = new Web3(new Web3.providers.HttpProvider());\nvar version = web3.version.api;\n\n$.getJSON(\'https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d\', function (data) {\n\u2003var contractABI = "";\n\u2003\u2003contractABI = JSON.parse(data.result);\n\u2003if (contractABI != \'\'){\n\u2003\u2003var MyContract = web3.eth.contract(contractABI);\n\u2003\u2003var myContractInstance = MyContract.at("0xc9121e476155ebf0b794b7b351808af3787e727d");\n\u2003\u2003var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");\n\u2003\u2003console.log("result1 : " + result);\n\u2003\u2003var result = myContractInstance.members(1);\n\u2003\u2003console.log("result2 : " + result);\n\u2003} else {\n\u2003\u2003console.log("Error");\n\u2003}\n});\n'))),(0,s.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},"Sample Response",(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": 1,\n "message": "OK",\n "result": "[{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"name_\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"indexed\\":false,\\"name\\":\\"symbol_\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Approval\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"from\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":true,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Transfer\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"allowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"approve\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"balanceOf\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint8\\",\\"type\\":\\"uint8\\"}],\\"inputs\\":[],\\"name\\":\\"decimals\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"subtractedValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"decreaseAllowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"spender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"addedValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"increaseAllowance\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"name\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"symbol\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[],\\"name\\":\\"totalSupply\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transfer\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"from\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"to\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"transferFrom\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]"\n}\n')))),(0,s.kt)("h3",{id:"get-contract-source-code-for-verified-contract-source-codes"},"Get Contract Source Code for Verified Contract Source Codes"),(0,s.kt)("p",null,"Returns the source code of a verified smart contract."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=contract\n&action=getsourcecode\n&address=0xc9121e476155ebf0b794b7b351808af3787e727d\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=contract&action=getsourcecode&address=0xc9121e476155ebf0b794b7b351808af3787e727d"},"browser")," \ud83d\udd17"),(0,s.kt)(i.Z,{mdxType:"Tabs"},(0,s.kt)(o.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"address"),(0,s.kt)("td",{parentName:"tr",align:null},"the ",(0,s.kt)("inlineCode",{parentName:"td"},"contract address")," that has a verified source code"))))),(0,s.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},"sample response",(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},' { \n "status":"1",\n "message":"OK",\n "result":[\n "proxy": "",\n "evmversion": "default",\n "abi": "[{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"contractName\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"constructor\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"target\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"AddressEmptyCode\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"AddressInsufficientBalance\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"ECDSAInvalidSignature\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"length\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"ECDSAInvalidSignatureLength\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"s\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"}],\\"name\\":\\"ECDSAInvalidSignatureS\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"FailedInnerCall\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"account\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"currentNonce\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"InvalidAccountNonce\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"InvalidShortString\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"token\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"SafeERC20FailedOperation\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"str\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"name\\":\\"StringTooLong\\",\\"anonymous\\":false,\\"type\\":\\"error\\"},{\\"inputs\\":[],\\"name\\":\\"EIP712DomainChanged\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":true,\\"name\\":\\"approver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountIn\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"amountOut\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"deadline\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"PermitAndSwap\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"sender\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"value\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Received\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"SetMaxOutput\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOp\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"on\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"SetOperator\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"valut\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"status\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"SetVaults\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOwner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"TransferOwnership\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"Withdrawn\\",\\"anonymous\\":false,\\"type\\":\\"event\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"}],\\"inputs\\":[],\\"name\\":\\"DOMAIN_SEPARATOR\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[],\\"name\\":\\"MAX_BTC_AMOUNT\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"fields\\",\\"internalType\\":\\"bytes1\\",\\"type\\":\\"bytes1\\"},{\\"name\\":\\"name\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"name\\":\\"version\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"},{\\"name\\":\\"chainId\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"name\\":\\"verifyingContract\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"name\\":\\"salt\\",\\"internalType\\":\\"bytes32\\",\\"type\\":\\"bytes32\\"},{\\"name\\":\\"extensions\\",\\"internalType\\":\\"uint256[]\\",\\"type\\":\\"uint256[]\\"}],\\"inputs\\":[],\\"name\\":\\"eip712Domain\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"string\\",\\"type\\":\\"string\\"}],\\"inputs\\":[],\\"name\\":\\"name\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"_owner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"nonces\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"operators\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"inputs\\":[],\\"name\\":\\"owner\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"approver\\",\\"internalType\\":\\"address payable\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amountIn\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"deadline\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"price\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"amountOut\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"},{\\"indexed\\":false,\\"name\\":\\"permitSig\\",\\"internalType\\":\\"bytes\\",\\"type\\":\\"bytes\\"},{\\"indexed\\":false,\\"name\\":\\"swapSig\\",\\"internalType\\":\\"bytes\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"permitAndSwap\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newValue\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"setMaxOutput\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOp\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"_on\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"setOperator\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"valut\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"status\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"name\\":\\"setVaults\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"newOwner\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"transferOwnership\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[{\\"name\\":\\"\\",\\"internalType\\":\\"bool\\",\\"type\\":\\"bool\\"}],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"}],\\"name\\":\\"vaults\\",\\"anonymous\\":false,\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address payable\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"withdrawBTC\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"outputs\\":[],\\"inputs\\":[{\\"indexed\\":false,\\"name\\":\\"tokenAddress\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"receiver\\",\\"internalType\\":\\"address\\",\\"type\\":\\"address\\"},{\\"indexed\\":false,\\"name\\":\\"amount\\",\\"internalType\\":\\"uint256\\",\\"type\\":\\"uint256\\"}],\\"name\\":\\"withdrawERC20\\",\\"anonymous\\":false,\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"},{\\"anonymous\\":false,\\"stateMutability\\":\\"payable\\",\\"type\\":\\"receive\\"}]",\n "optimizationUsed": "0",\n "runs": "200",\n "licenseType": "None",\n "compilerVersion": "v0.8.20+commit.a1b79de6",\n "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d546f6b656e45786368616e676500000000000000000000000000000000000000",\n "swarmSource": "",\n "library": "",\n "implementation": "",\n "contractName": "TokenExchange",\n "SourceCode": "{\\"language\\":\\"Solidity\\",\\"sources\\":{\\"@openzeppelin/contracts/interfaces/IERC5267.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\ninterface IERC5267 {\\\\n /**\\\\n * @dev MAY be emitted to signal that the domain could have changed.\\\\n */\\\\n event EIP712DomainChanged();\\\\n\\\\n /**\\\\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\\\n * signature.\\\\n */\\\\n function eip712Domain()\\\\n external\\\\n view\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n );\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\\\n *\\\\n * Adds the {permit} method, which can be used to change an account\'s ERC20 allowance (see {IERC20-allowance}) by\\\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn\'t\\\\n * need to send a transaction, and thus is not required to hold Ether at all.\\\\n *\\\\n * ==== Security Considerations\\\\n *\\\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\\\n * generally recommended is:\\\\n *\\\\n * ```solidity\\\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\\\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\\\n * doThing(..., value);\\\\n * }\\\\n *\\\\n * function doThing(..., uint256 value) public {\\\\n * token.safeTransferFrom(msg.sender, address(this), value);\\\\n * ...\\\\n * }\\\\n * ```\\\\n *\\\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\\\n * {SafeERC20-safeTransferFrom}).\\\\n *\\\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\\\n * contracts should have entry points that don\'t rely on permit.\\\\n */\\\\ninterface IERC20Permit {\\\\n /**\\\\n * @dev Sets `value` as the allowance of `spender` over ``owner``\'s tokens,\\\\n * given ``owner``\'s signed approval.\\\\n *\\\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\\\n * ordering also apply here.\\\\n *\\\\n * Emits an {Approval} event.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `spender` cannot be the zero address.\\\\n * - `deadline` must be a timestamp in the future.\\\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\\\n * over the EIP712-formatted function arguments.\\\\n * - the signature must use ``owner``\'s current nonce (see {nonces}).\\\\n *\\\\n * For more information on the signature format, see the\\\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\\\n * section].\\\\n *\\\\n * CAUTION: See Security Considerations above.\\\\n */\\\\n function permit(\\\\n address owner,\\\\n address spender,\\\\n uint256 value,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) external;\\\\n\\\\n /**\\\\n * @dev Returns the current nonce for `owner`. This value must be\\\\n * included whenever a signature is generated for {permit}.\\\\n *\\\\n * Every successful call to {permit} increases ``owner``\'s nonce by one. This\\\\n * prevents a signature from being used multiple times.\\\\n */\\\\n function nonces(address owner) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\\\n */\\\\ninterface IERC20 {\\\\n /**\\\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\\\n * another (`to`).\\\\n *\\\\n * Note that `value` may be zero.\\\\n */\\\\n event Transfer(address indexed from, address indexed to, uint256 value);\\\\n\\\\n /**\\\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\\\n * a call to {approve}. `value` is the new allowance.\\\\n */\\\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens in existence.\\\\n */\\\\n function totalSupply() external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens owned by `account`.\\\\n */\\\\n function balanceOf(address account) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from the caller\'s account to `to`.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transfer(address to, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Returns the remaining number of tokens that `spender` will be\\\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\\\n * zero by default.\\\\n *\\\\n * This value changes when {approve} or {transferFrom} are called.\\\\n */\\\\n function allowance(address owner, address spender) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\\\n * caller\'s tokens.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\\\n * that someone may use both the old and the new allowance by unfortunate\\\\n * transaction ordering. One possible solution to mitigate this race\\\\n * condition is to first reduce the spender\'s allowance to 0 and set the\\\\n * desired value afterwards:\\\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\\\n *\\\\n * Emits an {Approval} event.\\\\n */\\\\n function approve(address spender, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\\\\n * allowance mechanism. `value` is then deducted from the caller\'s\\\\n * allowance.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transferFrom(address from, address to, uint256 value) external returns (bool);\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {IERC20} from \\\\\\"../IERC20.sol\\\\\\";\\\\nimport {IERC20Permit} from \\\\\\"../extensions/IERC20Permit.sol\\\\\\";\\\\nimport {Address} from \\\\\\"../../../utils/Address.sol\\\\\\";\\\\n\\\\n/**\\\\n * @title SafeERC20\\\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\\\n * contract returns false). Tokens that return no value (and instead revert or\\\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\\\n * successful.\\\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\\\n */\\\\nlibrary SafeERC20 {\\\\n using Address for address;\\\\n\\\\n /**\\\\n * @dev An operation with an ERC20 token failed.\\\\n */\\\\n error SafeERC20FailedOperation(address token);\\\\n\\\\n /**\\\\n * @dev Indicates a failed `decreaseAllowance` request.\\\\n */\\\\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Increase the calling contract\'s allowance toward `spender` by `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\\\n uint256 oldAllowance = token.allowance(address(this), spender);\\\\n forceApprove(token, spender, oldAllowance + value);\\\\n }\\\\n\\\\n /**\\\\n * @dev Decrease the calling contract\'s allowance toward `spender` by `requestedDecrease`. If `token` returns no\\\\n * value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\\\n unchecked {\\\\n uint256 currentAllowance = token.allowance(address(this), spender);\\\\n if (currentAllowance < requestedDecrease) {\\\\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\\\n }\\\\n forceApprove(token, spender, currentAllowance - requestedDecrease);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Set the calling contract\'s allowance toward `spender` to `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\\\n */\\\\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\\\\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\\\n\\\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\\\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\\\n _callOptionalReturn(token, approvalCall);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n */\\\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\\\n // We need to perform a low level call here, to bypass Solidity\'s return data size checking mechanism, since\\\\n // we\'re implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\\\n // the target address contains contract code and also asserts for success in the low-level call.\\\\n\\\\n bytes memory returndata = address(token).functionCall(data);\\\\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\\\\n revert SafeERC20FailedOperation(address(token));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n *\\\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\\\n */\\\\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\\\n // We need to perform a low level call here, to bypass Solidity\'s return data size checking mechanism, since\\\\n // we\'re implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\\\n // and not revert is the subcall reverts.\\\\n\\\\n (bool success, bytes memory returndata) = address(token).call(data);\\\\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Address.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Collection of functions related to the address type\\\\n */\\\\nlibrary Address {\\\\n /**\\\\n * @dev The ETH balance of the account is not enough to perform the operation.\\\\n */\\\\n error AddressInsufficientBalance(address account);\\\\n\\\\n /**\\\\n * @dev There\'s no code at `target` (it is not a contract).\\\\n */\\\\n error AddressEmptyCode(address target);\\\\n\\\\n /**\\\\n * @dev A call to an address target failed. The target may have reverted.\\\\n */\\\\n error FailedInnerCall();\\\\n\\\\n /**\\\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\\\n * `recipient`, forwarding all available gas and reverting on errors.\\\\n *\\\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\\\n * imposed by `transfer`, making them unable to receive funds via\\\\n * `transfer`. {sendValue} removes this limitation.\\\\n *\\\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\\\n *\\\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\\\n * taken to not create reentrancy vulnerabilities. Consider using\\\\n * {ReentrancyGuard} or the\\\\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\\\n */\\\\n function sendValue(address payable recipient, uint256 amount) internal {\\\\n if (address(this).balance < amount) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n\\\\n (bool success, ) = recipient.call{value: amount}(\\\\\\"\\\\\\");\\\\n if (!success) {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Performs a Solidity function call using a low level `call`. A\\\\n * plain `call` is an unsafe replacement for a function call: use this\\\\n * function instead.\\\\n *\\\\n * If `target` reverts with a revert reason or custom error, it is bubbled\\\\n * up by this function (like regular Solidity function calls). However, if\\\\n * the call reverted with no returned reason, this function reverts with a\\\\n * {FailedInnerCall} error.\\\\n *\\\\n * Returns the raw returned data. To convert to the expected return value,\\\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `target` must be a contract.\\\\n * - calling `target` with `data` must not revert.\\\\n */\\\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n return functionCallWithValue(target, data, 0);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but also transferring `value` wei to `target`.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - the calling contract must have an ETH balance of at least `value`.\\\\n * - the called Solidity function must be `payable`.\\\\n */\\\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\\\n if (address(this).balance < value) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a static call.\\\\n */\\\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.staticcall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a delegate call.\\\\n */\\\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\\\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\\\n * unsuccessful call.\\\\n */\\\\n function verifyCallResultFromTarget(\\\\n address target,\\\\n bool success,\\\\n bytes memory returndata\\\\n ) internal view returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n // only check if target is a contract if the call was successful and the return data is empty\\\\n // otherwise we already know that it was a contract\\\\n if (returndata.length == 0 && target.code.length == 0) {\\\\n revert AddressEmptyCode(target);\\\\n }\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn\'t, either by bubbling the\\\\n * revert reason or with a default {FailedInnerCall} error.\\\\n */\\\\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\\\n */\\\\n function _revert(bytes memory returndata) private pure {\\\\n // Look for revert reason and bubble it up if present\\\\n if (returndata.length > 0) {\\\\n // The easiest way to bubble the revert reason is using memory via assembly\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let returndata_size := mload(returndata)\\\\n revert(add(32, returndata), returndata_size)\\\\n }\\\\n } else {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\\\n *\\\\n * These functions can be used to verify that a message was signed by the holder\\\\n * of the private keys of a given address.\\\\n */\\\\nlibrary ECDSA {\\\\n enum RecoverError {\\\\n NoError,\\\\n InvalidSignature,\\\\n InvalidSignatureLength,\\\\n InvalidSignatureS\\\\n }\\\\n\\\\n /**\\\\n * @dev The signature derives the `address(0)`.\\\\n */\\\\n error ECDSAInvalidSignature();\\\\n\\\\n /**\\\\n * @dev The signature has an invalid length.\\\\n */\\\\n error ECDSAInvalidSignatureLength(uint256 length);\\\\n\\\\n /**\\\\n * @dev The signature has an S value that is in the upper half order.\\\\n */\\\\n error ECDSAInvalidSignatureS(bytes32 s);\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\\\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\\\n * and a bytes32 providing additional information about the error.\\\\n *\\\\n * If no error is returned, then the address can be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n *\\\\n * Documentation for signature generation:\\\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\\\\n if (signature.length == 65) {\\\\n bytes32 r;\\\\n bytes32 s;\\\\n uint8 v;\\\\n // ecrecover takes the signature parameters, and the only way to get them\\\\n // currently is to use assembly.\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r := mload(add(signature, 0x20))\\\\n s := mload(add(signature, 0x40))\\\\n v := byte(0, mload(add(signature, 0x60)))\\\\n }\\\\n return tryRecover(hash, v, r, s);\\\\n } else {\\\\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with\\\\n * `signature`. This address can then be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n */\\\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\\\n *\\\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\\\\n unchecked {\\\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\\\n // We do not check for an overflow here since the shift operation results in 0 or 1.\\\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\\\n return tryRecover(hash, v, r, s);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function tryRecover(\\\\n bytes32 hash,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal pure returns (address, RecoverError, bytes32) {\\\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\\\n // the valid range for s in (301): 0 < s < secp256k1n \xf7 2 + 1, and for v in (302): v \u2208 {27, 28}. Most\\\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\\\n //\\\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\\\n // these malleable signatures as well.\\\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\\\n return (address(0), RecoverError.InvalidSignatureS, s);\\\\n }\\\\n\\\\n // If the signature is valid (and not malleable), return the signer address\\\\n address signer = ecrecover(hash, v, r, s);\\\\n if (signer == address(0)) {\\\\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\\\\n }\\\\n\\\\n return (signer, RecoverError.NoError, bytes32(0));\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\\\n */\\\\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\\\\n if (error == RecoverError.NoError) {\\\\n return; // no error: do nothing\\\\n } else if (error == RecoverError.InvalidSignature) {\\\\n revert ECDSAInvalidSignature();\\\\n } else if (error == RecoverError.InvalidSignatureLength) {\\\\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\\\\n } else if (error == RecoverError.InvalidSignatureS) {\\\\n revert ECDSAInvalidSignatureS(errorArg);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {MessageHashUtils} from \\\\\\"./MessageHashUtils.sol\\\\\\";\\\\nimport {ShortStrings, ShortString} from \\\\\\"../ShortStrings.sol\\\\\\";\\\\nimport {IERC5267} from \\\\\\"../../interfaces/IERC5267.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\\\n *\\\\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\\\\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\\\\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\\\\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\\\\n *\\\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\\\n * ({_hashTypedDataV4}).\\\\n *\\\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\\\n *\\\\n * NOTE: This contract implements the version of the encoding known as \\\\\\"v4\\\\\\", as implemented by the JSON RPC method\\\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\\\n *\\\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\\\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\\\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\\\n *\\\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\\\\n */\\\\nabstract contract EIP712 is IERC5267 {\\\\n using ShortStrings for *;\\\\n\\\\n bytes32 private constant TYPE_HASH =\\\\n keccak256(\\\\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\\\\");\\\\n\\\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\\\n // invalidate the cached domain separator if the chain id changes.\\\\n bytes32 private immutable _cachedDomainSeparator;\\\\n uint256 private immutable _cachedChainId;\\\\n address private immutable _cachedThis;\\\\n\\\\n bytes32 private immutable _hashedName;\\\\n bytes32 private immutable _hashedVersion;\\\\n\\\\n ShortString private immutable _name;\\\\n ShortString private immutable _version;\\\\n string private _nameFallback;\\\\n string private _versionFallback;\\\\n\\\\n /**\\\\n * @dev Initializes the domain separator and parameter caches.\\\\n *\\\\n * The meaning of `name` and `version` is specified in\\\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\\\n *\\\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\\\n * - `version`: the current major version of the signing domain.\\\\n *\\\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\\\n * contract upgrade].\\\\n */\\\\n constructor(string memory name, string memory version) {\\\\n _name = name.toShortStringWithFallback(_nameFallback);\\\\n _version = version.toShortStringWithFallback(_versionFallback);\\\\n _hashedName = keccak256(bytes(name));\\\\n _hashedVersion = keccak256(bytes(version));\\\\n\\\\n _cachedChainId = block.chainid;\\\\n _cachedDomainSeparator = _buildDomainSeparator();\\\\n _cachedThis = address(this);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the domain separator for the current chain.\\\\n */\\\\n function _domainSeparatorV4() internal view returns (bytes32) {\\\\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\\\n return _cachedDomainSeparator;\\\\n } else {\\\\n return _buildDomainSeparator();\\\\n }\\\\n }\\\\n\\\\n function _buildDomainSeparator() private view returns (bytes32) {\\\\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\\\n *\\\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\\\n *\\\\n * ```solidity\\\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\\\n * keccak256(\\\\\\"Mail(address to,string contents)\\\\\\"),\\\\n * mailTo,\\\\n * keccak256(bytes(mailContents))\\\\n * )));\\\\n * address signer = ECDSA.recover(digest, signature);\\\\n * ```\\\\n */\\\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\\\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\\\\n }\\\\n\\\\n /**\\\\n * @dev See {IERC-5267}.\\\\n */\\\\n function eip712Domain()\\\\n public\\\\n view\\\\n virtual\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n )\\\\n {\\\\n return (\\\\n hex\\\\\\"0f\\\\\\", // 01111\\\\n _EIP712Name(),\\\\n _EIP712Version(),\\\\n block.chainid,\\\\n address(this),\\\\n bytes32(0),\\\\n new uint256[](0)\\\\n );\\\\n }\\\\n\\\\n /**\\\\n * @dev The name parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _name which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Name() internal view returns (string memory) {\\\\n return _name.toStringWithFallback(_nameFallback);\\\\n }\\\\n\\\\n /**\\\\n * @dev The version parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _version which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Version() internal view returns (string memory) {\\\\n return _version.toStringWithFallback(_versionFallback);\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Strings} from \\\\\\"../Strings.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\\\\n *\\\\n * The library provides methods for generating a hash of a message that conforms to the\\\\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\\\\n * specifications.\\\\n */\\\\nlibrary MessageHashUtils {\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing a bytes32 `messageHash` with\\\\n * `\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\"` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\\\\n * keccak256, although any bytes32 value can be safely used because the final digest will\\\\n * be re-hashed.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(0x00, \\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\") // 32 is the bytes-length of messageHash\\\\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\\\\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `message` with\\\\n * `\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\" + len(message)` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\\\\n return\\\\n keccak256(bytes.concat(\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\", bytes(Strings.toString(message.length)), message));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x00` (data with intended validator).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `data` with `\\\\\\"\\\\\\\\x19\\\\\\\\x00\\\\\\"` and the intended\\\\n * `validator` address. Then hashing the result.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\\\n return keccak256(abi.encodePacked(hex\\\\\\"19_00\\\\\\", validator, data));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\\\\n *\\\\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\\\\n * `\\\\\\\\x19\\\\\\\\x01` and hashing the result. It corresponds to the hash signed by the\\\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let ptr := mload(0x40)\\\\n mstore(ptr, hex\\\\\\"19_01\\\\\\")\\\\n mstore(add(ptr, 0x02), domainSeparator)\\\\n mstore(add(ptr, 0x22), structHash)\\\\n digest := keccak256(ptr, 0x42)\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/math/Math.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard math utilities missing in the Solidity language.\\\\n */\\\\nlibrary Math {\\\\n /**\\\\n * @dev Muldiv operation overflow.\\\\n */\\\\n error MathOverflowedMulDiv();\\\\n\\\\n enum Rounding {\\\\n Floor, // Toward negative infinity\\\\n Ceil, // Toward positive infinity\\\\n Trunc, // Toward zero\\\\n Expand // Away from zero\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n uint256 c = a + b;\\\\n if (c < a) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\\\n */\\\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b > a) return (false, 0);\\\\n return (true, a - b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n // Gas optimization: this is cheaper than requiring \'a\' not being zero, but the\\\\n // benefit is lost if \'b\' is also tested.\\\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\\\n if (a == 0) return (true, 0);\\\\n uint256 c = a * b;\\\\n if (c / a != b) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a / b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a % b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the largest of two numbers.\\\\n */\\\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two numbers.\\\\n */\\\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two numbers. The result is rounded towards\\\\n * zero.\\\\n */\\\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n // (a + b) / 2 can overflow.\\\\n return (a & b) + (a ^ b) / 2;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the ceiling of the division of two numbers.\\\\n *\\\\n * This differs from standard division with `/` in that it rounds towards infinity instead\\\\n * of rounding towards zero.\\\\n */\\\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n if (b == 0) {\\\\n // Guarantee the same behavior as in a regular Solidity division.\\\\n return a / b;\\\\n }\\\\n\\\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\\\n return a == 0 ? 0 : (a - 1) / b + 1;\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\\\n * denominator == 0.\\\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\\\n * Uniswap Labs also under MIT license.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\\\n unchecked {\\\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\\\n // variables such that product = prod1 * 2^256 + prod0.\\\\n uint256 prod0 = x * y; // Least significant 256 bits of the product\\\\n uint256 prod1; // Most significant 256 bits of the product\\\\n assembly {\\\\n let mm := mulmod(x, y, not(0))\\\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\\\n }\\\\n\\\\n // Handle non-overflow cases, 256 by 256 division.\\\\n if (prod1 == 0) {\\\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\\\n // The surrounding unchecked block does not change this fact.\\\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\\\n return prod0 / denominator;\\\\n }\\\\n\\\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\\\n if (denominator <= prod1) {\\\\n revert MathOverflowedMulDiv();\\\\n }\\\\n\\\\n ///////////////////////////////////////////////\\\\n // 512 by 256 division.\\\\n ///////////////////////////////////////////////\\\\n\\\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\\\n uint256 remainder;\\\\n assembly {\\\\n // Compute remainder using mulmod.\\\\n remainder := mulmod(x, y, denominator)\\\\n\\\\n // Subtract 256 bit number from 512 bit number.\\\\n prod1 := sub(prod1, gt(remainder, prod0))\\\\n prod0 := sub(prod0, remainder)\\\\n }\\\\n\\\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\\\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\\\n\\\\n uint256 twos = denominator & (0 - denominator);\\\\n assembly {\\\\n // Divide denominator by twos.\\\\n denominator := div(denominator, twos)\\\\n\\\\n // Divide [prod1 prod0] by twos.\\\\n prod0 := div(prod0, twos)\\\\n\\\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\\\n twos := add(div(sub(0, twos), twos), 1)\\\\n }\\\\n\\\\n // Shift in bits from prod1 into prod0.\\\\n prod0 |= prod1 * twos;\\\\n\\\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\\\n uint256 inverse = (3 * denominator) ^ 2;\\\\n\\\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel\'s lifting lemma, this also\\\\n // works in modular arithmetic, doubling the correct bits in each step.\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\\\n\\\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\\\n // less than 2^256, this is the final result. We don\'t need to compute the high bits of the result and prod1\\\\n // is no longer required.\\\\n result = prod0 * inverse;\\\\n return result;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\\\n uint256 result = mulDiv(x, y, denominator);\\\\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\\\\n result += 1;\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\\\n * towards zero.\\\\n *\\\\n * Inspired by Henry S. Warren, Jr.\'s \\\\\\"Hacker\'s Delight\\\\\\" (Chapter 11).\\\\n */\\\\n function sqrt(uint256 a) internal pure returns (uint256) {\\\\n if (a == 0) {\\\\n return 0;\\\\n }\\\\n\\\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\\\n //\\\\n // We know that the \\\\\\"msb\\\\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\\\n //\\\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\\\n // \u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\\\n // \u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\\\n //\\\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\\\n uint256 result = 1 << (log2(a) >> 1);\\\\n\\\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\\\n // since it is the square root of a uint256. Newton\'s method converges quadratically (precision doubles at\\\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\\\n // into the expected uint128 result.\\\\n unchecked {\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n return min(result, a / result);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\\\n */\\\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = sqrt(a);\\\\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 128;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 64;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 32;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 16;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n value >>= 8;\\\\n result += 8;\\\\n }\\\\n if (value >> 4 > 0) {\\\\n value >>= 4;\\\\n result += 4;\\\\n }\\\\n if (value >> 2 > 0) {\\\\n value >>= 2;\\\\n result += 2;\\\\n }\\\\n if (value >> 1 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log2(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >= 10 ** 64) {\\\\n value /= 10 ** 64;\\\\n result += 64;\\\\n }\\\\n if (value >= 10 ** 32) {\\\\n value /= 10 ** 32;\\\\n result += 32;\\\\n }\\\\n if (value >= 10 ** 16) {\\\\n value /= 10 ** 16;\\\\n result += 16;\\\\n }\\\\n if (value >= 10 ** 8) {\\\\n value /= 10 ** 8;\\\\n result += 8;\\\\n }\\\\n if (value >= 10 ** 4) {\\\\n value /= 10 ** 4;\\\\n result += 4;\\\\n }\\\\n if (value >= 10 ** 2) {\\\\n value /= 10 ** 2;\\\\n result += 2;\\\\n }\\\\n if (value >= 10 ** 1) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log10(value);\\\\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n *\\\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\\\n */\\\\n function log256(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 16;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 8;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 4;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 2;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log256(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\\\n */\\\\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\\\n return uint8(rounding) % 2 == 1;\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/math/SignedMath.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard signed math utilities missing in the Solidity language.\\\\n */\\\\nlibrary SignedMath {\\\\n /**\\\\n * @dev Returns the largest of two signed numbers.\\\\n */\\\\n function max(int256 a, int256 b) internal pure returns (int256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two signed numbers.\\\\n */\\\\n function min(int256 a, int256 b) internal pure returns (int256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two signed numbers without overflow.\\\\n * The result is rounded towards zero.\\\\n */\\\\n function average(int256 a, int256 b) internal pure returns (int256) {\\\\n // Formula from the book \\\\\\"Hacker\'s Delight\\\\\\"\\\\n int256 x = (a & b) + ((a ^ b) >> 1);\\\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the absolute unsigned value of a signed value.\\\\n */\\\\n function abs(int256 n) internal pure returns (uint256) {\\\\n unchecked {\\\\n // must be unchecked in order to support `n = type(int256).min`\\\\n return uint256(n >= 0 ? n : -n);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Nonces.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\\\\n */\\\\nabstract contract Nonces {\\\\n /**\\\\n * @dev The nonce used for an `account` is not the expected current nonce.\\\\n */\\\\n error InvalidAccountNonce(address account, uint256 currentNonce);\\\\n\\\\n mapping(address account => uint256) private _nonces;\\\\n\\\\n /**\\\\n * @dev Returns the next unused nonce for an address.\\\\n */\\\\n function nonces(address owner) public view virtual returns (uint256) {\\\\n return _nonces[owner];\\\\n }\\\\n\\\\n /**\\\\n * @dev Consumes a nonce.\\\\n *\\\\n * Returns the current value and increments nonce.\\\\n */\\\\n function _useNonce(address owner) internal virtual returns (uint256) {\\\\n // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\\\\n // decremented or reset. This guarantees that the nonce never overflows.\\\\n unchecked {\\\\n // It is important to do x++ and not ++x here.\\\\n return _nonces[owner]++;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\\\\n */\\\\n function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\\\\n uint256 current = _useNonce(owner);\\\\n if (nonce != current) {\\\\n revert InvalidAccountNonce(owner, current);\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/ShortStrings.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {StorageSlot} from \\\\\\"./StorageSlot.sol\\\\\\";\\\\n\\\\n// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |\\\\n// | length | 0x BB |\\\\ntype ShortString is bytes32;\\\\n\\\\n/**\\\\n * @dev This library provides functions to convert short memory strings\\\\n * into a `ShortString` type that can be used as an immutable variable.\\\\n *\\\\n * Strings of arbitrary length can be optimized using this library if\\\\n * they are short enough (up to 31 bytes) by packing them with their\\\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\\\n * fallback mechanism can be used for every other case.\\\\n *\\\\n * Usage example:\\\\n *\\\\n * ```solidity\\\\n * contract Named {\\\\n * using ShortStrings for *;\\\\n *\\\\n * ShortString private immutable _name;\\\\n * string private _nameFallback;\\\\n *\\\\n * constructor(string memory contractName) {\\\\n * _name = contractName.toShortStringWithFallback(_nameFallback);\\\\n * }\\\\n *\\\\n * function name() external view returns (string memory) {\\\\n * return _name.toStringWithFallback(_nameFallback);\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary ShortStrings {\\\\n // Used as an identifier for strings longer than 31 bytes.\\\\n bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\\\n\\\\n error StringTooLong(string str);\\\\n error InvalidShortString();\\\\n\\\\n /**\\\\n * @dev Encode a string of at most 31 chars into a `ShortString`.\\\\n *\\\\n * This will trigger a `StringTooLong` error is the input string is too long.\\\\n */\\\\n function toShortString(string memory str) internal pure returns (ShortString) {\\\\n bytes memory bstr = bytes(str);\\\\n if (bstr.length > 31) {\\\\n revert StringTooLong(str);\\\\n }\\\\n return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a `ShortString` back to a \\\\\\"normal\\\\\\" string.\\\\n */\\\\n function toString(ShortString sstr) internal pure returns (string memory) {\\\\n uint256 len = byteLength(sstr);\\\\n // using `new string(len)` would work locally but is not memory safe.\\\\n string memory str = new string(32);\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(str, len)\\\\n mstore(add(str, 0x20), sstr)\\\\n }\\\\n return str;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a `ShortString`.\\\\n */\\\\n function byteLength(ShortString sstr) internal pure returns (uint256) {\\\\n uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\\\n if (result > 31) {\\\\n revert InvalidShortString();\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\\\n */\\\\n function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\\\n if (bytes(value).length < 32) {\\\\n return toShortString(value);\\\\n } else {\\\\n StorageSlot.getStringSlot(store).value = value;\\\\n return ShortString.wrap(FALLBACK_SENTINEL);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\\\n */\\\\n function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return toString(value);\\\\n } else {\\\\n return store;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\\\\n * {setWithFallback}.\\\\n *\\\\n * WARNING: This will return the \\\\\\"byte length\\\\\\" of the string. This may not reflect the actual length in terms of\\\\n * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\\\n */\\\\n function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return byteLength(value);\\\\n } else {\\\\n return bytes(store).length;\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/StorageSlot.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Library for reading and writing primitive types to specific storage slots.\\\\n *\\\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\\\n *\\\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\\\n *\\\\n * Example usage to set ERC1967 implementation slot:\\\\n * ```solidity\\\\n * contract ERC1967 {\\\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\\\n *\\\\n * function _getImplementation() internal view returns (address) {\\\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\\\n * }\\\\n *\\\\n * function _setImplementation(address newImplementation) internal {\\\\n * require(newImplementation.code.length > 0);\\\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary StorageSlot {\\\\n struct AddressSlot {\\\\n address value;\\\\n }\\\\n\\\\n struct BooleanSlot {\\\\n bool value;\\\\n }\\\\n\\\\n struct Bytes32Slot {\\\\n bytes32 value;\\\\n }\\\\n\\\\n struct Uint256Slot {\\\\n uint256 value;\\\\n }\\\\n\\\\n struct StringSlot {\\\\n string value;\\\\n }\\\\n\\\\n struct BytesSlot {\\\\n bytes value;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\\\n */\\\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\\\n */\\\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\\\n */\\\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\\\n */\\\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\\\n */\\\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\\\n */\\\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n}\\\\n\\"},\\"@openzeppelin/contracts/utils/Strings.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Math} from \\\\\\"./math/Math.sol\\\\\\";\\\\nimport {SignedMath} from \\\\\\"./math/SignedMath.sol\\\\\\";\\\\n\\\\n/**\\\\n * @dev String operations.\\\\n */\\\\nlibrary Strings {\\\\n bytes16 private constant HEX_DIGITS = \\\\\\"0123456789abcdef\\\\\\";\\\\n uint8 private constant ADDRESS_LENGTH = 20;\\\\n\\\\n /**\\\\n * @dev The `value` string doesn\'t fit in the specified `length`.\\\\n */\\\\n error StringsInsufficientHexLength(uint256 value, uint256 length);\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n uint256 length = Math.log10(value) + 1;\\\\n string memory buffer = new string(length);\\\\n uint256 ptr;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n ptr := add(buffer, add(32, length))\\\\n }\\\\n while (true) {\\\\n ptr--;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\\\n }\\\\n value /= 10;\\\\n if (value == 0) break;\\\\n }\\\\n return buffer;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toStringSigned(int256 value) internal pure returns (string memory) {\\\\n return string.concat(value < 0 ? \\\\\\"-\\\\\\" : \\\\\\"\\\\\\", toString(SignedMath.abs(value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\\\n */\\\\n function toHexString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n return toHexString(value, Math.log256(value) + 1);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\\\n */\\\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\\\n uint256 localValue = value;\\\\n bytes memory buffer = new bytes(2 * length + 2);\\\\n buffer[0] = \\\\\\"0\\\\\\";\\\\n buffer[1] = \\\\\\"x\\\\\\";\\\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\\\n buffer[i] = HEX_DIGITS[localValue & 0xf];\\\\n localValue >>= 4;\\\\n }\\\\n if (localValue != 0) {\\\\n revert StringsInsufficientHexLength(value, length);\\\\n }\\\\n return string(buffer);\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\\\n * representation.\\\\n */\\\\n function toHexString(address addr) internal pure returns (string memory) {\\\\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns true if the two strings are equal.\\\\n */\\\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\\\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\\\n }\\\\n}\\\\n\\"},\\"contracts/TokenExchange.sol\\":{\\"content\\":\\"// SPDX-License-Identifier: GPL-3.0\\\\npragma solidity ^0.8.0;\\\\n\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\\\\";\\\\nimport \\\\\\"@openzeppelin/contracts/utils/Nonces.sol\\\\\\";\\\\n\\\\n// utils/cryptography/EIP712.sol\\\\\\";\\\\n//IERC20Permit\\\\ncontract TokenExchange is EIP712, Nonces {\\\\n bytes32 private constant PERMIT_TYPEHASH =\\\\n keccak256(\\\\\\"Swap(address owner,address tokenAddress,uint256 amountIn,uint256 price,uint256 nonce,uint256 deadline)\\\\\\");\\\\n\\\\n address public owner;\\\\n // address public operator;\\\\n string private _nameString;\\\\n mapping (address => bool ) public vaults;\\\\n mapping (address => bool) public operators;\\\\n uint256 public MAX_BTC_AMOUNT = 0.005 ether;\\\\n\\\\n event PermitAndSwap(address indexed approver, address tokenAddress, uint256 amountIn, uint256 amountOut, uint256 deadline);\\\\n event Withdrawn(address tokenAddress,address receiver,uint256 amount);\\\\n event TransferOwnership(address newOwner);\\\\n event SetOperator(address newOp,bool on);\\\\n event Received(address sender, uint256 value);\\\\n event SetVaults(address valut, bool status);\\\\n event SetMaxOutput(uint256 newValue);\\\\n\\\\n constructor(string memory contractName) EIP712(contractName, \\\\\\"1\\\\\\"){\\\\n owner = msg.sender;\\\\n _nameString = contractName;\\\\n }\\\\n\\\\n modifier onlyOwner() {\\\\n require(msg.sender == owner, \\\\\\"Only_Owner\\\\\\");\\\\n _;\\\\n }\\\\n modifier onlyOperator() {\\\\n require(operators[msg.sender], \\\\\\"Only_Operator\\\\\\");\\\\n _;\\\\n }\\\\n\\\\n function permitAndSwap(\\\\n address payable approver, //\\\\n address tokenAddress, //\\\\n uint256 amountIn, //\\\\n uint256 deadline, //\\\\n uint256 price,\\\\n uint256 amountOut, // \\\\n bytes memory permitSig,\\\\n bytes memory swapSig\\\\n ) external onlyOperator {\\\\n require(vaults[tokenAddress],\\\\\\"TokenAddress_Not_Support\\\\\\");\\\\n require(approver != address(0),\\\\\\"Approver_Not_Zero_Address\\\\\\");\\\\n require(deadline >= block.timestamp,\\\\\\"Deadline_Timeout\\\\\\");\\\\n require(amountOut <= MAX_BTC_AMOUNT && amountOut <= address(this).balance,\\\\\\"AmountOut_Illegal\\\\\\");\\\\n (bytes32 pr, bytes32 ps, uint8 pv) = splitSignature(permitSig);\\\\n IERC20Permit(tokenAddress).permit(approver, address(this), amountIn, deadline, pv, pr, ps);\\\\n \\\\n (bytes32 sr, bytes32 ss, uint8 sv) = splitSignature(swapSig);\\\\n\\\\n verifySignture(approver, tokenAddress, amountIn, price, deadline, sv, sr, ss);\\\\n\\\\n\\\\n\\\\n SafeERC20.safeTransferFrom(IERC20(tokenAddress),approver,address(this),amountIn);\\\\n\\\\n (bool success, bytes memory returnData) = approver.call{value: amountOut}(\\\\\\"\\\\\\");\\\\n require(success, string(returnData));\\\\n emit PermitAndSwap(approver, tokenAddress, amountIn, amountOut, deadline);\\\\n }\\\\n function setVaults(address valut, bool status) external onlyOwner {\\\\n vaults[valut] = status;\\\\n emit SetVaults(valut, status);\\\\n }\\\\n function withdrawERC20(address tokenAddress, address receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= IERC20(tokenAddress).balanceOf(address(this)),\\\\\\"Token_Not_Enough\\\\\\");\\\\n SafeERC20.safeTransfer(IERC20(tokenAddress), receiver, amount);\\\\n emit Withdrawn(tokenAddress, receiver, amount); \\\\n }\\\\n function withdrawBTC(address payable receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= address(this).balance,\\\\\\"BTC_Not_Enough\\\\\\");\\\\n require(receiver != address(0),\\\\\\"Receiver_Should_Not_Zero_Address\\\\\\");\\\\n (bool success, bytes memory returnData) = receiver.call{value: amount}(\\\\\\"\\\\\\");\\\\n require(success, string(returnData));\\\\n emit Withdrawn(address(0), receiver, amount);\\\\n }\\\\n\\\\n function transferOwnership(address newOwner) external onlyOwner {\\\\n require(newOwner != address(0),\\\\\\"Owner_Should_Not_Zero_Address\\\\\\");\\\\n owner = newOwner;\\\\n emit TransferOwnership(newOwner);\\\\n }\\\\n function setOperator(address newOp,bool _on) external onlyOwner {\\\\n require(newOp != address(0),\\\\\\"Operator_Should_Not_Zero_Address\\\\\\");\\\\n operators[newOp] = _on;\\\\n emit SetOperator(newOp,_on);\\\\n }\\\\n\\\\n function setMaxOutput(uint256 newValue) external onlyOwner {\\\\n MAX_BTC_AMOUNT = newValue;\\\\n emit SetMaxOutput(newValue);\\\\n }\\\\n function splitSignature(bytes memory sig)\\\\n internal\\\\n pure\\\\n returns (bytes32 r, bytes32 s, uint8 v)\\\\n {\\\\n require(sig.length == 65, \\\\\\"Invalid_Signature_Length\\\\\\");\\\\n\\\\n assembly {\\\\n /*\\\\n First 32 bytes stores the length of the signature\\\\n\\\\n add(sig, 32) = pointer of sig + 32\\\\n effectively, skips first 32 bytes of signature\\\\n\\\\n mload(p) loads next 32 bytes starting at the memory address p into memory\\\\n */\\\\n\\\\n // first 32 bytes, after the length prefix\\\\n r := mload(add(sig, 32))\\\\n // second 32 bytes\\\\n s := mload(add(sig, 64))\\\\n // final byte (first byte of the next 32 bytes)\\\\n v := byte(0, mload(add(sig, 96)))\\\\n }\\\\n\\\\n // implicitly return (r, s, v)\\\\n }\\\\n \\\\n function verifySignture(\\\\n address approver,\\\\n address tokenAddress,\\\\n uint256 amountIn, \\\\n uint256 price,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal {\\\\n bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, approver, tokenAddress, amountIn, price, _useNonce(approver), deadline));\\\\n\\\\n bytes32 hash = _hashTypedDataV4(structHash);\\\\n\\\\n address signer = ECDSA.recover(hash, v, r, s);\\\\n require(signer == approver,\\\\\\"Signer_Not_Signture_Owner\\\\\\");\\\\n }\\\\n\\\\n function nonces(address _owner) public view virtual override returns (uint256) {\\\\n return super.nonces(_owner);\\\\n }\\\\n\\\\n function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\\\\n return _domainSeparatorV4();\\\\n }\\\\n\\\\n function name() public view virtual returns (string memory) {\\\\n return _nameString;\\\\n }\\\\n\\\\n receive() external payable {\\\\n emit Received(msg.sender, msg.value);\\\\n }\\\\n}\\"}},\\"settings\\":{\\"optimizer\\":{\\"enabled\\":true,\\"runs\\":200},\\"viaIR\\":true,\\"evmVersion\\":\\"paris\\",\\"outputSelection\\":{\\"*\\":{\\"*\\":[\\"abi\\",\\"evm.bytecode\\",\\"evm.deployedBytecode\\",\\"evm.methodIdentifiers\\",\\"metadata\\"],\\"\\":[\\"ast\\"]}},\\"libraries\\":{}}}"\n }\n ]\n}\n')))),(0,s.kt)("p",null,"or"),(0,s.kt)("h3",{id:"get-contract-creator-and-creation-tx-hash"},"Get Contract Creator and Creation Tx Hash"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=contract\n&action=getcontractcreation\n&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163\n")),(0,s.kt)("p",null,"Try this endpoint in your ",(0,s.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=contract&action=getcontractcreation&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163"},"browser")," \ud83d\udd17"),(0,s.kt)("h3",{id:"verify-source-code-beta"},"Verify Source Code (beta)"),(0,s.kt)("p",null,"1\u3001Current daily limit of 100 submissions per day per user (subject to change)"),(0,s.kt)("p",null,"2\u3001Only supports HTTP POST due to max transfer size limitations for HTTP GET"),(0,s.kt)("p",null,'3\u3001Contracts that use "imports" will need to have the code concatenated into one file as we do not support "imports" in separate files'),(0,s.kt)("p",null,"4\u3001List ofsupported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1"),(0,s.kt)("p",null,"5\u3001Upon successful submission you will receive a GUID (50 characters) as a receipt"),(0,s.kt)("p",null,"6\u3001You may use this GUID to track the status of your submission"),(0,s.kt)("p",null,"7\u3001Verified Source Codes will be displayed at the Verified Contracts page"),(0,s.kt)("h3",{id:"source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success"},"Source Code Submission Gist (returns a guid as part of the result upon success):"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'//Submit Source Code for Verification\n$.ajax({\n \u2003type: "POST", //Only POST supported\n\u2003 url: "//api.btrscan.com/scan/api", //Set to the correct API url for Other Networks\n\u2003 data: {\n\u2003\u2003 apikey: $(\'#apikey\').val(),\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //A valid API-Key is required\n\u2003\u2003 module: \'contract\',\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //Do not change\n\u2003\u2003 action: \'verifysourcecode\',\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2002 //Do not change\n\u2003\u2003 contractaddress: $(\'#contractaddress\').val(),\u2003\u2003 //Contract Address starts with 0x...\n\u2003\u2003 sourceCode: $(\'#sourceCode\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //Contract Source Code (Flattened if necessary)\n\u2003\u2003 codeformat: $(\'#codeformat\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support\n\u2003\u2003 contractname: $(\'#contractname\').val(),\u2003\u2003\u2003\u2003 //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20)\n\u2003\u2003 compilerversion: $(\'#compilerversion\').val(),\u2003\u2003 //see https://api-testnet.bitlayer.org/scan/solcversions for list of support versions\n\u2003\u2003 optimizationUsed: $(\'#optimizationUsed\').val(),\u2003//0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file)\n\u2003\u2003 runs: 200,\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003 //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file)\n\u2003 \u2003constructorArguements: $(\'#constructorArguements\').val(),\u2003//if applicable\n\u2003\u2003 evmversion: $(\'#evmVersion\').val(),\u2003\u2003\u2003\u2003\u2003\u2003 //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file)\n\u2003\u2003 licenseType: $(\'#licenseType\').val(),\u2003\u2003\u2003\u2003\u2003 //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://api-testnet.bitlayer.org/scan/contract-license-types\n\u2003 },\n\u2003 success: function (result) {\n\u2003\u2003 console.log(result);\n\u2003\u2003 if (result.status == "1") {\n\u2003\u2003\u2003 //1 = submission success, use the guid returned (result.result) to check the status of your submission.\n\u2003\u2003\u2003 // Average time of processing is 30-60 seconds\n\u2003\u2003\u2003 document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;\n\u2003\u2003\u2003 // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status\n\u2003\u2003 } else {\n\u2003\u2003\u2003 //0 = error\n\u2003\u2003\u2003 document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;\n\u2003\u2003 }\n\u2003\u2003 console.log("status : " + result.status);\n\u2003\u2003 console.log("result : " + result.result);\n\u2003 },\n\u2003 error: function (result) {\n\u2003\u2003 console.log("error!");\n\u2003\u2003 document.getElementById("postresult").innerHTML = "Unexpected Error"\n\u2003 }\n});\n')),(0,s.kt)("h3",{id:"check-source-code-verification-submission-status"},"Check Source code verification submission status:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},'//Check Source Code Verification Status\n$.ajax({\n type: "GET",\n url: "https://api-testnet.bitlayer.org/scan/api",\n data: {\n \u2003\u2003apikey: $(\'#apikey\').val(),\n \u2003\u2003guid: \'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn\', //Replace with your Source Code GUID receipt above\n \u2003\u2003module: "contract",\n \u2003\u2003action: "checkverifystatus"\n },\n success: function (result) {\n \u2003\u2003console.log("status : " + result.status); //0=pending 1=pass 2=fail\n \u2003\u2003console.log("message : " + result.message); //Pass - Verified, Fail - Unable to verify Pending in queue\n \u2003\u2003console.log("result : " + result.result); //result explanation\n \u2003\u2003$(\'#guidstatus\').html(">> " + result.result);\n },\n error: function (result) {\n \u2003\u2003alert(\'error\');\n }\n});\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/52addc0b.d58a8762.js b/assets/js/52addc0b.d58a8762.js deleted file mode 100644 index 3bfa74d6..00000000 --- a/assets/js/52addc0b.d58a8762.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3245],{6056:function(t){t.exports=JSON.parse('{"title":"Getting Started","description":"5 minutes to learn how to build on Bitlayer.","slug":"/category/getting-started","permalink":"/docs/category/getting-started","navigation":{"previous":{"title":"About BitVM","permalink":"/docs/Introduction/BitVM"},"next":{"title":"Quick Start Guide","permalink":"/docs/Build/QuickStart"}}}')}}]); \ No newline at end of file diff --git a/assets/js/53a3e6dc.7a1dee32.js b/assets/js/53a3e6dc.7a1dee32.js new file mode 100644 index 00000000..e8c66f81 --- /dev/null +++ b/assets/js/53a3e6dc.7a1dee32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6261],{922:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/5741.12a31c5f.js b/assets/js/5741.12a31c5f.js new file mode 100644 index 00000000..71abbf69 --- /dev/null +++ b/assets/js/5741.12a31c5f.js @@ -0,0 +1 @@ +(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5741],{5741:()=>{}}]); \ No newline at end of file diff --git a/assets/js/5897.f7d14cb1.js b/assets/js/5897.f7d14cb1.js deleted file mode 100644 index cde2ba95..00000000 --- a/assets/js/5897.f7d14cb1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5897],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var r=n(7294);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 l(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 i=r.createContext({}),s=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},p={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,i=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=s(n),d=o,y=m["".concat(i,".").concat(d)]||m[d]||p[d]||a;return n?r.createElement(y,l(l({ref:t},u),{},{components:n})):r.createElement(y,l({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=m;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:o,l[1]=c;for(var s=2;s0&&e[n-1]===t?e:e.concat(t)},h=function(e,t){var n=e.plain,r=Object.create(null),o=e.styles.reduce((function(e,n){var r=n.languages,o=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=m({},e[t],o);e[t]=n})),e}),r);return o.root=n,o.plain=m({},n,{backgroundColor:null}),o};function g(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var v=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),p(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?h(e.theme,e.language):void 0;return t.themeDict=n})),p(this,"getLineProps",(function(e){var n=e.key,r=e.className,o=e.style,a=m({},g(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),l=t.getThemeDict(t.props);return void 0!==l&&(a.style=l.plain),void 0!==o&&(a.style=void 0!==a.style?m({},a.style,o):o),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),p(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,o=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===o&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===o&&!r)return a[n[0]];var l=r?{display:"inline-block"}:{},c=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[l].concat(c))}})),p(this,"getTokenProps",(function(e){var n=e.key,r=e.className,o=e.style,a=e.token,l=m({},g(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?m({},l.style,o):o),void 0!==n&&(l.key=n),r&&(l.className+=" "+r),l})),p(this,"tokenize",(function(e,t,n,r){var o={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",o);var a=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,o=e.children,a=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],r=[0],o=[e.length],a=0,l=0,c=[],i=[c];l>-1;){for(;(a=r[l]++)0?u:["plain"],s=p):(u=f(u,p.type),p.alias&&(u=f(u,p.alias)),s=p.content),"string"==typeof s){var m=s.split(d),h=m.length;c.push({types:u,content:m[0]});for(var g=1;g0&&(c=l.getRangeAt(0)),r.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;var i=!1;try{i=document.execCommand("copy")}catch(s){}o.remove(),c&&(l.removeAllRanges(),l.addRange(c)),a&&a.focus()}(L),f(!0),setTimeout((function(){return f(!1)}),2e3)};return a.createElement(b,(0,r.Z)({},u,{key:String(g),theme:w,code:L,language:null!=A?A:"text"}),(function(e){var t,n=e.className,o=e.style,c=e.tokens,s=e.getLineProps,u=e.getTokenProps;return a.createElement("div",{className:(0,i.Z)(O,l,(t={},t["language-"+A]=A&&!l.includes("language-"+A),t),E.kM.common.codeBlock)},C&&a.createElement("div",{style:o,className:T},C),a.createElement("div",{className:(0,i.Z)(Z,A)},a.createElement("pre",{tabIndex:0,className:(0,i.Z)(n,N,"thin-scrollbar"),style:o},a.createElement("code",{className:x},c.map((function(e,t){1===e.length&&"\n"===e[0].content&&(e[0].content="");var n=s({line:e,key:t});return D.includes(t)&&(n.className+=" docusaurus-highlight-code-line"),a.createElement("span",(0,r.Z)({key:t},n),e.map((function(e,t){return a.createElement("span",(0,r.Z)({key:t},u({token:e,key:t})))})),a.createElement("br",null))})))),a.createElement("button",{type:"button","aria-label":(0,k.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),className:(0,i.Z)(P,"clean-btn"),onClick:_},y?a.createElement(k.Z,{id:"theme.CodeBlock.copied",description:"The copied button label on code blocks"},"Copied"):a.createElement(k.Z,{id:"theme.CodeBlock.copy",description:"The copy button label on code blocks"},"Copy"))))}))}var w=n(9649),S="details_BAp3";function A(e){var t=Object.assign({},e);return a.createElement(E.PO,(0,r.Z)({},t,{className:(0,i.Z)("alert alert--info",S,t.className)}))}var B=["mdxType","originalType"];var D={head:function(e){var t=a.Children.map(e.children,(function(e){return function(e){var t,n;if(null!=e&&null!=(t=e.props)&&t.mdxType&&null!=e&&null!=(n=e.props)&&n.originalType){var r=e.props,l=(r.mdxType,r.originalType,(0,o.Z)(r,B));return a.createElement(e.props.originalType,l)}return e}(e)}));return a.createElement(l.Z,e,t)},code:function(e){return a.Children.toArray(e.children).every((function(e){return"string"==typeof e&&!e.includes("\n")}))?a.createElement("code",e):a.createElement(C,e)},a:function(e){return a.createElement(c.Z,e)},pre:function(e){var t;return a.createElement(C,(0,a.isValidElement)(e.children)&&"code"===e.children.props.originalType?null==(t=e.children)?void 0:t.props:Object.assign({},e))},details:function(e){var t=a.Children.toArray(e.children),n=t.find((function(e){var t;return"summary"===(null==e||null==(t=e.props)?void 0:t.mdxType)})),o=a.createElement(a.Fragment,null,t.filter((function(e){return e!==n})));return a.createElement(A,(0,r.Z)({},e,{summary:n}),o)},h1:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h1"},e))},h2:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h2"},e))},h3:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h3"},e))},h4:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h4"},e))},h5:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h5"},e))},h6:function(e){return a.createElement(w.Z,(0,r.Z)({as:"h6"},e))}}}}]); \ No newline at end of file diff --git a/assets/js/5a0b0ff1.6f03b7de.js b/assets/js/5a0b0ff1.6f03b7de.js new file mode 100644 index 00000000..e0d106b4 --- /dev/null +++ b/assets/js/5a0b0ff1.6f03b7de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1178],{8028:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>i,metadata:()=>l,toc:()=>o});var n=r(4848),s=r(8453);const i={sidebar_position:2},d="Networks and RPC Enpoints",l={id:"BitlayerNetwork/Networks",title:"Networks and RPC Enpoints",description:"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.",source:"@site/docs/BitlayerNetwork/Networks.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/Networks",permalink:"/docs/BitlayerNetwork/Networks",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"About Gas",permalink:"/docs/BitlayerNetwork/AboutGas"},next:{title:"Bridges",permalink:"/docs/BitlayerNetwork/Bridges"}},c={},o=[{value:"Bitlayer Mainnet",id:"bitlayer-mainnet",level:2},{value:"Bitlayer Testnet",id:"bitlayer-testnet",level:2},{value:"Node Providers",id:"node-providers",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"networks-and-rpc-enpoints",children:"Networks and RPC Enpoints"}),"\n",(0,n.jsx)(t.p,{children:"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints."}),"\n",(0,n.jsx)(t.h2,{id:"bitlayer-mainnet",children:"Bitlayer Mainnet"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Value"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Network Name"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"Bitlayer Mainnet"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Chain ID"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"200901"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Currency Symbol"}),(0,n.jsx)(t.td,{children:"BTC"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Explorer"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://www.btrscan.com",children:"https://www.btrscan.com"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Public RPC URLs"}),(0,n.jsxs)(t.td,{children:[(0,n.jsx)(t.a,{href:"https://rpc.bitlayer.org",children:"https://rpc.bitlayer.org"}),", ",(0,n.jsx)(t.a,{href:"https://rpc.bitlayer-rpc.com",children:"https://rpc.bitlayer-rpc.com"}),", ",(0,n.jsx)(t.a,{href:"https://rpc.ankr.com/bitlayer",children:"https://rpc.ankr.com/bitlayer"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"WebSocket"}),(0,n.jsxs)(t.td,{children:[(0,n.jsx)("div",{children:"wss://ws.bitlayer.org"}),(0,n.jsx)("div",{children:"wss://ws.bitlayer-rpc.com"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Contract Addresses"}),(0,n.jsxs)(t.td,{children:["Refer to the ",(0,n.jsx)(t.a,{href:"../BitlayerNetwork/Contracts",children:"Contract Addresses page"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Connect Wallet"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://chainlist.org/?search=bitlayer",children:"Click here to connect your wallet to Bitlayer Mainnet"})})]})]})]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://medium.com/@Bitlayer/introducing-bitlayer-mainnet-v1-unlocking-the-potential-of-bitcoin-56c5fa2159fd",children:"Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin"})}),"\n",(0,n.jsx)(t.p,{children:"Click the above link to know more about our Mainnet-V1."}),"\n",(0,n.jsx)(t.h2,{id:"bitlayer-testnet",children:"Bitlayer Testnet"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Value"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Network"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"Bitlayer Testnet"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Chain ID"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"200810"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Currency Symbol"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"BTC"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Explorer"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://testnet-scan.bitlayer.org",children:"https://testnet-scan.bitlayer.org"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Public RPC URL"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://testnet-rpc.bitlayer.org",children:"https://testnet-rpc.bitlayer.org"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"WebSocket"}),(0,n.jsxs)(t.td,{children:[(0,n.jsx)("div",{children:"wss://testnet-ws.bitlayer.org"}),(0,n.jsx)("div",{children:"wss://testnet-ws.bitlayer-rpc.com"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Contract Addresses"}),(0,n.jsxs)(t.td,{children:["Refer to the ",(0,n.jsx)(t.a,{href:"../BitlayerNetwork/Contracts",children:"Contract Addresses page"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Connect Wallet"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://chainlist.org/?search=bitlayer&testnets=true",children:"Click here to connect your wallet to Bitlayer Testnet"})})]})]})]}),"\n",(0,n.jsxs)(t.admonition,{type:"tip",children:[(0,n.jsx)(t.mdxAdmonitionTitle,{}),(0,n.jsx)(t.p,{children:'The "currency symbol" is required by some wallets like MetaMask.'})]}),"\n",(0,n.jsx)(t.h2,{id:"node-providers",children:"Node Providers"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Provider Name"}),(0,n.jsx)(t.th,{children:"Provider URL"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Ankr"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"https://bitlayer-rpc.com/",children:"https://bitlayer-rpc.com/"})})]})})]})]})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>d,x:()=>l});var n=r(6540);const s={},i=n.createContext(s);function d(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5a0b0ff1.e0173451.js b/assets/js/5a0b0ff1.e0173451.js deleted file mode 100644 index f6bba8b1..00000000 --- a/assets/js/5a0b0ff1.e0173451.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7924],{3905:function(t,e,r){r.d(e,{Zo:function(){return s},kt:function(){return k}});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var p=n.createContext({}),d=function(t){var e=n.useContext(p),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},s=function(t){var e=d(t.components);return n.createElement(p.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,l=t.originalType,p=t.parentName,s=o(t,["components","mdxType","originalType","parentName"]),m=d(r),k=a,u=m["".concat(p,".").concat(k)]||m[k]||c[k]||l;return r?n.createElement(u,i(i({ref:e},s),{},{components:r})):n.createElement(u,i({ref:e},s))}));function k(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var l=r.length,i=new Array(l);i[0]=m;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o.mdxType="string"==typeof t?t:a,i[1]=o;for(var d=2;d{r.r(s),r.d(s,{default:()=>l});r(6540);var t=r(8215),u=r(1213),a=r(7559),c=r(2831),n=r(5476),i=r(4848);function l(e){return(0,i.jsx)(u.e3,{className:(0,t.A)(a.G.wrapper.docsPages),children:(0,i.jsx)(n.A,{children:(0,c.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/6586b5a6.a620ace9.js b/assets/js/6586b5a6.a620ace9.js new file mode 100644 index 00000000..a78f4792 --- /dev/null +++ b/assets/js/6586b5a6.a620ace9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8760],{8564:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Bitlayer Scan APIs","description":"The Bitlayer Chain Developer APIs are provided as a community service and without warranty, so please use what you need and no more. We support both GET/POST requests and there is a rate limit of 5 calls per sec/IP. Note: Source attribution via a link back or mention that your app is \'\'Powered by api-testnet.bitlayer.org/scan APIs\'\' is required except for personal/private usage.","slug":"/category/bitlayer-scan-apis","permalink":"/docs/category/bitlayer-scan-apis","sidebar":"docs","navigation":{"previous":{"title":"Bitlayer\'s Transaction Lifecycle","permalink":"/docs/BitlayerArchitecture/TransactionLifecycle"},"next":{"title":"Accounts","permalink":"/docs/Bitlayer Scan APIs/Accounts"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/6840a158.628ad254.js b/assets/js/6840a158.628ad254.js new file mode 100644 index 00000000..a22f734b --- /dev/null +++ b/assets/js/6840a158.628ad254.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8532],{152:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var n=t(4848),s=t(8453);const r={sidebar_position:1},a="Frequently Asked Questions",o={id:"FAQs/Frequently asked questions",title:"Frequently Asked Questions",description:"Q: When does Bitlayer launch?",source:"@site/docs/FAQs/Frequently asked questions.md",sourceDirName:"FAQs",slug:"/FAQs/Frequently asked questions",permalink:"/docs/FAQs/Frequently asked questions",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"FAQs",permalink:"/docs/category/faqs"},next:{title:"Contact Details",permalink:"/docs/FAQs/Contact Details"}},l={},c=[{value:"Q: When does Bitlayer launch?",id:"q-when-does-bitlayer-launch",level:3},{value:"Q: Is Bitlayer EVM compatible?",id:"q-is-bitlayer-evm-compatible",level:3},{value:"Q: How can I join the community?",id:"q-how-can-i-join-the-community",level:3},{value:"Q: How can I help support Bitlayer?",id:"q-how-can-i-help-support-bitlayer",level:3},{value:"Q: Who is building Bitlayer?",id:"q-who-is-building-bitlayer",level:3},{value:"Q: Who can I contact regarding a press inquiry?",id:"q-who-can-i-contact-regarding-a-press-inquiry",level:3},{value:"Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?",id:"q-is-there-a-rate-limits-on-public-rpc-urls-what-should-i-do-if-i-hit-the-rate-limits-issue",level:3}];function h(e){const i={a:"a",br:"br",h1:"h1",h3:"h3",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,n.jsx)(i.h3,{id:"q-when-does-bitlayer-launch",children:"Q: When does Bitlayer launch?"}),"\n",(0,n.jsx)(i.p,{children:"A: The mainnet launch of Bitlayer is scheduled for early April."}),"\n",(0,n.jsx)(i.h3,{id:"q-is-bitlayer-evm-compatible",children:"Q: Is Bitlayer EVM compatible?"}),"\n",(0,n.jsx)(i.p,{children:"A: Yes, Bitlayer is EVM-compatible. Bitlayer's deep integration with the Ethereum Virtual Machine (EVM) heralds a significant advancement for the Bitcoin network, enabling it to support smart contracts and decentralized applications (dApps) natively. This compatibility breaks new ground by combining Bitcoin's renowned security and liquidity with Ethereum's programmability and flexibility. For developers and users, this means the ability to deploy Ethereum-based applications directly on Bitcoin, leveraging the best of both worlds: the robustness of Bitcoin's blockchain with the dynamic capabilities of Ethereum's smart contract environment."}),"\n",(0,n.jsx)(i.h3,{id:"q-how-can-i-join-the-community",children:"Q: How can I join the community?"}),"\n",(0,n.jsx)(i.p,{children:"A: To join the Bitlayer community, you can visit the social media channels of Bitlayer, such as Telegram groups, Discord, or Twitter, where you can interact with other community members and stay updated on the latest developments."}),"\n",(0,n.jsxs)(i.p,{children:["Discord: ",(0,n.jsx)(i.a,{href:"https://discord.com/invite/GGSjNyD8nj",children:"https://discord.com/invite/GGSjNyD8nj"})]}),"\n",(0,n.jsxs)(i.p,{children:["Twitter: ",(0,n.jsx)(i.a,{href:"https://twitter.com/BitLayerLabs",children:"https://twitter.com/BitLayerLabs"})]}),"\n",(0,n.jsxs)(i.p,{children:["Linkedin: ",(0,n.jsx)(i.a,{href:"https://www.linkedin.com/company/bitlayerlabs/",children:"https://www.linkedin.com/company/bitlayerlabs/"})]}),"\n",(0,n.jsxs)(i.p,{children:["Telegram: ",(0,n.jsx)(i.a,{href:"https://t.me/bitlayerofficial",children:"https://t.me/bitlayerofficial"})]}),"\n",(0,n.jsxs)(i.p,{children:["Medium: ",(0,n.jsx)(i.a,{href:"https://medium.com/@Bitlayer",children:"https://medium.com/@Bitlayer"})]}),"\n",(0,n.jsxs)(i.p,{children:["GithHub: ",(0,n.jsx)(i.a,{href:"https://github.com/bitlayer-org",children:"https://github.com/bitlayer-org"})]}),"\n",(0,n.jsx)(i.h3,{id:"q-how-can-i-help-support-bitlayer",children:"Q: How can I help support Bitlayer?"}),"\n",(0,n.jsx)(i.p,{children:"A: There are several ways to support Bitlayer. You can actively participate in community discussions, provide feedback and suggestions, contribute to the development of applications or tools on the platform, or promote Bitlayer to others who may benefit from its services. Additionally, you can explore any specific support initiatives or programs that Bitlayer may have in place."}),"\n",(0,n.jsx)(i.h3,{id:"q-who-is-building-bitlayer",children:"Q: Who is building Bitlayer?"}),"\n",(0,n.jsx)(i.p,{children:"A: Bitlayer is being built by a team of engineers with experience in top platforms and blockchain operations. The core builders include individuals from companies such as Huobi, Polygon, and Polkadot, who bring their expertise and resources to the development of Bitlayer."}),"\n",(0,n.jsx)(i.h3,{id:"q-who-can-i-contact-regarding-a-press-inquiry",children:"Q: Who can I contact regarding a press inquiry?"}),"\n",(0,n.jsx)(i.p,{children:"A: For press inquiries related to Bitlayer, you can reach out to the Bitlayer team through our official communication channels."}),"\n",(0,n.jsxs)(i.p,{children:["Website\uff1a",(0,n.jsx)(i.a,{href:"https://www.bitlayer.org/",children:"https://www.bitlayer.org/"})]}),"\n",(0,n.jsxs)(i.p,{children:["Twitter: ",(0,n.jsx)(i.a,{href:"https://twitter.com/BitLayerLabs",children:"https://twitter.com/BitLayerLabs"})]}),"\n",(0,n.jsxs)(i.p,{children:["Github: ",(0,n.jsx)(i.a,{href:"https://github.com/bitlayer-org",children:"https://github.com/bitlayer-org"})]}),"\n",(0,n.jsxs)(i.p,{children:["Medium\uff1a",(0,n.jsx)(i.a,{href:"https://medium.com/@Bitlayer",children:"https://medium.com/@Bitlayer"})]}),"\n",(0,n.jsxs)(i.p,{children:["Email: ",(0,n.jsx)(i.a,{href:"mailto:build@bitlayer.org",children:"build@bitlayer.org"})]}),"\n",(0,n.jsx)(i.h3,{id:"q-is-there-a-rate-limits-on-public-rpc-urls-what-should-i-do-if-i-hit-the-rate-limits-issue",children:"Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?"}),"\n",(0,n.jsxs)(i.p,{children:["A: Yes, the rate-limits is 30 rps default for both mainnet and testnet.",(0,n.jsx)(i.br,{}),"\n","When requests reached rate-limits, you can",(0,n.jsx)(i.br,{}),"\n","\u2003\u2003(1) Refer to ",(0,n.jsx)(i.a,{href:"/docs/Build/Compile%20and%20Run",children:"Compile and Run"})," to build your own rpc node.",(0,n.jsx)(i.br,{}),"\n","\u2003\u2003(2) Or refer to ",(0,n.jsx)(i.a,{href:"https://www.ankr.com/rpc/bitlayer/",children:"ankr"})," to buy a paid plan."]})]})}function d(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},8453:(e,i,t)=>{t.d(i,{R:()=>a,x:()=>o});var n=t(6540);const s={},r=n.createContext(s);function a(e){const i=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6840a158.f72e9360.js b/assets/js/6840a158.f72e9360.js deleted file mode 100644 index 20850476..00000000 --- a/assets/js/6840a158.f72e9360.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8236],{3905:function(e,t,i){i.d(t,{Zo:function(){return u},kt:function(){return m}});var r=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=c(i),m=n,d=h["".concat(s,".").concat(m)]||h[m]||p[m]||a;return i?r.createElement(d,o(o({ref:t},u),{},{components:i})):r.createElement(d,o({ref:t},u))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,o=new Array(a);o[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:n,o[1]=l;for(var c=2;c{n.d(t,{A:()=>l});n(6540);var s=n(1312),a=n(9022),i=n(4848);function l(e){const{metadata:t}=e,{previousPage:n,nextPage:l}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,s.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[n&&(0,i.jsx)(a.A,{permalink:n,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),l&&(0,i.jsx)(a.A,{permalink:l,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var s=n(7131),a=n(4651),i=n(4848);function l(e){let{items:t,component:n=a.A}=e;return(0,i.jsx)(i.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,i.jsx)(s.i,{content:t,children:(0,i.jsx)(n,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)}))})}},3069:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});n(6540);var s=n(8215),a=n(1312),i=n(5846),l=n(1213),r=n(7559),o=n(8774),c=n(6535),g=n(7713),d=n(1463),u=n(3892),h=n(996),p=n(1107),m=n(4848);function x(e){const t=function(){const{selectMessage:e}=(0,i.W)();return t=>e(t,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}();return(0,a.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function j(e){let{tag:t}=e;const n=x(t);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(l.be,{title:n}),(0,m.jsx)(d.A,{tag:"blog_tags_posts"})]})}function b(e){let{tag:t,items:n,sidebar:s,listMetadata:i}=e;const l=x(t);return(0,m.jsxs)(c.A,{sidebar:s,children:[t.unlisted&&(0,m.jsx)(h.A,{}),(0,m.jsxs)("header",{className:"margin-bottom--xl",children:[(0,m.jsx)(p.A,{as:"h1",children:l}),(0,m.jsx)(o.A,{href:t.allTagsPath,children:(0,m.jsx)(a.A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),(0,m.jsx)(u.A,{items:n}),(0,m.jsx)(g.A,{metadata:i})]})}function A(e){return(0,m.jsxs)(l.e3,{className:(0,s.A)(r.G.wrapper.blogPages,r.G.page.blogTagPostListPage),children:[(0,m.jsx)(j,{...e}),(0,m.jsx)(b,{...e})]})}},996:(e,t,n)=>{n.d(t,{A:()=>h});n(6540);var s=n(8215),a=n(1312),i=n(5260),l=n(4848);function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var g=n(7559),d=n(7293);function u(e){let{className:t}=e;return(0,l.jsx)(d.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,s.A)(t,g.G.common.unlistedBanner),children:(0,l.jsx)(o,{})})}function h(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c,{}),(0,l.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/6875c492.ff05127d.js b/assets/js/6875c492.ff05127d.js deleted file mode 100644 index ecc2f1f4..00000000 --- a/assets/js/6875c492.ff05127d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8610],{8665:function(e,t,a){a.d(t,{Z:function(){return b}});var r=a(3366),n=a(7294),l=a(6010),i=a(2434),s=a(9960),m="sidebar_a9qW",o="sidebarItemTitle_uKok",c="sidebarItemList_Kvuv",g="sidebarItem_CF0Q",u="sidebarItemLink_miNk",d="sidebarItemLinkActive_RRTD",p=a(5999);function h(e){var t=e.sidebar;return 0===t.items.length?null:n.createElement("nav",{className:(0,l.Z)(m,"thin-scrollbar"),"aria-label":(0,p.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},n.createElement("div",{className:(0,l.Z)(o,"margin-bottom--md")},t.title),n.createElement("ul",{className:c},t.items.map((function(e){return n.createElement("li",{key:e.permalink,className:g},n.createElement(s.Z,{isNavLink:!0,to:e.permalink,className:u,activeClassName:d},e.title))}))))}var v=["sidebar","toc","children"];function b(e){var t=e.sidebar,a=e.toc,s=e.children,m=(0,r.Z)(e,v),o=t&&t.items.length>0;return n.createElement(i.Z,m,n.createElement("div",{className:"container margin-vert--lg"},n.createElement("div",{className:"row"},o&&n.createElement("aside",{className:"col col--3"},n.createElement(h,{sidebar:t})),n.createElement("main",{className:(0,l.Z)("col",{"col--7":o,"col--9 col--offset-1":!o}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&n.createElement("div",{className:"col col--2"},a))))}},6299:function(e,t,a){a.d(t,{Z:function(){return i}});var r=a(7294),n=a(5999),l=a(1750);function i(e){var t=e.metadata,a=t.previousPage,i=t.nextPage;return r.createElement("nav",{className:"pagination-nav","aria-label":(0,n.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(l.Z,{permalink:a,title:r.createElement(n.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")})),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},i&&r.createElement(l.Z,{permalink:i,title:r.createElement(n.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries")})))}},8561:function(e,t,a){a.d(t,{Z:function(){return k}});var r=a(7294),n=a(6010),l=a(3905),i=a(5999),s=a(9960),m=a(4996),o=a(5450),c=a(8780),g=a(4689),u=a(6753),d="blogPostTitle_rzP5",p="blogPostData_Zg1s",h="blogPostDetailsFull_h6_j",v=a(62),b="image_o0gy";function E(e){var t=e.author,a=t.name,n=t.title,l=t.url,i=t.imageURL;return r.createElement("div",{className:"avatar margin-bottom--sm"},i&&r.createElement(s.Z,{className:"avatar__photo-link avatar__photo",href:l},r.createElement("img",{className:b,src:i,alt:a})),a&&r.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},r.createElement("div",{className:"avatar__name"},r.createElement(s.Z,{href:l,itemProp:"url"},r.createElement("span",{itemProp:"name"},a))),n&&r.createElement("small",{className:"avatar__subtitle",itemProp:"description"},n)))}var f="authorCol_FlmR",_="imageOnlyAuthorRow_trpF",N="imageOnlyAuthorCol_S2np";function Z(e){var t=e.authors,a=e.assets;if(0===t.length)return null;var l=t.every((function(e){return!e.name}));return r.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",l?_:"row")},t.map((function(e,t){var i;return r.createElement("div",{className:(0,n.Z)(!l&&"col col--6",l?N:f),key:t},r.createElement(E,{author:Object.assign({},e,{imageURL:null!=(i=a.authorsImageUrls[t])?i:e.imageURL})}))})))}function k(e){var t,a,b,E=(b=(0,o.c2)().selectMessage,function(e){var t=Math.ceil(e);return b(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),f=(0,m.C)().withBaseUrl,_=e.children,N=e.frontMatter,k=e.assets,P=e.metadata,T=e.truncated,w=e.isBlogPostPage,y=void 0!==w&&w,I=P.date,L=P.formattedDate,M=P.permalink,R=P.tags,A=P.readingTime,C=P.title,x=P.editUrl,U=P.authors,D=null!=(t=k.image)?t:N.image,B=!y&&T,F=R.length>0,O=y?"h1":"h2";return r.createElement("article",{className:y?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},r.createElement("header",null,r.createElement(O,{className:d,itemProp:"headline"},y?C:r.createElement(s.Z,{itemProp:"url",to:M},C)),r.createElement("div",{className:(0,n.Z)(p,"margin-vert--md")},r.createElement("time",{dateTime:I,itemProp:"datePublished"},L),void 0!==A&&r.createElement(r.Fragment,null," \xb7 ",E(A))),r.createElement(Z,{authors:U,assets:k})),D&&r.createElement("meta",{itemProp:"image",content:f(D,{absolute:!0})}),r.createElement("div",{id:y?c.blogPostContainerID:void 0,className:"markdown",itemProp:"articleBody"},r.createElement(l.Zo,{components:g.Z},_)),(F||T)&&r.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(a={},a[h]=y,a))},F&&r.createElement("div",{className:(0,n.Z)("col",{"col--9":B})},r.createElement(v.Z,{tags:R})),y&&x&&r.createElement("div",{className:"col margin-top--sm"},r.createElement(u.Z,{editUrl:x})),B&&r.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":F})},r.createElement(s.Z,{to:P.permalink,"aria-label":(0,i.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:C})},r.createElement("b",null,r.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},9404:function(e,t,a){a.r(t),a.d(t,{default:function(){return c}});var r=a(7294),n=a(9960),l=a(8665),i=a(8561),s=a(5999),m=a(5450),o=a(6299);function c(e){var t,a=e.metadata,c=e.items,g=e.sidebar,u=e.listMetadata,d=a.allTagsPath,p=a.name,h=a.count,v=(t=(0,m.c2)().selectMessage,function(e){return t(e,(0,s.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:e}))}),b=(0,s.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:v(h),tagName:p});return r.createElement(l.Z,{title:b,wrapperClassName:m.kM.wrapper.blogPages,pageClassName:m.kM.page.blogTagPostListPage,searchMetadata:{tag:"blog_tags_posts"},sidebar:g},r.createElement("header",{className:"margin-bottom--xl"},r.createElement("h1",null,b),r.createElement(n.Z,{href:d},r.createElement(s.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),c.map((function(e){var t=e.content;return r.createElement(i.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:!0},r.createElement(t,null))})),r.createElement(o.Z,{metadata:u}))}},6753:function(e,t,a){a.d(t,{Z:function(){return u}});var r=a(7294),n=a(5999),l=a(7462),i=a(3366),s=a(6010),m="iconEdit_dcUD",o=["className"];function c(e){var t=e.className,a=(0,i.Z)(e,o);return r.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(m,t),"aria-hidden":"true"},a),r.createElement("g",null,r.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}var g=a(5450);function u(e){var t=e.editUrl;return r.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:g.kM.common.editThisPage},r.createElement(c,null),r.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},1750:function(e,t,a){a.d(t,{Z:function(){return l}});var r=a(7294),n=a(9960);function l(e){var t=e.permalink,a=e.title,l=e.subLabel;return r.createElement(n.Z,{className:"pagination-nav__link",to:t},l&&r.createElement("div",{className:"pagination-nav__sublabel"},l),r.createElement("div",{className:"pagination-nav__label"},a))}},7774:function(e,t,a){a.d(t,{Z:function(){return o}});var r=a(7294),n=a(6010),l=a(9960),i="tag_hD8n",s="tagRegular_D6E_",m="tagWithCount_i0QQ";function o(e){var t,a=e.permalink,o=e.name,c=e.count;return r.createElement(l.Z,{href:a,className:(0,n.Z)(i,(t={},t[s]=!c,t[m]=c,t))},o,c&&r.createElement("span",null,c))}},62:function(e,t,a){a.d(t,{Z:function(){return o}});var r=a(7294),n=a(6010),l=a(5999),i=a(7774),s="tags_XVD_",m="tag_JSN8";function o(e){var t=e.tags;return r.createElement(r.Fragment,null,r.createElement("b",null,r.createElement(l.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),r.createElement("ul",{className:(0,n.Z)(s,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return r.createElement("li",{key:a,className:m},r.createElement(i.Z,{name:t,permalink:a}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/77aa6ee4.72c66fd5.js b/assets/js/77aa6ee4.72c66fd5.js deleted file mode 100644 index 18774958..00000000 --- a/assets/js/77aa6ee4.72c66fd5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2234],{2232:function(e){e.exports=JSON.parse('{"title":"FAQs","description":"5 minutes to find your answer.","slug":"/category/faqs","permalink":"/docs/category/faqs","navigation":{"previous":{"title":"BTC Connect (Account Abstraction)","permalink":"/docs/DeveloperResources/BTC Connect"},"next":{"title":"Frequently Asked Questions","permalink":"/docs/FAQs/Frequently asked questions"}}}')}}]); \ No newline at end of file diff --git a/assets/js/7868b092.3df1308f.js b/assets/js/7868b092.3df1308f.js deleted file mode 100644 index 3ed899c3..00000000 --- a/assets/js/7868b092.3df1308f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[328],{9141:function(e){e.exports=JSON.parse('{"title":"Developer Resources","description":"This guide provides an overview of the tools and resources available for Bitlayer development.","slug":"/category/developer-resources","permalink":"/docs/category/developer-resources","navigation":{"previous":{"title":"Tokens","permalink":"/docs/Bitlayer Scan APIs/Tokens"},"next":{"title":"Supported Wallets for Bitlayer","permalink":"/docs/DeveloperResources/Wallets"}}}')}}]); \ No newline at end of file diff --git a/assets/js/790d882a.222ade33.js b/assets/js/790d882a.222ade33.js deleted file mode 100644 index 5f07e896..00000000 --- a/assets/js/790d882a.222ade33.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7834],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return h}});var o=n(7294);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 c=o.createContext({}),s=function(e){var t=o.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=s(e.components);return o.createElement(c.Provider,{value:t},e.children)},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,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(n),h=i,m=d["".concat(c,".").concat(h)]||d[h]||u[h]||a;return n?o.createElement(m,r(r({ref:t},p),{},{components:n})):o.createElement(m,r({ref:t},p))}));function h(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 l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:i,r[1]=l;for(var s=2;s\n \n \n \n \n)\n")),(0,a.kt)("p",null,"Once ",(0,a.kt)("inlineCode",{parentName:"p"},"ConnectProvider")," is configured, you're ready to implement BTC Connect through your central application component."),(0,a.kt)("h2",{id:"application-implementation"},"Application Implementation"),(0,a.kt)("p",null,"At this point, you should have:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Created a new project and application through the ",(0,a.kt)("a",{parentName:"li",href:"https://dashboard.particle.network"},"Particle dashboard"),"."),(0,a.kt)("li",{parentName:"ul"},"Installed ",(0,a.kt)("inlineCode",{parentName:"li"},"@particle-network/btc-connectkit")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"@particle-network/chains"),"."),(0,a.kt)("li",{parentName:"ul"},"Configured BTC Connect through ",(0,a.kt)("inlineCode",{parentName:"li"},"ConnectProvider"),".")),(0,a.kt)("p",null,"Now, to integrate BTC Connect, we'll do the following:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Configure Ethers, or any other standard Web3 library (such as Web3.js) using hooks from ",(0,a.kt)("inlineCode",{parentName:"li"},"@particle-network/btc-connectkit"),"."),(0,a.kt)("li",{parentName:"ul"},'Prepare a "Connect Wallet" button.'),(0,a.kt)("li",{parentName:"ul"},"Test BTC Connect by executing transactions on both Bitlayer and native Bitcoin.")),(0,a.kt)("h3",{id:"part-1-interacting-with-btc-connect-through-an-eip-1193-provider"},"Part 1: Interacting with BTC Connect through an EIP-1193 Provider"),(0,a.kt)("p",null,"Interaction with BTC Connect can be facilitated either natively through the SDK \u2013with functions from the ",(0,a.kt)("inlineCode",{parentName:"p"},"useETHProvider")," hook, such as ",(0,a.kt)("inlineCode",{parentName:"p"},"buildUserOp")," (for constructing transactions) and ",(0,a.kt)("inlineCode",{parentName:"p"},"sendUserOp")," (for executing them), or through an external Web3 library such as Ethers. In this example, we'll focus on the latter."),(0,a.kt)("p",null,"Specifically, leveraging the user's smart account on Bitlayer through Ethers requires using BTC Connect's EIP-1193 provider object. After a user connects, this object will be populated with an EVM account instance."),(0,a.kt)("p",null,"To retrieve this object, you'll need to define ",(0,a.kt)("inlineCode",{parentName:"p"},"provider")," from the ",(0,a.kt)("inlineCode",{parentName:"p"},"useETHProvider")," hook. Using ",(0,a.kt)("inlineCode",{parentName:"p"},"provider"),", an instance of Ethers (or Web3.js, viem, etc.) can be constructed, as shown below."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\n\n\nconst App = () => {\n const { provider } = useETHProvider();\n \n const customProvider = new ethers.providers.Web3Provider(provider, \"any\");\n \n ...\n};\n")),(0,a.kt)("p",null,"This Ethers instance can be used directly for transaction construction and execution. Signatures will be pushed to the connected Bitcoin wallet directly through the means of the EIP-1193 provider."),(0,a.kt)("h3",{id:"part-2-facilitating-wallet-connection"},"Part 2: Facilitating Wallet Connection"),(0,a.kt)("p",null,"Wallet connection can be implemented through one of two ways with BTC Connect:"),(0,a.kt)("p",null,"The first method requires using BTC Connect's built-in connection modal, which contains buttons for the wallets previously defined within ",(0,a.kt)("inlineCode",{parentName:"p"},"connectors")," (on ",(0,a.kt)("inlineCode",{parentName:"p"},"ConnectProvider"),"). Below is a screenshot of this interface."),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://files.readme.io/3bf67a6-connectmodal_1.png",alt:null})),(0,a.kt)("p",null,"Alternatively, direct shortcuts to these wallets (independent from the above interface) can be configured in scenarios where you may want to design your own wallet connection interface."),(0,a.kt)("p",null,"Starting with the built-in modal, this can be opened by simply calling ",(0,a.kt)("inlineCode",{parentName:"p"},"openConnectModal")," from the ",(0,a.kt)("inlineCode",{parentName:"p"},"useConnectModal")," hook; upon calling, the aforementioned interface will be opened. An example of this has been included below:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\nimport './App.css';\n\n\n\n\nconst App = () => {\n const { openConnectModal } = useConnectModal();\n \n ...\n \n openConnectModal();\n\n\n ...\n}\n")),(0,a.kt)("p",null,"For a more hands-on approach to designing your own interface, you can connect to individual wallets using the ",(0,a.kt)("inlineCode",{parentName:"p"},"connect")," function from the ",(0,a.kt)("inlineCode",{parentName:"p"},"useConnector")," hook. This function will simply take a string representing the wallet you'd like to connect to, such as ",(0,a.kt)("inlineCode",{parentName:"p"},"'unisat'"),", as shown below."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\nimport './App.css';\n\n\n\n\nconst App = () => {\n const { connect } = useConnector();\n \n ...\n \n connect('unisat');\n // Or 'okx', 'bybit', etc.\n \n ...\n}\n")),(0,a.kt)("h3",{id:"part-3-transaction-execution"},"Part 3: Transaction Execution"),(0,a.kt)("h4",{id:"bitlayer-evm"},"Bitlayer (EVM)"),(0,a.kt)("p",null,"Now that you've facilitated wallet connection and configured a corresponding Ethers object, you're ready to execute transactions on Bitlayer using the associated smart account generated from the user's Bitcoin wallet."),(0,a.kt)("p",null,"Using Ethers, this is done by constructing a simple transaction (using standard fields such as ",(0,a.kt)("inlineCode",{parentName:"p"},"to"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"value"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"data"),", etc.) and executing it using the ",(0,a.kt)("inlineCode",{parentName:"p"},"signer")," property with ",(0,a.kt)("inlineCode",{parentName:"p"},"customProvider.getSigner()"),"."),(0,a.kt)("p",null,"Any transaction that can be constructed and executed through Ethers translates 1:1 within this flow."),(0,a.kt)("p",null,"Below is an example that burns 0.001 BTC."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},'const executeTxEvm = async () => {\n const signer = customProvider.getSigner();\n\n\n\n\n const tx = {\n to: "0x000000000000000000000000000000000000dEaD", // Burn address\n value: ethers.utils.parseEther(\'0.001\'), // 0.001 BTC\n data: "0x" // Optional, only define for contract interaction or related operations\n };\n\n\n\n\n // Gasless due to usage of SendTransactonMode.Gasless within customProvider\n const txResponse = await signer.sendTransaction(tx);\n const txReceipt = await txResponse.wait();\n\n\n\n\n notification.success({\n message: "Transaction Successful",\n description: (\n
\n Transaction Hash: {txReceipt.transactionHash}\n
\n )\n });\n};\n')),(0,a.kt)("p",null,"Upon executing, a signature will be requested from the connected Bitcoin wallet. This signature will directly authenticate the associated smart account on Bitlayer."),(0,a.kt)("h4",{id:"bitcoin-l1"},"Bitcoin (L1)"),(0,a.kt)("p",null,"Alternatively, the same wallet connection can be used to simultaneously execute transactions on native Bitcoin."),(0,a.kt)("p",null,"To handle this, BTC Connect has the ",(0,a.kt)("inlineCode",{parentName:"p"},"useBTCProvider")," hook, containing functions such as ",(0,a.kt)("inlineCode",{parentName:"p"},"sendBitcoin"),"."),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"sendBitcoin")," will send a standard P2P transaction on Bitcoin, requesting a signature from the user's connected Bitcoin wallet. The snippet shown below demonstrates an example of this through a custom function, ",(0,a.kt)("inlineCode",{parentName:"p"},"executeTxBtc"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';\nimport './App.css';\n\n\nconst App = () => {\n const { sendBitcoin, accounts } = useBTCProvider();\n \n const executeTxBtc = async () => { \n // Sends 1 satoshi back to the sender\n const hash = await sendBitcoin(accounts[0], 1);\n\n\n\n\n notification.success({\n message: 'Transaction Successful',\n description: (\n
\n Transaction Hash: {hash}\n
\n )\n });\n };\n};\n")),(0,a.kt)("h2",{id:"conclusion"},"Conclusion"),(0,a.kt)("p",null,"Through the above guide, you should now understand how to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Configure the ",(0,a.kt)("a",{parentName:"li",href:"https://dashboard.particle.network"},"Particle Network dashboard"),"."),(0,a.kt)("li",{parentName:"ul"},"Install and initialize BTC Connect (",(0,a.kt)("inlineCode",{parentName:"li"},"@particle-network/btc-connectkit"),")."),(0,a.kt)("li",{parentName:"ul"},"Construct a custom Ethers provider to manage the user's smart account."),(0,a.kt)("li",{parentName:"ul"},"Facilitate wallet connection."),(0,a.kt)("li",{parentName:"ul"},"Build and execute transactions on both Bitlayer and native Bitcoin.")),(0,a.kt)("p",null,"To view and try a complete demo application based on the snippets shown in this guide, visit our ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/TABASCOatw/particle-bitlayer-demo"},"dedicated GitHub repository"),"."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://particle.network"},"Particle Network")," has extensive documentation covering the implementation of BTC Connect within applications built on Bitlayer, which can be found ",(0,a.kt)("a",{parentName:"p",href:"https://developers.particle.network/reference/introduction-to-btc-connect"},"here"),"."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/790d882a.5c5947c9.js b/assets/js/790d882a.5c5947c9.js new file mode 100644 index 00000000..e4609f8b --- /dev/null +++ b/assets/js/790d882a.5c5947c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9880],{5509:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var o=t(4848),i=t(8453);const r={sidebar_position:6},c="BTC Connect (Account Abstraction)",s={id:"DeveloperResources/BTC Connect",title:"BTC Connect (Account Abstraction)",description:"Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.",source:"@site/docs/DeveloperResources/BTC Connect.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/BTC Connect",permalink:"/docs/DeveloperResources/BTC Connect",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"docs",previous:{title:"Block Explorers",permalink:"/docs/DeveloperResources/Block Explorers"},next:{title:"FAQs",permalink:"/docs/category/faqs"}},a={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Dashboard Configuration",id:"dashboard-configuration",level:3},{value:"Dependency Installation",id:"dependency-installation",level:3},{value:"Configuring BTC Connect",id:"configuring-btc-connect",level:2},{value:"Application Implementation",id:"application-implementation",level:2},{value:"Part 1: Interacting with BTC Connect through an EIP-1193 Provider",id:"part-1-interacting-with-btc-connect-through-an-eip-1193-provider",level:3},{value:"Part 2: Facilitating Wallet Connection",id:"part-2-facilitating-wallet-connection",level:3},{value:"Part 3: Transaction Execution",id:"part-3-transaction-execution",level:3},{value:"Bitlayer (EVM)",id:"bitlayer-evm",level:4},{value:"Bitcoin (L1)",id:"bitcoin-l1",level:4},{value:"Conclusion",id:"conclusion",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"btc-connect-account-abstraction",children:"BTC Connect (Account Abstraction)"}),"\n",(0,o.jsx)(n.p,{children:"Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts."}),"\n",(0,o.jsx)(n.p,{children:"BTC Connect achieves this by, firstly, allowing users to connect to your dApp with their UniSat, OKX, TokenPocket, Bybit, or Bitget wallet. Upon connecting, a smart account is generated on Bitlayer and assigned to their BTC account. This smart account can then be used and authenticated directly through their BTC wallet, providing native Bitcoin users with a simple interface to interact with applications on Bitlayer."}),"\n",(0,o.jsxs)(n.p,{children:["BTC Connect natively supports Bitlayer within its flagship SDK, ",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),", and has been deployed on Testnet and Mainnet. This document will provide an initial introduction and step-by-step guide to working with BTC Connect on Bitlayer through this SDK."]}),"\n",(0,o.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,o.jsxs)(n.p,{children:["Throughout this page, you'll find details on installing, configuring, initializing, and completing a full integration of BTC Connect within your application on Bitlayer. Specifically, this guide will contextualize this process by building a simple ",(0,o.jsx)(n.code,{children:"create-react-app"})," demo application. Before starting, you can find this application ",(0,o.jsx)(n.a,{href:"https://github.com/TABASCOatw/particle-bitlayer-demo",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To learn more about BTC Connect, head over to ",(0,o.jsx)(n.a,{href:"https://developers.particle.network/reference/introduction-to-btc-connect",children:"Particle Network's documentation"}),"."]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.p,{children:"Before configuring and implementing BTC Connect, you'll need to meet the following prerequisites:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Have a project and application configured within the ",(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle dashboard"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Prepare a ",(0,o.jsx)(n.code,{children:"create-react-app"})," or ",(0,o.jsx)(n.code,{children:"Next.js"})," application structure to integrate BTC Connect with the required dependencies installed."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"dashboard-configuration",children:"Dashboard Configuration"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle Network's dashboard"})," acts as the central control panel for all applications that use BTC Connect or Smart Wallet-as-a-Service. To use and authenticate BTC Connect, you'll need to retrieve various keys from this dashboard, which you can be do through the following process:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Head over to the ",(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle dashboard"}),", and either login or create a new account."]}),"\n",(0,o.jsx)(n.li,{children:"Create a new project for your application."}),"\n",(0,o.jsx)(n.li,{children:"After opening this project, create a web application representing your dApp."}),"\n",(0,o.jsxs)(n.li,{children:["Finally, with an application made, copy your ",(0,o.jsx)(n.strong,{children:"Project ID"}),", ",(0,o.jsx)(n.strong,{children:"Client Key"}),", and ",(0,o.jsx)(n.strong,{children:"App ID"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["You'll be using these three values momentarily to configure BTC Connect. If applicable, you can save these within corresponding environment variables, such as ",(0,o.jsx)(n.code,{children:"REACT_APP_PROJECT_ID"}),", ",(0,o.jsx)(n.code,{children:"REACT_APP_CLIENT_KEY"}),", and ",(0,o.jsx)(n.code,{children:"REACT_APP_APP_ID"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"dependency-installation",children:"Dependency Installation"}),"\n",(0,o.jsxs)(n.p,{children:["Within your React-based application (in this example, we'll be using ",(0,o.jsx)(n.code,{children:"create-react-app"}),"), you'll need to install two key dependencies related to BTC Connect. These are:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),", the primary SDK for BTC Connect."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"@particle-network/chains"}),", a collection of chain objects including ",(0,o.jsx)(n.code,{children:"BitlayerTestnet"})," and ",(0,o.jsx)(n.code,{children:"Bitlayer"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"To install these libraries, run one of the following commands within your project:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-shell",children:"yarn add @particle-network/btc-connectkit @particle-network/chains\n\n\n# OR\n\n\nnpm install @particle-network/btc-connectkit @particle-network/chains\n\n\n# Other package managers such as pnpm would work too.\n"})}),"\n",(0,o.jsx)(n.h2,{id:"configuring-btc-connect",children:"Configuring BTC Connect"}),"\n",(0,o.jsxs)(n.p,{children:["BTC Connect (",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),") is a React-based SDK. Therefore, configuring it and preparing for integration will require the initialization of a corresponding React component, which will wrap your core application component or JSX. In this example, this will take place within ",(0,o.jsx)(n.code,{children:"index.tsx"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Within your ",(0,o.jsx)(n.code,{children:"index.tsx"})," file (or the equivalent location for your project), import the following objects from ",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),":"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"ConnectProvider"}),", the React component used for configuration."]}),"\n",(0,o.jsxs)(n.li,{children:["One, or multiple of the following wallets:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"OKXConnector"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"UnisatConnector"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"BitgetConnector"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"TokenPocketConnector"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"BybitConnector"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["With these imported, you're ready to configure the ",(0,o.jsx)(n.code,{children:"ConnectProvider"})," component through its ",(0,o.jsx)(n.code,{children:"options"})," and ",(0,o.jsx)(n.code,{children:"connectors"})," parameters. Starting with ",(0,o.jsx)(n.code,{children:"options"}),", you'll need to define the following properties:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"projectId"}),", ",(0,o.jsx)(n.code,{children:"clientKey"}),", and ",(0,o.jsx)(n.code,{children:"appId"}),". These were previously retrieved from the ",(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle dashboard"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"aaOptions"}),", which contains ",(0,o.jsx)(n.code,{children:"accountContracts"}),", taking:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"BTC"}),", the smart account implementation you'll be leveraging.","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"chainIds"}),", one or multiple chains that your application will support. In this case, you can either use Bitlayer's chain ID, ",(0,o.jsx)(n.code,{children:"200810"}),", or ",(0,o.jsx)(n.code,{children:"BitlayerTestnet.id"})," from ",(0,o.jsx)(n.code,{children:"@particle-network/chains"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"version"}),", the BTC smart account version you intend to use. For Bitlayer, this should be ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"2.0.0"})}),". If you intend to use more than just Bitlayer, you may need to define another instance of ",(0,o.jsx)(n.code,{children:"BTC"})," using ",(0,o.jsx)(n.code,{children:"version"})," ",(0,o.jsx)(n.code,{children:"1.0.0"}),". For more information on which chains support ",(0,o.jsx)(n.code,{children:"1.0.0"})," and which support ",(0,o.jsx)(n.code,{children:"2.0.0"}),", head over to ",(0,o.jsx)(n.a,{href:"https://developers.particle.network/docs/network-coverage#btc-connect",children:"Particle Network's documentation"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"walletOptions"}),", which contains:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"visible"}),", a Boolean determining whether or not Particle Network's embedded wallet modal will be shown after a user connects their Bitcoin wallet. If set to ",(0,o.jsx)(n.code,{children:"true"}),", users will have direct access to their associated smart accounts through this embedded interface. Otherwise, if ",(0,o.jsx)(n.code,{children:"false"}),", developers will need to retrieve and reflect wallet information, such as balances, independently."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Once you've defined ",(0,o.jsx)(n.code,{children:"options"})," using the parameters detailed above, you'll need to select the wallets you'd like to be supported within BTC Connect through the ",(0,o.jsx)(n.code,{children:"connectors"})," property."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"connectors"})," is simply an array of wallet objects ( previously imported), such as ",(0,o.jsx)(n.code,{children:"OKXConnector"}),". These should be initialized through syntax such as ",(0,o.jsx)(n.code,{children:"[new OKXConnector(), new UnisatConnector()]"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Below is an example of what a configured instance of ",(0,o.jsx)(n.code,{children:"ConnectProvider"})," typically looks like; this is demonstrated through a central ",(0,o.jsx)(n.code,{children:"index.tsx"})," file:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:"import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport {\n ConnectProvider,\n OKXConnector, //\n UnisatConnector, //\n BitgetConnector, // -- Only one connector is required, although any combination of these five may be used.\n TokenPocketConnector, //\n BybitConnector // \n} from '@particle-network/btc-connectkit';\nimport { BitlayerTestnet } from '@particle-network/chains';\n\n\n\n\n// The component in which you're using BTC Connect\nimport App from './App';\n\n\n\n\nReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(\n \n \n \n \n \n)\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Once ",(0,o.jsx)(n.code,{children:"ConnectProvider"})," is configured, you're ready to implement BTC Connect through your central application component."]}),"\n",(0,o.jsx)(n.h2,{id:"application-implementation",children:"Application Implementation"}),"\n",(0,o.jsx)(n.p,{children:"At this point, you should have:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Created a new project and application through the ",(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle dashboard"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Installed ",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"})," and ",(0,o.jsx)(n.code,{children:"@particle-network/chains"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Configured BTC Connect through ",(0,o.jsx)(n.code,{children:"ConnectProvider"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Now, to integrate BTC Connect, we'll do the following:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Configure Ethers, or any other standard Web3 library (such as Web3.js) using hooks from ",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),"."]}),"\n",(0,o.jsx)(n.li,{children:'Prepare a "Connect Wallet" button.'}),"\n",(0,o.jsx)(n.li,{children:"Test BTC Connect by executing transactions on both Bitlayer and native Bitcoin."}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"part-1-interacting-with-btc-connect-through-an-eip-1193-provider",children:"Part 1: Interacting with BTC Connect through an EIP-1193 Provider"}),"\n",(0,o.jsxs)(n.p,{children:["Interaction with BTC Connect can be facilitated either natively through the SDK \u2013with functions from the ",(0,o.jsx)(n.code,{children:"useETHProvider"})," hook, such as ",(0,o.jsx)(n.code,{children:"buildUserOp"})," (for constructing transactions) and ",(0,o.jsx)(n.code,{children:"sendUserOp"})," (for executing them), or through an external Web3 library such as Ethers. In this example, we'll focus on the latter."]}),"\n",(0,o.jsx)(n.p,{children:"Specifically, leveraging the user's smart account on Bitlayer through Ethers requires using BTC Connect's EIP-1193 provider object. After a user connects, this object will be populated with an EVM account instance."}),"\n",(0,o.jsxs)(n.p,{children:["To retrieve this object, you'll need to define ",(0,o.jsx)(n.code,{children:"provider"})," from the ",(0,o.jsx)(n.code,{children:"useETHProvider"})," hook. Using ",(0,o.jsx)(n.code,{children:"provider"}),", an instance of Ethers (or Web3.js, viem, etc.) can be constructed, as shown below."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:"import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\n\n\nconst App = () => {\n const { provider } = useETHProvider();\n \n const customProvider = new ethers.providers.Web3Provider(provider, \"any\");\n \n ...\n};\n"})}),"\n",(0,o.jsx)(n.p,{children:"This Ethers instance can be used directly for transaction construction and execution. Signatures will be pushed to the connected Bitcoin wallet directly through the means of the EIP-1193 provider."}),"\n",(0,o.jsx)(n.h3,{id:"part-2-facilitating-wallet-connection",children:"Part 2: Facilitating Wallet Connection"}),"\n",(0,o.jsx)(n.p,{children:"Wallet connection can be implemented through one of two ways with BTC Connect:"}),"\n",(0,o.jsxs)(n.p,{children:["The first method requires using BTC Connect's built-in connection modal, which contains buttons for the wallets previously defined within ",(0,o.jsx)(n.code,{children:"connectors"})," (on ",(0,o.jsx)(n.code,{children:"ConnectProvider"}),"). Below is a screenshot of this interface."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://files.readme.io/3bf67a6-connectmodal_1.png",alt:""})}),"\n",(0,o.jsx)(n.p,{children:"Alternatively, direct shortcuts to these wallets (independent from the above interface) can be configured in scenarios where you may want to design your own wallet connection interface."}),"\n",(0,o.jsxs)(n.p,{children:["Starting with the built-in modal, this can be opened by simply calling ",(0,o.jsx)(n.code,{children:"openConnectModal"})," from the ",(0,o.jsx)(n.code,{children:"useConnectModal"})," hook; upon calling, the aforementioned interface will be opened. An example of this has been included below:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:"import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\nimport './App.css';\n\n\n\n\nconst App = () => {\n const { openConnectModal } = useConnectModal();\n \n ...\n \n openConnectModal();\n\n\n ...\n}\n"})}),"\n",(0,o.jsxs)(n.p,{children:["For a more hands-on approach to designing your own interface, you can connect to individual wallets using the ",(0,o.jsx)(n.code,{children:"connect"})," function from the ",(0,o.jsx)(n.code,{children:"useConnector"})," hook. This function will simply take a string representing the wallet you'd like to connect to, such as ",(0,o.jsx)(n.code,{children:"'unisat'"}),", as shown below."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:"import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';\nimport { ethers } from 'ethers';\nimport './App.css';\n\n\n\n\nconst App = () => {\n const { connect } = useConnector();\n \n ...\n \n connect('unisat');\n // Or 'okx', 'bybit', etc.\n \n ...\n}\n"})}),"\n",(0,o.jsx)(n.h3,{id:"part-3-transaction-execution",children:"Part 3: Transaction Execution"}),"\n",(0,o.jsx)(n.h4,{id:"bitlayer-evm",children:"Bitlayer (EVM)"}),"\n",(0,o.jsx)(n.p,{children:"Now that you've facilitated wallet connection and configured a corresponding Ethers object, you're ready to execute transactions on Bitlayer using the associated smart account generated from the user's Bitcoin wallet."}),"\n",(0,o.jsxs)(n.p,{children:["Using Ethers, this is done by constructing a simple transaction (using standard fields such as ",(0,o.jsx)(n.code,{children:"to"}),", ",(0,o.jsx)(n.code,{children:"value"}),", ",(0,o.jsx)(n.code,{children:"data"}),", etc.) and executing it using the ",(0,o.jsx)(n.code,{children:"signer"})," property with ",(0,o.jsx)(n.code,{children:"customProvider.getSigner()"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Any transaction that can be constructed and executed through Ethers translates 1:1 within this flow."}),"\n",(0,o.jsx)(n.p,{children:"Below is an example that burns 0.001 BTC."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:'const executeTxEvm = async () => {\n const signer = customProvider.getSigner();\n\n\n\n\n const tx = {\n to: "0x000000000000000000000000000000000000dEaD", // Burn address\n value: ethers.utils.parseEther(\'0.001\'), // 0.001 BTC\n data: "0x" // Optional, only define for contract interaction or related operations\n };\n\n\n\n\n // Gasless due to usage of SendTransactonMode.Gasless within customProvider\n const txResponse = await signer.sendTransaction(tx);\n const txReceipt = await txResponse.wait();\n\n\n\n\n notification.success({\n message: "Transaction Successful",\n description: (\n
\n Transaction Hash: {txReceipt.transactionHash}\n
\n )\n });\n};\n'})}),"\n",(0,o.jsx)(n.p,{children:"Upon executing, a signature will be requested from the connected Bitcoin wallet. This signature will directly authenticate the associated smart account on Bitlayer."}),"\n",(0,o.jsx)(n.h4,{id:"bitcoin-l1",children:"Bitcoin (L1)"}),"\n",(0,o.jsx)(n.p,{children:"Alternatively, the same wallet connection can be used to simultaneously execute transactions on native Bitcoin."}),"\n",(0,o.jsxs)(n.p,{children:["To handle this, BTC Connect has the ",(0,o.jsx)(n.code,{children:"useBTCProvider"})," hook, containing functions such as ",(0,o.jsx)(n.code,{children:"sendBitcoin"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"sendBitcoin"})," will send a standard P2P transaction on Bitcoin, requesting a signature from the user's connected Bitcoin wallet. The snippet shown below demonstrates an example of this through a custom function, ",(0,o.jsx)(n.code,{children:"executeTxBtc"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:"import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';\nimport './App.css';\n\n\nconst App = () => {\n const { sendBitcoin, accounts } = useBTCProvider();\n \n const executeTxBtc = async () => { \n // Sends 1 satoshi back to the sender\n const hash = await sendBitcoin(accounts[0], 1);\n\n\n\n\n notification.success({\n message: 'Transaction Successful',\n description: (\n
\n Transaction Hash: {hash}\n
\n )\n });\n };\n};\n"})}),"\n",(0,o.jsx)(n.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,o.jsx)(n.p,{children:"Through the above guide, you should now understand how to:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Configure the ",(0,o.jsx)(n.a,{href:"https://dashboard.particle.network",children:"Particle Network dashboard"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Install and initialize BTC Connect (",(0,o.jsx)(n.code,{children:"@particle-network/btc-connectkit"}),")."]}),"\n",(0,o.jsx)(n.li,{children:"Construct a custom Ethers provider to manage the user's smart account."}),"\n",(0,o.jsx)(n.li,{children:"Facilitate wallet connection."}),"\n",(0,o.jsx)(n.li,{children:"Build and execute transactions on both Bitlayer and native Bitcoin."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["To view and try a complete demo application based on the snippets shown in this guide, visit our ",(0,o.jsx)(n.a,{href:"https://github.com/TABASCOatw/particle-bitlayer-demo",children:"dedicated GitHub repository"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://particle.network",children:"Particle Network"})," has extensive documentation covering the implementation of BTC Connect within applications built on Bitlayer, which can be found ",(0,o.jsx)(n.a,{href:"https://developers.particle.network/reference/introduction-to-btc-connect",children:"here"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>s});var o=t(6540);const i={},r=o.createContext(i);function c(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/79bd6113.de680851.js b/assets/js/79bd6113.de680851.js deleted file mode 100644 index 92f051c8..00000000 --- a/assets/js/79bd6113.de680851.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5714],{5100:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/hello-bitlayer","name":"Hello Bitlayer","count":1,"permalink":"/blog/tags/hello-bitlayer"}')}}]); \ No newline at end of file diff --git a/assets/js/79f3b2bb.2db670d8.js b/assets/js/79f3b2bb.2db670d8.js deleted file mode 100644 index 2b2e14a2..00000000 --- a/assets/js/79f3b2bb.2db670d8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7525],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return y}});var i=r(7294);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 a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(r),y=n,h=p["".concat(l,".").concat(y)]||p[y]||u[y]||a;return r?i.createElement(h,o(o({ref:t},d),{},{components:r})):i.createElement(h,o({ref:t},d))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:n,o[1]=s;for(var c=2;c Blockchains"),(0,a.kt)("p",null,"When integrating Bitlayer with Bitcoin or Bitcoin-compatible chains, it is recommended to utilize bridge solutions such as UniSats/OKX/Xverse. These bridges enable the transfer of assets between Bitlayer's Layer 2 solution and the Bitcoin blockchain. By bridging the gap between Bitlayer and Bitcoin, users can enjoy the benefits of Bitlayer's EVM compatibility while leveraging the security and liquidity of the Bitcoin network."),(0,a.kt)("h3",{id:"btc---bitlayer"},"BTC <-> Bitlayer"),(0,a.kt)("p",null,"Mainnet-V1: Bitlayer team is working with multiple MPC custody platform(including Coinbase, Sinohope(HK.1611)) to secure the assets."),(0,a.kt)("h3",{id:"evm---bitlayer"},"EVM <-> Bitlayer"),(0,a.kt)("p",null,"Bitlayer team builds the trustless bridge together with ",(0,a.kt)("a",{parentName:"p",href:"https://x.com/PolyhedraZK"},"Polyhedra")," team."),(0,a.kt)("h2",{id:"bitlayer---cexs-centralized-exchanges"},"Bitlayer <-> CEXs (Centralized Exchanges)"),(0,a.kt)("p",null,"Bitlayer also supports bridges that connect with centralized exchanges (CEXs). With these bridges, users can withdraw their assets from centralized exchanges directly to Bitlayer's ETH-compatible wallet address. This allows users to seamlessly transfer funds from centralized exchanges to Bitlayer and leverage the Layer 2 capabilities provided by Bitlayer."),(0,a.kt)("p",null,"By leveraging bridges, Bitlayer expands its reach and connectivity, enabling users to interact with a wide range of blockchain networks and centralized exchanges. Developers can explore and integrate these bridges into their applications, providing users with enhanced flexibility and access to various blockchain ecosystems."))}y.isMDXComponent=!0},7088:function(e,t,r){t.Z=r.p+"assets/images/bridge-4e7855ee45b3462b895007eee8507948.png"}}]); \ No newline at end of file diff --git a/assets/js/79f3b2bb.a0866e17.js b/assets/js/79f3b2bb.a0866e17.js new file mode 100644 index 00000000..adb50e6d --- /dev/null +++ b/assets/js/79f3b2bb.a0866e17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4570],{8601:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>n,metadata:()=>o,toc:()=>c});var s=i(4848),r=i(8453);const n={sidebar_position:3},a="Bridges",o={id:"BitlayerNetwork/Bridges",title:"Bridges",description:"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.",source:"@site/docs/BitlayerNetwork/Bridges.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/Bridges",permalink:"/docs/BitlayerNetwork/Bridges",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Networks and RPC Enpoints",permalink:"/docs/BitlayerNetwork/Networks"},next:{title:"JSON-RPC",permalink:"/docs/BitlayerNetwork/Json-RPC"}},l={},c=[{value:"Bitlayer to Blockchains",id:"bitlayer-to-blockchains",level:2},{value:"BTC to Bitlayer",id:"btc-to-bitlayer",level:3},{value:"EVM to Bitlayer",id:"evm-to-bitlayer",level:3},{value:"Bitlayer to CEXs (Centralized Exchanges)",id:"bitlayer-to-cexs-centralized-exchanges",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",img:"img",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"bridges",children:"Bridges"}),"\n",(0,s.jsx)(t.p,{children:"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem."}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Bridge Image",src:i(5165).A+"",width:"3512",height:"1924"})}),"\n",(0,s.jsx)(t.h2,{id:"bitlayer-to-blockchains",children:"Bitlayer to Blockchains"}),"\n",(0,s.jsx)(t.p,{children:"When integrating Bitlayer with Bitcoin or Bitcoin-compatible chains, it is recommended to utilize bridge solutions such as UniSats, OKX, or Xverse. These bridges enable the transfer of assets between Bitlayer's Layer 2 solution and the Bitcoin blockchain. By bridging the gap between Bitlayer and Bitcoin, users can enjoy the benefits of Bitlayer's EVM compatibility while leveraging the security and liquidity of the Bitcoin network."}),"\n",(0,s.jsx)(t.h3,{id:"btc-to-bitlayer",children:"BTC to Bitlayer"}),"\n",(0,s.jsx)(t.p,{children:"Mainnet-V1: The Bitlayer team is working with multiple MPC custody platforms, including Coinbase and Sinohope (HK.1611), to secure the assets."}),"\n",(0,s.jsx)(t.h3,{id:"evm-to-bitlayer",children:"EVM to Bitlayer"}),"\n",(0,s.jsxs)(t.p,{children:["The Bitlayer team builds the trustless bridge together with the ",(0,s.jsx)(t.a,{href:"https://x.com/PolyhedraZK",children:"Polyhedra"})," team."]}),"\n",(0,s.jsx)(t.h2,{id:"bitlayer-to-cexs-centralized-exchanges",children:"Bitlayer to CEXs (Centralized Exchanges)"}),"\n",(0,s.jsx)(t.p,{children:"Bitlayer also supports bridges that connect with centralized exchanges (CEXs). With these bridges, users can withdraw their assets from centralized exchanges directly to Bitlayer's ETH-compatible wallet address. This allows users to seamlessly transfer funds from centralized exchanges to Bitlayer and leverage the Layer 2 capabilities provided by Bitlayer."}),"\n",(0,s.jsx)(t.p,{children:"By leveraging bridges, Bitlayer expands its reach and connectivity, enabling users to interact with a wide range of blockchain networks and centralized exchanges. Developers can explore and integrate these bridges into their applications, providing users with enhanced flexibility and access to various blockchain ecosystems."})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},5165:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/bridge-4e7855ee45b3462b895007eee8507948.png"},8453:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var s=i(6540);const r={},n=s.createContext(r);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ae85faa.6df24cc9.js b/assets/js/7ae85faa.6df24cc9.js deleted file mode 100644 index 6b5492e8..00000000 --- a/assets/js/7ae85faa.6df24cc9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2315],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var i=n(7294);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 a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=i.createContext({}),c=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return i.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),h=r,f=d["".concat(s,".").concat(h)]||d[h]||p[h]||a;return n?i.createElement(f,o(o({ref:t},u),{},{components:n})):i.createElement(f,o({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=i(4848),a=i(8453);const o={sidebar_position:5},r="Roadmap",s={id:"Introduction/Roadmap",title:"Roadmap",description:"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.",source:"@site/docs/Introduction/Roadmap.md",sourceDirName:"Introduction",slug:"/Introduction/Roadmap",permalink:"/docs/Introduction/Roadmap",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"docs",previous:{title:"Technical Architecture",permalink:"/docs/Introduction/TechnicalArchitecture"},next:{title:"About BitVM",permalink:"/docs/Introduction/BitVM"}},l={},c=[{value:"First Stage: Bitlayer Mainnet-V1",id:"first-stage-bitlayer-mainnet-v1",level:2},{value:"Second Stage: Bitlayer Mainnet-V2",id:"second-stage-bitlayer-mainnet-v2",level:2},{value:"Third Stage: Bitlayer Mainnet V3",id:"third-stage-bitlayer-mainnet-v3",level:2}];function d(e){const t={h1:"h1",h2:"h2",img:"img",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"roadmap",children:"Roadmap"}),"\n",(0,n.jsx)(t.p,{children:"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Roadmap",src:i(7938).A+"",width:"1421",height:"735"})}),"\n",(0,n.jsx)(t.h2,{id:"first-stage-bitlayer-mainnet-v1",children:"First Stage: Bitlayer Mainnet-V1"}),"\n",(0,n.jsx)(t.p,{children:"In this initial phase, Bitlayer will support the cross-chain movement of BTC/BRC-20 assets between the Bitcoin mainnet and Bitlayer, and other mainstream assets, thereby enriching the overall value of the Bitlayer ecosystem."}),"\n",(0,n.jsx)(t.p,{children:"During this stage, we will prioritize offering a 100% EVM-compatible development kit and ecosystem support, enabling developers to quickly build, test, and deploy applications on Bitlayer. Solidity applications can be seamlessly migrated, providing early users with the benefits of low gas fees and an extensible Bitcoin framework."}),"\n",(0,n.jsx)(t.h2,{id:"second-stage-bitlayer-mainnet-v2",children:"Second Stage: Bitlayer Mainnet-V2"}),"\n",(0,n.jsx)(t.p,{children:"In this phase, we plan to introduce a rollup-equivalent model, implement a BitVM component for commiting and challenging the state transition, achieving the L1 verification ability."}),"\n",(0,n.jsx)(t.p,{children:"By leveraging the vast network and security of Bitcoin, Bitlayer will continuously lead with the highest security standards, offering users enhanced flexibility and an improved onchain experience through network upgrades."}),"\n",(0,n.jsx)(t.h2,{id:"third-stage-bitlayer-mainnet-v3",children:"Third Stage: Bitlayer Mainnet V3"}),"\n",(0,n.jsx)(t.p,{children:"In this phase, our aim is to implement trustless bridge based on the L1 verification ability."}),"\n",(0,n.jsx)(t.p,{children:"Upon the completion of this third stage, Bitlayer\u2019s final mainnet will be fully deployed, achieving the network's original goals\u2014Bitcoin-equivalent security combined with Turing completeness."}),"\n",(0,n.jsx)(t.p,{children:"This version is set to elevate the security standards of Bitcoin Layer 2 to an unprecedented level."})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},7938:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/roadmap2-329449a0604fa999bfda10f4b91fe133.png"},8453:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>s});var n=i(6540);const a={},o=n.createContext(a);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7bed6d4c.53625629.js b/assets/js/7bed6d4c.53625629.js new file mode 100644 index 00000000..a84d37d5 --- /dev/null +++ b/assets/js/7bed6d4c.53625629.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4258],{5848:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Bitlayer Network","slug":"/category/bitlayer-network","permalink":"/docs/category/bitlayer-network","sidebar":"docs","navigation":{"previous":{"title":"Compile, Run and Deploy","permalink":"/docs/Build/Compile and Run"},"next":{"title":"About Gas","permalink":"/docs/BitlayerNetwork/AboutGas"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/7c110bd0.177d4f76.js b/assets/js/7c110bd0.177d4f76.js new file mode 100644 index 00000000..1900359e --- /dev/null +++ b/assets/js/7c110bd0.177d4f76.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6877],{2614:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Welcome","href":"/docs/Introduction/","docId":"Introduction/Introduction","unlisted":false},{"type":"link","label":"About Bitlayer","href":"/docs/Introduction/AboutBitlayer","docId":"Introduction/AboutBitlayer","unlisted":false},{"type":"link","label":"Bitlayer vs. Ethereum","href":"/docs/Introduction/BitlayerVsEth","docId":"Introduction/BitlayerVsEth","unlisted":false},{"type":"link","label":"Technical Architecture","href":"/docs/Introduction/TechnicalArchitecture","docId":"Introduction/TechnicalArchitecture","unlisted":false},{"type":"link","label":"Roadmap","href":"/docs/Introduction/Roadmap","docId":"Introduction/Roadmap","unlisted":false},{"type":"link","label":"About BitVM","href":"/docs/Introduction/BitVM","docId":"Introduction/BitVM","unlisted":false}],"href":"/docs/category/introduction"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Quick Start Guide","href":"/docs/Build/QuickStart","docId":"Build/QuickStart","unlisted":false},{"type":"link","label":"Compile, Run and Deploy","href":"/docs/Build/Compile and Run","docId":"Build/Compile and Run","unlisted":false}],"href":"/docs/category/getting-started"},{"type":"category","label":"Bitlayer Network","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Gas","href":"/docs/BitlayerNetwork/AboutGas","docId":"BitlayerNetwork/AboutGas","unlisted":false},{"type":"link","label":"Networks and RPC Enpoints","href":"/docs/BitlayerNetwork/Networks","docId":"BitlayerNetwork/Networks","unlisted":false},{"type":"link","label":"Bridges","href":"/docs/BitlayerNetwork/Bridges","docId":"BitlayerNetwork/Bridges","unlisted":false},{"type":"link","label":"JSON-RPC","href":"/docs/BitlayerNetwork/Json-RPC","docId":"BitlayerNetwork/Json-RPC","unlisted":false},{"type":"link","label":"Contracts","href":"/docs/BitlayerNetwork/Contracts","docId":"BitlayerNetwork/Contracts","unlisted":false},{"type":"link","label":"Peg Tokens","href":"/docs/BitlayerNetwork/PegTokens","docId":"BitlayerNetwork/PegTokens","unlisted":false}],"href":"/docs/category/bitlayer-network"},{"type":"category","label":"Bitlayer Architecture","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview of Bitlayer\'s Design","href":"/docs/BitlayerArchitecture/BitlayerDesign","docId":"BitlayerArchitecture/BitlayerDesign","unlisted":false},{"type":"link","label":"Layered Virtual Machine (LVM)","href":"/docs/BitlayerArchitecture/LVM","docId":"BitlayerArchitecture/LVM","unlisted":false},{"type":"link","label":"Bitlayer\'s Transaction Lifecycle","href":"/docs/BitlayerArchitecture/TransactionLifecycle","docId":"BitlayerArchitecture/TransactionLifecycle","unlisted":false}],"href":"/docs/category/bitlayer-architecture"},{"type":"category","label":"Bitlayer Scan APIs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Accounts","href":"/docs/Bitlayer Scan APIs/Accounts","docId":"Bitlayer Scan APIs/Accounts","unlisted":false},{"type":"link","label":"Contracts","href":"/docs/Bitlayer Scan APIs/Contracts","docId":"Bitlayer Scan APIs/Contracts","unlisted":false},{"type":"link","label":"Transactions","href":"/docs/Bitlayer Scan APIs/Transactions","docId":"Bitlayer Scan APIs/Transactions","unlisted":false},{"type":"link","label":"Blocks","href":"/docs/Bitlayer Scan APIs/Blocks","docId":"Bitlayer Scan APIs/Blocks","unlisted":false},{"type":"link","label":"Logs","href":"/docs/Bitlayer Scan APIs/Logs","docId":"Bitlayer Scan APIs/Logs","unlisted":false},{"type":"link","label":"Tokens","href":"/docs/Bitlayer Scan APIs/Tokens","docId":"Bitlayer Scan APIs/Tokens","unlisted":false}],"href":"/docs/category/bitlayer-scan-apis"},{"type":"category","label":"Developer Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Supported Wallets for Bitlayer","href":"/docs/DeveloperResources/Wallets","docId":"DeveloperResources/Wallets","unlisted":false},{"type":"link","label":"Indexing-The-Graph","href":"/docs/DeveloperResources/TheGraph","docId":"DeveloperResources/TheGraph","unlisted":false},{"type":"link","label":"Indexing-3rd-Party","href":"/docs/DeveloperResources/Subgraph","docId":"DeveloperResources/Subgraph","unlisted":false},{"type":"link","label":"Faucets","href":"/docs/DeveloperResources/Faucets","docId":"DeveloperResources/Faucets","unlisted":false},{"type":"link","label":"Block Explorers","href":"/docs/DeveloperResources/Block Explorers","docId":"DeveloperResources/Block Explorers","unlisted":false},{"type":"link","label":"BTC Connect (Account Abstraction)","href":"/docs/DeveloperResources/BTC Connect","docId":"DeveloperResources/BTC Connect","unlisted":false}],"href":"/docs/category/developer-resources"},{"type":"category","label":"FAQs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Frequently Asked Questions","href":"/docs/FAQs/Frequently asked questions","docId":"FAQs/Frequently asked questions","unlisted":false},{"type":"link","label":"Contact Details","href":"/docs/FAQs/Contact Details","docId":"FAQs/Contact Details","unlisted":false},{"type":"link","label":"wBTC","href":"/docs/FAQs/WBTC","docId":"FAQs/WBTC","unlisted":false},{"type":"link","label":"DefiLlama TVL Integration","href":"/docs/FAQs/Defillama TVL integration","docId":"FAQs/Defillama TVL integration","unlisted":false}],"href":"/docs/category/faqs"}]},"docs":{"Bitlayer Scan APIs/Accounts":{"id":"Bitlayer Scan APIs/Accounts","title":"Accounts","description":"Endpoint URLs","sidebar":"docs"},"Bitlayer Scan APIs/Blocks":{"id":"Bitlayer Scan APIs/Blocks","title":"Blocks","description":"Get Block Rewards by BlockNo","sidebar":"docs"},"Bitlayer Scan APIs/Contracts":{"id":"Bitlayer Scan APIs/Contracts","title":"Contracts","description":"Verify the contract through hardhat verify","sidebar":"docs"},"Bitlayer Scan APIs/Logs":{"id":"Bitlayer Scan APIs/Logs","title":"Logs","description":"Get Event Logs by Address","sidebar":"docs"},"Bitlayer Scan APIs/Tokens":{"id":"Bitlayer Scan APIs/Tokens","title":"Tokens","description":"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress","sidebar":"docs"},"Bitlayer Scan APIs/Transactions":{"id":"Bitlayer Scan APIs/Transactions","title":"Transactions","description":"Check Transaction Receipt Status","sidebar":"docs"},"BitlayerArchitecture/BitlayerDesign":{"id":"BitlayerArchitecture/BitlayerDesign","title":"Overview of Bitlayer\'s Design","description":"Technical White Paper","sidebar":"docs"},"BitlayerArchitecture/LVM":{"id":"BitlayerArchitecture/LVM","title":"Layered Virtual Machine (LVM)","description":"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.","sidebar":"docs"},"BitlayerArchitecture/TransactionLifecycle":{"id":"BitlayerArchitecture/TransactionLifecycle","title":"Bitlayer\'s Transaction Lifecycle","description":"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:","sidebar":"docs"},"BitlayerNetwork/AboutGas":{"id":"BitlayerNetwork/AboutGas","title":"About Gas","description":"Important: about gas price","sidebar":"docs"},"BitlayerNetwork/Bridges":{"id":"BitlayerNetwork/Bridges","title":"Bridges","description":"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.","sidebar":"docs"},"BitlayerNetwork/Contracts":{"id":"BitlayerNetwork/Contracts","title":"Contracts","description":"Contract Addresses (Mainnet)","sidebar":"docs"},"BitlayerNetwork/Json-RPC":{"id":"BitlayerNetwork/Json-RPC","title":"JSON-RPC","description":"Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.","sidebar":"docs"},"BitlayerNetwork/Networks":{"id":"BitlayerNetwork/Networks","title":"Networks and RPC Enpoints","description":"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.","sidebar":"docs"},"BitlayerNetwork/PegTokens":{"id":"BitlayerNetwork/PegTokens","title":"Peg Tokens","description":"Mainnet","sidebar":"docs"},"Build/Compile and Run":{"id":"Build/Compile and Run","title":"Compile, Run and Deploy","description":"This guide walks you through compiling and running Bitlayer.","sidebar":"docs"},"Build/QuickStart":{"id":"Build/QuickStart","title":"Quick Start Guide","description":"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.","sidebar":"docs"},"DeveloperResources/Block Explorers":{"id":"DeveloperResources/Block Explorers","title":"Block Explorers","description":"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.","sidebar":"docs"},"DeveloperResources/BTC Connect":{"id":"DeveloperResources/BTC Connect","title":"BTC Connect (Account Abstraction)","description":"Particle Network\'s BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.","sidebar":"docs"},"DeveloperResources/Faucets":{"id":"DeveloperResources/Faucets","title":"Faucets","description":"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.","sidebar":"docs"},"DeveloperResources/Subgraph":{"id":"DeveloperResources/Subgraph","title":"Indexing-3rd-Party","description":"What is a Subgraph?","sidebar":"docs"},"DeveloperResources/TheGraph":{"id":"DeveloperResources/TheGraph","title":"Indexing-The-Graph","description":"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.","sidebar":"docs"},"DeveloperResources/Wallets":{"id":"DeveloperResources/Wallets","title":"Supported Wallets for Bitlayer","description":"EVM-Compatible Wallets","sidebar":"docs"},"FAQs/Contact Details":{"id":"FAQs/Contact Details","title":"Contact Details","description":"Website\uff1ahttps://www.bitlayer.org/","sidebar":"docs"},"FAQs/Defillama TVL integration":{"id":"FAQs/Defillama TVL integration","title":"DefiLlama TVL Integration","description":"Introduction","sidebar":"docs"},"FAQs/Frequently asked questions":{"id":"FAQs/Frequently asked questions","title":"Frequently Asked Questions","description":"Q: When does Bitlayer launch?","sidebar":"docs"},"FAQs/WBTC":{"id":"FAQs/WBTC","title":"wBTC","description":"\u4e2d\u6587\u7248\u672c","sidebar":"docs"},"Introduction/AboutBitlayer":{"id":"Introduction/AboutBitlayer","title":"About Bitlayer","description":"For users and developers alike, the fundamental concept of Bitlayer is outlined below:","sidebar":"docs"},"Introduction/BitlayerVsEth":{"id":"Introduction/BitlayerVsEth","title":"Bitlayer vs. Ethereum","description":"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.","sidebar":"docs"},"Introduction/BitVM":{"id":"Introduction/BitVM","title":"About BitVM","description":"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.","sidebar":"docs"},"Introduction/Introduction":{"id":"Introduction/Introduction","title":"Welcome","description":"The first bitcoin security-equivalent Layer 2 based on BitVM","sidebar":"docs"},"Introduction/Roadmap":{"id":"Introduction/Roadmap","title":"Roadmap","description":"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.","sidebar":"docs"},"Introduction/TechnicalArchitecture":{"id":"Introduction/TechnicalArchitecture","title":"Technical Architecture","description":"Technical Architecture","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/7d70e263.b2c3f897.js b/assets/js/7d70e263.b2c3f897.js new file mode 100644 index 00000000..b8930cf9 --- /dev/null +++ b/assets/js/7d70e263.b2c3f897.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3047],{4249:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=n(4848),a=n(8453),s=n(1470),o=n(9365);const l={sidebar_position:6,title:"Tokens"},c=void 0,i={id:"Bitlayer Scan APIs/Tokens",title:"Tokens",description:"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress",source:"@site/docs/Bitlayer Scan APIs/Tokens.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Tokens",permalink:"/docs/Bitlayer Scan APIs/Tokens",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6,title:"Tokens"},sidebar:"docs",previous:{title:"Logs",permalink:"/docs/Bitlayer Scan APIs/Logs"},next:{title:"Developer Resources",permalink:"/docs/category/developer-resources"}},d={},u=[{value:"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress",id:"get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress",level:2},{value:"Get ERC20-Token Account Balance for TokenContractAddress",id:"get-erc20-token-account-balance-for-tokencontractaddress",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress",children:"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress"}),"\n",(0,r.jsx)(t.p,{children:"Returns the current amount of an ERC-20 token in circulation."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=token\r\n&action=tokensupply\r\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Try this endpoint in your ",(0,r.jsx)(t.a,{href:"https://api.btrscan.com/scan/api?module=token&action=tokensupply&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsxs)(o.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(t.p,{children:"Query Parameters"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Parameter"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"contractaddress"}),(0,r.jsxs)(t.td,{children:["the ",(0,r.jsx)(t.code,{children:"contract address"})," of the ERC-20 token"]})]})})]})]}),(0,r.jsxs)(o.A,{value:"response",label:"Response",children:[(0,r.jsx)(t.p,{children:"Sample Response"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": "20000000000"\r\n}\n'})}),(0,r.jsx)(t.admonition,{title:"The result is returned in the token's smallest decimal representation",type:"tip",children:(0,r.jsx)(t.p,{children:"Eg. a token with a balance of 215.241526476136819398 and 18 decimal places will be returned as 215241526476136819398"})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"get-erc20-token-account-balance-for-tokencontractaddress",children:"Get ERC20-Token Account Balance for TokenContractAddress"}),"\n",(0,r.jsx)(t.p,{children:"Returns the current balance of an ERC-20 token of an address."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=account\r\n&action=tokenbalance\r\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\r\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\r\n&tag=latest\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Try this endpoint in your ",(0,r.jsx)(t.a,{href:"https://api.btrscan.com/scan/api?module=account&action=tokenbalance&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&tag=latest",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsxs)(o.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(t.p,{children:"Query Parameters"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Parameter"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"contractaddress"}),(0,r.jsxs)(t.td,{children:["the ",(0,r.jsx)(t.code,{children:"contract address"})," of the ERC-20 token"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"address"}),(0,r.jsxs)(t.td,{children:["the ",(0,r.jsx)(t.code,{children:"string"})," representing the address to check for token balance"]})]})]})]})]}),(0,r.jsxs)(o.A,{value:"response",label:"Response",children:[(0,r.jsx)(t.p,{children:"Sample Response"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": 0\r\n}\n'})})]})]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(8215);const a={tabItem:"tabItem_Ymn6"};var s=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>g});var r=n(6540),a=n(8215),s=n(3104),o=n(6347),l=n(205),c=n(7485),i=n(1682),d=n(9466);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((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 child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}(n);return function(e){const t=(0,i.X)(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 . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const a=(0,o.W6)(),s=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 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,c.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(a.location.search);t.set(s,e),a.replace({...a.location,search:t.toString()})}),[s,a])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=h(e),[o,c]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The 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:s}))),[i,u]=f({queryString:n,groupId:a}),[b,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,s]=(0,d.Dv)(n);return[a,(0,r.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:a}),x=(()=>{const e=i??b;return p({value:e,tabValues:s})?e:null})();(0,l.A)((()=>{x&&c(x)}),[x]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),m(e)}),[u,m,s]),tabValues:s}}var m=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,s.a_)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=l[n].value;a!==r&&(i(t),o(a))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},t),children:l.map((e=>{let{value:t,label:n,attributes:s}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>c.push(e),onKeyDown:u,onClick:d,...s,className:(0,a.A)("tabs__item",x.tabItem,s?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function v(e){let{lazy:t,children:n,selectedValue:a}=e;const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=s.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:s.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function k(e){const t=b(e);return(0,j.jsxs)("div",{className:(0,a.A)("tabs-container",x.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(v,{...t,...e})]})}function g(e){const t=(0,m.A)();return(0,j.jsx)(k,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(6540);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7d70e263.e971e6bd.js b/assets/js/7d70e263.e971e6bd.js deleted file mode 100644 index 4da70595..00000000 --- a/assets/js/7d70e263.e971e6bd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3146],{3905:function(e,t,n){n.d(t,{Zo:function(){return i},kt:function(){return m}});var a=n(7294);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 l(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 c=a.createContext({}),u=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},i=function(e){var t=u(e.components);return a.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,i=s(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,f=d["".concat(c,".").concat(m)]||d[m]||p[m]||o;return n?a.createElement(f,l(l({ref:t},i),{},{components:n})):a.createElement(f,l({ref:t},i))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,l[1]=s;for(var u=2;u child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})),k=null!=d?d:b.map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes}})),v=(0,l.lx)(k,(function(e,t){return e.value===t.value}));if(v.length>0)throw new Error('Docusaurus error: Duplicate values "'+v.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.');var y=null===p?p:null!=(t=null!=p?p:null==(n=b.find((function(e){return e.props.default})))?void 0:n.props.value)?t:null==(o=b[0])?void 0:o.props.value;if(null!==y&&!k.some((function(e){return e.value===y})))throw new Error('Docusaurus error: The has a defaultValue "'+y+'" but none of its children has the corresponding value. Available values are: '+k.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var h=(0,l.UB)(),g=h.tabGroupChoices,N=h.setTabGroupChoices,T=(0,r.useState)(y),w=T[0],x=T[1],E=[],O=(0,l.o5)().blockElementScrollPositionUntilNextRender;if(null!=m){var C=g[m];null!=C&&C!==w&&k.some((function(e){return e.value===C}))&&x(C)}var P=function(e){var t=e.currentTarget,n=E.indexOf(t),a=k[n].value;a!==w&&(O(t),x(a),null!=m&&N(m,a))},j=function(e){var t,n=null;switch(e.key){case"ArrowRight":var a=E.indexOf(e.currentTarget)+1;n=E[a]||E[0];break;case"ArrowLeft":var r=E.indexOf(e.currentTarget)-1;n=E[r]||E[E.length-1]}null==(t=n)||t.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":i},f)},k.map((function(e){var t=e.value,n=e.label,o=e.attributes;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:w===t?0:-1,"aria-selected":w===t,key:t,ref:function(e){return E.push(e)},onKeyDown:j,onFocus:P,onClick:P},o,{className:(0,s.Z)("tabs__item",c,null==o?void 0:o.className,{"tabs__item--active":w===t})}),null!=n?n:t)}))),u?(0,r.cloneElement)(b.filter((function(e){return e.props.value===w}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},b.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==w})}))))}function i(e){var t=(0,o.Z)();return r.createElement(u,(0,a.Z)({key:String(t)},e))}},9680:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return u},contentTitle:function(){return i},metadata:function(){return p},assets:function(){return d},toc:function(){return m},default:function(){return b}});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),l=n(9877),s=n(8215),c=["components"],u={sidebar_position:6,title:"Tokens"},i=void 0,p={unversionedId:"Bitlayer Scan APIs/Tokens",id:"Bitlayer Scan APIs/Tokens",title:"Tokens",description:"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress",source:"@site/docs/Bitlayer Scan APIs/Tokens.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Tokens",permalink:"/docs/Bitlayer Scan APIs/Tokens",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6,title:"Tokens"},sidebar:"docs",previous:{title:"Logs",permalink:"/docs/Bitlayer Scan APIs/Logs"},next:{title:"Developer Resources",permalink:"/docs/category/developer-resources"}},d={},m=[{value:"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress",id:"get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress",level:2},{value:"Get ERC20-Token Account Balance for TokenContractAddress",id:"get-erc20-token-account-balance-for-tokencontractaddress",level:2}],f={toc:m};function b(e){var t=e.components,n=(0,r.Z)(e,c);return(0,o.kt)("wrapper",(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress"},"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress"),(0,o.kt)("p",null,"Returns the current amount of an ERC-20 token in circulation."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=token\n&action=tokensupply\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\n")),(0,o.kt)("p",null,"Try this endpoint in your ",(0,o.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=token&action=tokensupply&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2"},"browser")," \ud83d\udd17"),(0,o.kt)(l.Z,{mdxType:"Tabs"},(0,o.kt)(s.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,o.kt)("th",{parentName:"tr",align:null},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"contractaddress"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"contract address")," of the ERC-20 token"))))),(0,o.kt)(s.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,o.kt)("p",null," Sample Response"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": "20000000000"\n}\n')),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"The result is returned in the token's smallest decimal representation")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"}," Eg. a token with a balance of 215.241526476136819398 and 18 decimal places will be returned as 215241526476136819398"))))),(0,o.kt)("h2",{id:"get-erc20-token-account-balance-for-tokencontractaddress"},"Get ERC20-Token Account Balance for TokenContractAddress"),(0,o.kt)("p",null,"Returns the current balance of an ERC-20 token of an address."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=account\n&action=tokenbalance\n&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\n&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\n&tag=latest\n")),(0,o.kt)("p",null,"Try this endpoint in your ",(0,o.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=account&action=tokenbalance&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec&tag=latest"},"browser")," \ud83d\udd17"),(0,o.kt)(l.Z,{mdxType:"Tabs"},(0,o.kt)(s.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,o.kt)("th",{parentName:"tr",align:null},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"contractaddress"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"contract address")," of the ERC-20 token")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"address"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check for token balance"))))),(0,o.kt)(s.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,o.kt)("p",null," Sample Response"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": 0\n}\n')))))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/814f3328.d37ce2d2.js b/assets/js/814f3328.d37ce2d2.js deleted file mode 100644 index 138ce81e..00000000 --- a/assets/js/814f3328.d37ce2d2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Bitlayer: Amplifying Bitcoin","permalink":"/blog/Bitlayer: Amplifying Bitcoin"}]}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.eed0bcc8.js b/assets/js/814f3328.eed0bcc8.js new file mode 100644 index 00000000..593b0212 --- /dev/null +++ b/assets/js/814f3328.eed0bcc8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Bitlayer: Amplifying Bitcoin","permalink":"/blog/Bitlayer: Amplifying Bitcoin","unlisted":false}]}')}}]); \ No newline at end of file diff --git a/assets/js/8498.0b53c050.js b/assets/js/8498.0b53c050.js new file mode 100644 index 00000000..a226f92d --- /dev/null +++ b/assets/js/8498.0b53c050.js @@ -0,0 +1 @@ +(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8498],{7293:(e,t,n)=>{"use strict";n.d(t,{A:()=>L});var s=n(6540),o=n(4848);function a(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:a.length>0?(0,o.jsx)(o.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}var c=n(8215),r=n(1312),i=n(7559);const l={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function d(e){let{type:t,className:n,children:s}=e;return(0,o.jsx)("div",{className:(0,c.A)(i.G.common.admonition,i.G.common.admonitionType(t),l.admonition,n),children:s})}function u(e){let{icon:t,title:n}=e;return(0,o.jsxs)("div",{className:l.admonitionHeading,children:[(0,o.jsx)("span",{className:l.admonitionIcon,children:t}),n]})}function m(e){let{children:t}=e;return t?(0,o.jsx)("div",{className:l.admonitionContent,children:t}):null}function h(e){const{type:t,icon:n,title:s,children:a,className:c}=e;return(0,o.jsxs)(d,{type:t,className:c,children:[s||n?(0,o.jsx)(u,{title:s,icon:n}):null,(0,o.jsx)(m,{children:a})]})}function p(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const f={icon:(0,o.jsx)(p,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function x(e){return(0,o.jsx)(h,{...f,...e,className:(0,c.A)("alert alert--secondary",e.className),children:e.children})}function b(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const j={icon:(0,o.jsx)(b,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function g(e){return(0,o.jsx)(h,{...j,...e,className:(0,c.A)("alert alert--success",e.className),children:e.children})}function v(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const y={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function N(e){return(0,o.jsx)(h,{...y,...e,className:(0,c.A)("alert alert--info",e.className),children:e.children})}function A(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const B={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function k(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const w={icon:(0,o.jsx)(k,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const C={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:x,tip:g,info:N,warning:function(e){return(0,o.jsx)(h,{...B,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(h,{...w,...e,className:(0,c.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(x,{title:"secondary",...e}),important:e=>(0,o.jsx)(N,{title:"important",...e}),success:e=>(0,o.jsx)(g,{title:"success",...e}),caution:function(e){return(0,o.jsx)(h,{...C,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})}}};function L(e){const t=a(e),n=(s=t.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,o.jsx)(n,{...t})}},4336:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});n(6540);var s=n(8215),o=n(1312),a=n(7559),c=n(8774);const r={iconEdit:"iconEdit_Z9Sw"};var i=n(4848);function l(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(r.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d(e){let{editUrl:t}=e;return(0,i.jsxs)(c.A,{to:t,className:a.G.common.editThisPage,children:[(0,i.jsx)(l,{}),(0,i.jsx)(o.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=n(6266);function m(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=(0,u.i)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(o.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function h(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(o.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function p(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,i.jsx)(o.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(m,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(h,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const f={lastUpdated:"lastUpdated_JAkA"};function x(e){let{className:t,editUrl:n,lastUpdatedAt:o,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,s.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(d,{editUrl:n})}),(0,i.jsx)("div",{className:(0,s.A)("col",f.lastUpdated),children:(o||a)&&(0,i.jsx)(p,{lastUpdatedAt:o,lastUpdatedBy:a})})]})}},8509:(e,t,n)=>{"use strict";n.d(t,{A:()=>ie});var s=n(6540),o=n(8453),a=n(5260),c=n(2303),r=n(8215),i=n(5293),l=n(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:t}=(0,i.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var u=n(7559),m=n(8426),h=n.n(m);const p=/title=(?["'])(?.*?)\1/,f=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},b={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},j=Object.keys(x);function g(e,t){const n=e.map((e=>{const{start:n,end:s}=b[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:o,metastring:a}=t;if(a&&f.test(a)){const e=a.match(f).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],t);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],t);case"html":return g(["js","jsBlock","html"],t);case"python":case"py":case"bash":return g(["bash"],t);case"markdown":case"md":return g(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return g(["tex"],t);case"lua":case"haskell":case"sql":return g(["lua"],t);case"wasm":return g(["wasm"],t);case"vb":case"vba":case"visual-basic":return g(["vb","rem"],t);case"vbnet":return g(["vbnet","rem"],t);case"batch":return g(["rem"],t);case"basic":return g(["rem","f90"],t);case"fsharp":return g(["js","ml"],t);case"ocaml":case"sml":return g(["ml"],t);case"fortran":return g(["f90"],t);case"cobol":return g(["cobol"],t);default:return g(j,t)}}(s,o),r=n.split("\n"),i=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<r.length;){const e=r[h].match(c);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));l[t]?i[l[t]].range+=`${h},`:d[t]?i[d[t]].start=h:u[t]&&(i[u[t]].range+=`${i[u[t]].start}-${h-1},`),r.splice(h,1)}n=r.join("\n");const m={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};var N=n(4848);function A(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,o]=e;const a=t[s];a&&"string"==typeof o&&(n[a]=o)})),n}(d());return(0,N.jsx)(t,{...n,style:s,className:(0,r.A)(n.className,y.codeBlockContainer,u.G.common.codeBlock)})}const B={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function k(e){let{children:t,className:n}=e;return(0,N.jsx)(A,{as:"pre",tabIndex:0,className:(0,r.A)(B.codeBlockStandalone,"thin-scrollbar",n),children:(0,N.jsx)("code",{className:B.codeBlockLines,children:t})})}var w=n(9532);const C={attributes:!0,characterData:!0,childList:!0,subtree:!0};function E(e,t){const[n,o]=(0,s.useState)(),a=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=C);const o=(0,w._q)(t),a=(0,w.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,a),()=>t.disconnect()}),[e,o,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var L=n(4876);const T={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function _(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:o,getTokenProps:a}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=o({line:t,className:(0,r.A)(n,s&&T.codeLine)}),i=t.map(((e,t)=>(0,N.jsx)("span",{...a({token:e})},t)));return(0,N.jsxs)("span",{...c,children:[s?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("span",{className:T.codeLineNumber}),(0,N.jsx)("span",{className:T.codeLineContent,children:i})]}):i,(0,N.jsx)("br",{})]})}var S=n(1312);function U(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function M(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const z={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function I(e){let{code:t,className:n}=e;const[o,a]=(0,s.useState)(!1),c=(0,s.useRef)(void 0),i=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),o=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let r=!1;try{r=document.execCommand("copy")}catch{}s.remove(),c&&(a.removeAllRanges(),a.addRange(c)),o&&o.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),(0,N.jsx)("button",{type:"button","aria-label":o?(0,S.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,S.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,S.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,r.A)("clean-btn",n,z.copyButton,o&&z.copyButtonCopied),onClick:i,children:(0,N.jsxs)("span",{className:z.copyButtonIcons,"aria-hidden":"true",children:[(0,N.jsx)(U,{className:z.copyButtonIcon}),(0,N.jsx)(M,{className:z.copyButtonSuccessIcon})]})})}function H(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const R={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function V(e){let{className:t,onClick:n,isEnabled:s}=e;const o=(0,S.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,N.jsx)("button",{type:"button",onClick:n,className:(0,r.A)("clean-btn",t,s&&R.wordWrapButtonEnabled),"aria-label":o,title:o,children:(0,N.jsx)(H,{className:R.wordWrapButtonIcon,"aria-hidden":"true"})})}function $(e){let{children:t,className:n="",metastring:o,title:a,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.p)(),h=function(e){return e?.toLowerCase()}(i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u),f=d(),x=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),a=(0,s.useRef)(null),c=(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]),r=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");o(n)}),[a]);return E(a,r),(0,s.useEffect)((()=>{r()}),[e,r]),(0,s.useEffect)((()=>(window.addEventListener("resize",r,{passive:!0}),()=>{window.removeEventListener("resize",r)})),[r]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),b=function(e){return e?.match(p)?.groups.title??""}(o)||a,{lineClassNames:j,code:g}=v(t,{metastring:o,language:h,magicComments:m}),y=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return(0,N.jsxs)(A,{as:"div",className:(0,r.A)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`),children:[b&&(0,N.jsx)("div",{className:B.codeBlockTitle,children:b}),(0,N.jsxs)("div",{className:B.codeBlockContent,children:[(0,N.jsx)(L.f4,{theme:f,code:g,language:h??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:o,getTokenProps:a}=e;return(0,N.jsx)("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,r.A)(t,B.codeBlock,"thin-scrollbar"),style:n,children:(0,N.jsx)("code",{className:(0,r.A)(B.codeBlockLines,y&&B.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,N.jsx)(_,{line:e,getLineProps:o,getTokenProps:a,classNames:j[t],showLineNumbers:y},t)))})})}}),(0,N.jsxs)("div",{className:B.buttonGroup,children:[(x.isEnabled||x.isCodeScrollable)&&(0,N.jsx)(V,{className:B.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),(0,N.jsx)(I,{className:B.codeButton,code:g})]})]})]})}function W(e){let{children:t,...n}=e;const o=(0,c.A)(),a=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),r="string"==typeof a?$:k;return(0,N.jsx)(r,{...n,children:a},String(o))}function D(e){return(0,N.jsx)("code",{...e})}var P=n(8774);var q=n(5066),G=n(3427),O=n(1422);const F={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function Z(e){return!!e&&("SUMMARY"===e.tagName||Z(e.parentElement))}function J(e,t){return!!e&&(e===t||J(e.parentElement,t))}function Y(e){let{summary:t,children:n,...o}=e;(0,G.A)().collectAnchor(o.id);const a=(0,c.A)(),r=(0,s.useRef)(null),{collapsed:i,setCollapsed:l}=(0,O.u)({initialState:!o.open}),[d,u]=(0,s.useState)(o.open),m=s.isValidElement(t)?t:(0,N.jsx)("summary",{children:t??"Details"});return(0,N.jsxs)("details",{...o,ref:r,open:d,"data-collapsed":i,className:(0,q.A)(F.details,a&&F.isBrowser,o.className),onMouseDown:e=>{Z(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Z(t)&&J(t,r.current)&&(e.preventDefault(),i?(l(!1),u(!0)):l(!0))},children:[m,(0,N.jsx)(O.N,{lazy:!1,collapsed:i,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{l(e),u(!e)},children:(0,N.jsx)("div",{className:F.collapsibleContent,children:n})})]})}const K={details:"details_b_Ee"},Q="alert alert--info";function X(e){let{...t}=e;return(0,N.jsx)(Y,{...t,className:(0,r.A)(Q,K.details,t.className)})}function ee(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,N.jsx)(N.Fragment,{children:t.filter((e=>e!==n))});return(0,N.jsx)(X,{...e,summary:n,children:o})}var te=n(1107);function ne(e){return(0,N.jsx)(te.A,{...e})}const se={containsTaskList:"containsTaskList_mC6p"};function oe(e){if(void 0!==e)return(0,r.A)(e,e?.includes("contains-task-list")&&se.containsTaskList)}const ae={img:"img_ev3q"};var ce=n(7293);const re={Head:a.A,details:ee,Details:ee,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,N.jsx)(D,{...e}):(0,N.jsx)(W,{...e})},a:function(e){return(0,N.jsx)(P.A,{...e})},pre:function(e){return(0,N.jsx)(N.Fragment,{children:e.children})},ul:function(e){return(0,N.jsx)("ul",{...e,className:oe(e.className)})},li:function(e){return(0,G.A)().collectAnchor(e.id),(0,N.jsx)("li",{...e})},img:function(e){return(0,N.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,r.A)(t,ae.img))});var t},h1:e=>(0,N.jsx)(ne,{as:"h1",...e}),h2:e=>(0,N.jsx)(ne,{as:"h2",...e}),h3:e=>(0,N.jsx)(ne,{as:"h3",...e}),h4:e=>(0,N.jsx)(ne,{as:"h4",...e}),h5:e=>(0,N.jsx)(ne,{as:"h5",...e}),h6:e=>(0,N.jsx)(ne,{as:"h6",...e}),admonition:ce.A,mermaid:()=>null};function ie(e){let{children:t}=e;return(0,N.jsx)(o.x,{components:re,children:t})}},6266:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var s=n(4586);function o(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,s.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},8426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,a]=t;if(s&&a){s=parseInt(s),a=parseInt(a);const e=s<a?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(a+=e);for(let t=s;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>c,x:()=>r});var s=n(6540);const o={},a=s.createContext(o);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8b04bfe9.9ee5d5e4.js b/assets/js/8b04bfe9.9ee5d5e4.js new file mode 100644 index 00000000..9455aa0e --- /dev/null +++ b/assets/js/8b04bfe9.9ee5d5e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3079],{181:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Developer Resources","description":"This guide provides an overview of the tools and resources available for Bitlayer development.","slug":"/category/developer-resources","permalink":"/docs/category/developer-resources","sidebar":"docs","navigation":{"previous":{"title":"Tokens","permalink":"/docs/Bitlayer Scan APIs/Tokens"},"next":{"title":"Supported Wallets for Bitlayer","permalink":"/docs/DeveloperResources/Wallets"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/91907527.1517a664.js b/assets/js/91907527.1517a664.js deleted file mode 100644 index 7fe94a3c..00000000 --- a/assets/js/91907527.1517a664.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3377],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function 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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},p={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,i=e.mdxType,a=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),f=l(r),d=i,y=f["".concat(s,".").concat(d)]||f[d]||p[d]||a;return r?n.createElement(y,o(o({ref:t},u),{},{components:r})):n.createElement(y,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var l=2;l<a;l++)o[l]=r[l];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},8149:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return c},contentTitle:function(){return s},metadata:function(){return l},assets:function(){return u},toc:function(){return p},default:function(){return d}});var n=r(7462),i=r(3366),a=(r(7294),r(3905)),o=["components"],c={sidebar_position:2},s="Layered Virtual Machine (LVM)",l={unversionedId:"BitlayerArchitecture/LVM",id:"BitlayerArchitecture/LVM",title:"Layered Virtual Machine (LVM)",description:"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.",source:"@site/docs/BitlayerArchitecture/LVM.md",sourceDirName:"BitlayerArchitecture",slug:"/BitlayerArchitecture/LVM",permalink:"/docs/BitlayerArchitecture/LVM",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Overview of Bitlayer's Design",permalink:"/docs/BitlayerArchitecture/BitlayerDesign"},next:{title:"Bitlayer's Transaction Lifecycle",permalink:"/docs/BitlayerArchitecture/TransactionLifecycle"}},u={},p=[],f={toc:p};function d(e){var t=e.components,c=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,n.Z)({},f,c,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"layered-virtual-machine-lvm"},"Layered Virtual Machine (LVM)"),(0,a.kt)("p",null,"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility."),(0,a.kt)("p",null,(0,a.kt)("img",{loading:"lazy",alt:"Layered Virtual Machine",src:r(3588).Z,width:"3616",height:"1864"})),(0,a.kt)("p",null,"Supporting multiple frontend smart contract types can easily attract developers from various blockchain ecosystems. For instance, EVM is a widely used smart contract platform with its own bytecode and execution environment. By integrating support for EVM within the LVM framework, developers can leverage existing EVM-based smart contracts seamlessly while also benefiting from enhanced execution capabilities provided by the layered architecture."),(0,a.kt)("p",null,"On the backend side, supporting various zero-knowledge proof generators provides more optimization possibilities for the disputing process without compromising existing functionalities. In the future, when more succinct and efficient zero-knowledge proof systems emerge, Bitlayer's flexibility will allow for quick adaptation essential for keeping pace with evolving blockchain standards, emerging technologies, and changing user requirements."))}d.isMDXComponent=!0},3588:function(e,t,r){t.Z=r.p+"assets/images/LVM-aa3b311d90cc3d943e48dd1a418aa87b.png"}}]); \ No newline at end of file diff --git a/assets/js/91907527.151a4edc.js b/assets/js/91907527.151a4edc.js new file mode 100644 index 00000000..4cf44108 --- /dev/null +++ b/assets/js/91907527.151a4edc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5599],{2597:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var n=i(4848),r=i(8453);const a={sidebar_position:2},s="Layered Virtual Machine (LVM)",o={id:"BitlayerArchitecture/LVM",title:"Layered Virtual Machine (LVM)",description:"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.",source:"@site/docs/BitlayerArchitecture/LVM.md",sourceDirName:"BitlayerArchitecture",slug:"/BitlayerArchitecture/LVM",permalink:"/docs/BitlayerArchitecture/LVM",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Overview of Bitlayer's Design",permalink:"/docs/BitlayerArchitecture/BitlayerDesign"},next:{title:"Bitlayer's Transaction Lifecycle",permalink:"/docs/BitlayerArchitecture/TransactionLifecycle"}},c={},l=[];function d(e){const t={h1:"h1",img:"img",p:"p",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"layered-virtual-machine-lvm",children:"Layered Virtual Machine (LVM)"}),"\n",(0,n.jsx)(t.p,{children:"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Layered Virtual Machine",src:i(6140).A+"",width:"3616",height:"1864"})}),"\n",(0,n.jsx)(t.p,{children:"Supporting multiple frontend smart contract types can easily attract developers from various blockchain ecosystems. For instance, EVM is a widely used smart contract platform with its own bytecode and execution environment. By integrating support for EVM within the LVM framework, developers can leverage existing EVM-based smart contracts seamlessly while also benefiting from enhanced execution capabilities provided by the layered architecture."}),"\n",(0,n.jsx)(t.p,{children:"On the backend side, supporting various zero-knowledge proof generators provides more optimization possibilities for the disputing process without compromising existing functionalities. In the future, when more succinct and efficient zero-knowledge proof systems emerge, Bitlayer's flexibility will allow for quick adaptation essential for keeping pace with evolving blockchain standards, emerging technologies, and changing user requirements."})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},6140:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/LVM-aa3b311d90cc3d943e48dd1a418aa87b.png"},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>o});var n=i(6540);const r={},a=n.createContext(r);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/928ec736.3b0d8bb9.js b/assets/js/928ec736.3b0d8bb9.js deleted file mode 100644 index bd1cc00d..00000000 --- a/assets/js/928ec736.3b0d8bb9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[623],{3905:function(t,e,a){a.d(e,{Zo:function(){return c},kt:function(){return u}});var n=a(7294);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 l(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<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),m=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},c=function(t){var e=m(t.components);return n.createElement(p.Provider,{value:e},t.children)},s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=m(a),u=r,f=d["".concat(p,".").concat(u)]||d[u]||s[u]||l;return a?n.createElement(f,o(o({ref:e},c),{},{components:a})):n.createElement(f,o({ref:e},c))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i.mdxType="string"==typeof t?t:r,o[1]=i;for(var m=2;m<l;m++)o[m]=a[m];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},4643:function(t,e,a){a.r(e),a.d(e,{frontMatter:function(){return i},contentTitle:function(){return p},metadata:function(){return m},assets:function(){return c},toc:function(){return s},default:function(){return u}});var n=a(7462),r=a(3366),l=(a(7294),a(3905)),o=["components"],i={},p="DefiLlama TVL Integration",m={unversionedId:"FAQs/Defillama TVL integration",id:"FAQs/Defillama TVL integration",title:"DefiLlama TVL Integration",description:"Introduction",source:"@site/docs/FAQs/Defillama TVL integration.md",sourceDirName:"FAQs",slug:"/FAQs/Defillama TVL integration",permalink:"/docs/FAQs/Defillama TVL integration",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"wBTC",permalink:"/docs/FAQs/WBTC"}},c={},s=[{value:"Introduction",id:"introduction",level:2},{value:"Step 1: Add adapter locally",id:"step-1-add-adapter-locally",level:2},{value:"Step 2: Submit PR",id:"step-2-submit-pr",level:2},{value:"Reference",id:"reference",level:2},{value:"Projects built on bitlayer",id:"projects-built-on-bitlayer",level:2}],d={toc:s};function u(t){var e=t.components,a=(0,r.Z)(t,o);return(0,l.kt)("wrapper",(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"defillama-tvl-integration"},"DefiLlama TVL Integration"),(0,l.kt)("h2",{id:"introduction"},"Introduction"),(0,l.kt)("p",null,"There are two steps required to integrate into the defillama system."),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Add adapter to defillama"),(0,l.kt)("li",{parentName:"ol"},"Submit PR like: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"},"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"))),(0,l.kt)("h2",{id:"step-1-add-adapter-locally"},"Step 1: Add adapter locally"),(0,l.kt)("p",null,"The following steps need to be completed: "),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Fork repository: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/DefiLlama/DefiLlama-Adapters"},"https://github.com/DefiLlama/DefiLlama-Adapters")),(0,l.kt)("li",{parentName:"ol"},"Create a new project adapter path under projects, for example: projects/","[%PROJECT_TAG%]","/index.js")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-javascript"},"const { sumTokens2, } = require('../helper/unwrapLPs')\n\nasync function tvl(api) {\n \n return sumTokens2({ owners: [\n '[%CONTRACT_ADDR%]',\n ], tokens: ['[%TOKEN_ADDR_1%]', '[%TOKEN_ADDR_2%]'], api, }) //wbtc and usdt\n}\n\nmodule.exports = {\n btr: { tvl, }\n}\n\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[%PROJECT_TAG%]"," is the project name"),(0,l.kt)("li",{parentName:"ul"},"[%CONTRACT_ADDR%]"," is the contract address of the project"),(0,l.kt)("li",{parentName:"ul"},"[%TOKNE_ADDR_1%]","\u3001","[%TOKEN_ADDR_2%]"," are the currency pair address that needs to be calculated"),(0,l.kt)("li",{parentName:"ul"},"For future references, if you add another token you can just add it here, you can do like this ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files"},"https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files"))),(0,l.kt)("h2",{id:"step-2-submit-pr"},"Step 2: Submit PR"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Submit PR, for example: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"},"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"))),(0,l.kt)("h2",{id:"reference"},"Reference"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://docs.llama.fi/list-your-project/submit-a-project"},"https://docs.llama.fi/list-your-project/submit-a-project"))),(0,l.kt)("h2",{id:"projects-built-on-bitlayer"},"Projects built on bitlayer"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Category"),(0,l.kt)("th",{parentName:"tr",align:null},"Website"),(0,l.kt)("th",{parentName:"tr",align:null},"Defillama"),(0,l.kt)("th",{parentName:"tr",align:null},"Project Path"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"bitsmiley"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/CDP"},"CDP")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.bitsmiley.io/app/alphanet"},"https://www.bitsmiley.io/app/alphanet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/bitsmiley#information"},"https://defillama.com/protocol/bitsmiley#information")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/bitsmiley-io")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"macaron"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/Dexes"},"Dexes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.macaron.xyz/#/swap?lang=en"},"https://www.macaron.xyz/#/swap?lang=en")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/macaron"},"https://defillama.com/protocol/macaron")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/macaron-xyz")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"avalon"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/Lending"},"Lending")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://app.avalonfinance.xyz/"},"https://app.avalonfinance.xyz/")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/avalon-finance#information"},"https://defillama.com/protocol/avalon-finance#information")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/avalon-finance")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"bitcow"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/Dexes"},"Dexes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://bitcow.xyz/"},"https://bitcow.xyz/")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/bitcow#information"},"https://defillama.com/protocol/bitcow#information")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/bitcow")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"enzo"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/Lending"},"Lending")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://app.enzo.finance/"},"https://app.enzo.finance/")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/enzo#information"},"https://defillama.com/protocol/enzo#information")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/enzo")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"trustin"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocols/Lending"},"Lending")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.trustin.com/"},"https://www.trustin.com/")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=false"},"https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=false")),(0,l.kt)("td",{parentName:"tr",align:null},"projects/trustin")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/928ec736.f4e7f224.js b/assets/js/928ec736.f4e7f224.js new file mode 100644 index 00000000..22975f8c --- /dev/null +++ b/assets/js/928ec736.f4e7f224.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3014],{6621:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var i=n(4848),r=n(8453);const a={},l="DefiLlama TVL Integration",s={id:"FAQs/Defillama TVL integration",title:"DefiLlama TVL Integration",description:"Introduction",source:"@site/docs/FAQs/Defillama TVL integration.md",sourceDirName:"FAQs",slug:"/FAQs/Defillama TVL integration",permalink:"/docs/FAQs/Defillama TVL integration",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"wBTC",permalink:"/docs/FAQs/WBTC"}},o={},c=[{value:"Introduction",id:"introduction",level:2},{value:"Step 1: Add adapter locally",id:"step-1-add-adapter-locally",level:2},{value:"Step 2: Submit PR",id:"step-2-submit-pr",level:2},{value:"Reference",id:"reference",level:2},{value:"Projects built on bitlayer",id:"projects-built-on-bitlayer",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"defillama-tvl-integration",children:"DefiLlama TVL Integration"}),"\n",(0,i.jsx)(t.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(t.p,{children:"There are two steps required to integrate into the defillama system."}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"Add adapter to defillama"}),"\n",(0,i.jsxs)(t.li,{children:["Submit PR like: ",(0,i.jsx)(t.a,{href:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js",children:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"step-1-add-adapter-locally",children:"Step 1: Add adapter locally"}),"\n",(0,i.jsx)(t.p,{children:"The following steps need to be completed:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Fork repository: ",(0,i.jsx)(t.a,{href:"https://github.com/DefiLlama/DefiLlama-Adapters",children:"https://github.com/DefiLlama/DefiLlama-Adapters"})]}),"\n",(0,i.jsx)(t.li,{children:"Create a new project adapter path under projects, for example: projects/[%PROJECT_TAG%]/index.js"}),"\n"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-javascript",children:"const { sumTokens2, } = require('../helper/unwrapLPs')\n\nasync function tvl(api) {\n \n return sumTokens2({ owners: [\n '[%CONTRACT_ADDR%]',\n ], tokens: ['[%TOKEN_ADDR_1%]', '[%TOKEN_ADDR_2%]'], api, }) //wbtc and usdt\n}\n\nmodule.exports = {\n btr: { tvl, }\n}\n\n"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"[%PROJECT_TAG%] is the project name"}),"\n",(0,i.jsx)(t.li,{children:"[%CONTRACT_ADDR%] is the contract address of the project"}),"\n",(0,i.jsx)(t.li,{children:"[%TOKNE_ADDR_1%]\u3001[%TOKEN_ADDR_2%] are the currency pair address that needs to be calculated"}),"\n",(0,i.jsxs)(t.li,{children:["For future references, if you add another token you can just add it here, you can do like this ",(0,i.jsx)(t.a,{href:"https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files",children:"https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"step-2-submit-pr",children:"Step 2: Submit PR"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Submit PR, for example: ",(0,i.jsx)(t.a,{href:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js",children:"https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"reference",children:"Reference"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://docs.llama.fi/list-your-project/submit-a-project",children:"https://docs.llama.fi/list-your-project/submit-a-project"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"projects-built-on-bitlayer",children:"Projects built on bitlayer"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Category"}),(0,i.jsx)(t.th,{children:"Website"}),(0,i.jsx)(t.th,{children:"Defillama"}),(0,i.jsx)(t.th,{children:"Project Path"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"bitsmiley"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/CDP",children:"CDP"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://www.bitsmiley.io/app/alphanet",children:"https://www.bitsmiley.io/app/alphanet"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/bitsmiley#information",children:"https://defillama.com/protocol/bitsmiley#information"})}),(0,i.jsx)(t.td,{children:"projects/bitsmiley-io"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"macaron"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/Dexes",children:"Dexes"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://www.macaron.xyz/#/swap?lang=en",children:"https://www.macaron.xyz/#/swap?lang=en"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/macaron",children:"https://defillama.com/protocol/macaron"})}),(0,i.jsx)(t.td,{children:"projects/macaron-xyz"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"avalon"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/Lending",children:"Lending"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://app.avalonfinance.xyz/",children:"https://app.avalonfinance.xyz/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/avalon-finance#information",children:"https://defillama.com/protocol/avalon-finance#information"})}),(0,i.jsx)(t.td,{children:"projects/avalon-finance"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"bitcow"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/Dexes",children:"Dexes"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://bitcow.xyz/",children:"https://bitcow.xyz/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/bitcow#information",children:"https://defillama.com/protocol/bitcow#information"})}),(0,i.jsx)(t.td,{children:"projects/bitcow"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"enzo"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/Lending",children:"Lending"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://app.enzo.finance/",children:"https://app.enzo.finance/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/enzo#information",children:"https://defillama.com/protocol/enzo#information"})}),(0,i.jsx)(t.td,{children:"projects/enzo"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"trustin"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocols/Lending",children:"Lending"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://www.trustin.com/",children:"https://www.trustin.com/"})}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=false",children:"https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=false"})}),(0,i.jsx)(t.td,{children:"projects/trustin"})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>s});var i=n(6540);const r={},a=i.createContext(r);function l(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.fb88e009.js b/assets/js/935f2afb.fb88e009.js deleted file mode 100644 index 933a4c38..00000000 --- a/assets/js/935f2afb.fb88e009.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[53],{1109:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Welcome","href":"/docs/Introduction/","docId":"Introduction/Introduction"},{"type":"link","label":"About Bitlayer","href":"/docs/Introduction/AboutBitlayer","docId":"Introduction/AboutBitlayer"},{"type":"link","label":"Bitlayer vs. Ethereum","href":"/docs/Introduction/BitlayerVsEth","docId":"Introduction/BitlayerVsEth"},{"type":"link","label":"Technical Architecture","href":"/docs/Introduction/TechnicalArchitecture","docId":"Introduction/TechnicalArchitecture"},{"type":"link","label":"Roadmap","href":"/docs/Introduction/Roadmap","docId":"Introduction/Roadmap"},{"type":"link","label":"About BitVM","href":"/docs/Introduction/BitVM","docId":"Introduction/BitVM"}],"href":"/docs/category/introduction"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Quick Start Guide","href":"/docs/Build/QuickStart","docId":"Build/QuickStart"},{"type":"link","label":"Compile, Run and Deploy","href":"/docs/Build/Compile and Run","docId":"Build/Compile and Run"}],"href":"/docs/category/getting-started"},{"type":"category","label":"Bitlayer Network","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Gas","href":"/docs/BitlayerNetwork/AboutGas","docId":"BitlayerNetwork/AboutGas"},{"type":"link","label":"Networks and RPC Enpoints","href":"/docs/BitlayerNetwork/Networks","docId":"BitlayerNetwork/Networks"},{"type":"link","label":"Bridges","href":"/docs/BitlayerNetwork/Bridges","docId":"BitlayerNetwork/Bridges"},{"type":"link","label":"JSON-RPC","href":"/docs/BitlayerNetwork/Json-RPC","docId":"BitlayerNetwork/Json-RPC"},{"type":"link","label":"Contracts","href":"/docs/BitlayerNetwork/Contracts","docId":"BitlayerNetwork/Contracts"},{"type":"link","label":"Peg Tokens","href":"/docs/BitlayerNetwork/PegTokens","docId":"BitlayerNetwork/PegTokens"}],"href":"/docs/category/bitlayer-network"},{"type":"category","label":"Bitlayer Architecture","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Overview of Bitlayer\'s Design","href":"/docs/BitlayerArchitecture/BitlayerDesign","docId":"BitlayerArchitecture/BitlayerDesign"},{"type":"link","label":"Layered Virtual Machine (LVM)","href":"/docs/BitlayerArchitecture/LVM","docId":"BitlayerArchitecture/LVM"},{"type":"link","label":"Bitlayer\'s Transaction Lifecycle","href":"/docs/BitlayerArchitecture/TransactionLifecycle","docId":"BitlayerArchitecture/TransactionLifecycle"}],"href":"/docs/category/bitlayer-architecture"},{"type":"category","label":"Bitlayer Scan APIs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Accounts","href":"/docs/Bitlayer Scan APIs/Accounts","docId":"Bitlayer Scan APIs/Accounts"},{"type":"link","label":"Contracts","href":"/docs/Bitlayer Scan APIs/Contracts","docId":"Bitlayer Scan APIs/Contracts"},{"type":"link","label":"Transactions","href":"/docs/Bitlayer Scan APIs/Transactions","docId":"Bitlayer Scan APIs/Transactions"},{"type":"link","label":"Blocks","href":"/docs/Bitlayer Scan APIs/Blocks","docId":"Bitlayer Scan APIs/Blocks"},{"type":"link","label":"Logs","href":"/docs/Bitlayer Scan APIs/Logs","docId":"Bitlayer Scan APIs/Logs"},{"type":"link","label":"Tokens","href":"/docs/Bitlayer Scan APIs/Tokens","docId":"Bitlayer Scan APIs/Tokens"}],"href":"/docs/category/bitlayer-scan-apis"},{"type":"category","label":"Developer Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Supported Wallets for Bitlayer","href":"/docs/DeveloperResources/Wallets","docId":"DeveloperResources/Wallets"},{"type":"link","label":"Indexing-The-Graph","href":"/docs/DeveloperResources/TheGraph","docId":"DeveloperResources/TheGraph"},{"type":"link","label":"Indexing-3rd-Party","href":"/docs/DeveloperResources/Subgraph","docId":"DeveloperResources/Subgraph"},{"type":"link","label":"Faucets","href":"/docs/DeveloperResources/Faucets","docId":"DeveloperResources/Faucets"},{"type":"link","label":"Block Explorers","href":"/docs/DeveloperResources/Block Explorers","docId":"DeveloperResources/Block Explorers"},{"type":"link","label":"BTC Connect (Account Abstraction)","href":"/docs/DeveloperResources/BTC Connect","docId":"DeveloperResources/BTC Connect"}],"href":"/docs/category/developer-resources"},{"type":"category","label":"FAQs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Frequently Asked Questions","href":"/docs/FAQs/Frequently asked questions","docId":"FAQs/Frequently asked questions"},{"type":"link","label":"Contact Details","href":"/docs/FAQs/Contact Details","docId":"FAQs/Contact Details"},{"type":"link","label":"wBTC","href":"/docs/FAQs/WBTC","docId":"FAQs/WBTC"},{"type":"link","label":"DefiLlama TVL Integration","href":"/docs/FAQs/Defillama TVL integration","docId":"FAQs/Defillama TVL integration"}],"href":"/docs/category/faqs"}]},"docs":{"Bitlayer Scan APIs/Accounts":{"id":"Bitlayer Scan APIs/Accounts","title":"Accounts","description":"Endpoint URLs","sidebar":"docs"},"Bitlayer Scan APIs/Blocks":{"id":"Bitlayer Scan APIs/Blocks","title":"Blocks","description":"Get Block Rewards by BlockNo","sidebar":"docs"},"Bitlayer Scan APIs/Contracts":{"id":"Bitlayer Scan APIs/Contracts","title":"Contracts","description":"Verify the contract through hardhat verify","sidebar":"docs"},"Bitlayer Scan APIs/Logs":{"id":"Bitlayer Scan APIs/Logs","title":"Logs","description":"Get Event Logs by Address","sidebar":"docs"},"Bitlayer Scan APIs/Tokens":{"id":"Bitlayer Scan APIs/Tokens","title":"Tokens","description":"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress","sidebar":"docs"},"Bitlayer Scan APIs/Transactions":{"id":"Bitlayer Scan APIs/Transactions","title":"Transactions","description":"Check Transaction Receipt Status","sidebar":"docs"},"BitlayerArchitecture/BitlayerDesign":{"id":"BitlayerArchitecture/BitlayerDesign","title":"Overview of Bitlayer\'s Design","description":"Technical White Paper","sidebar":"docs"},"BitlayerArchitecture/LVM":{"id":"BitlayerArchitecture/LVM","title":"Layered Virtual Machine (LVM)","description":"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.","sidebar":"docs"},"BitlayerArchitecture/TransactionLifecycle":{"id":"BitlayerArchitecture/TransactionLifecycle","title":"Bitlayer\'s Transaction Lifecycle","description":"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:","sidebar":"docs"},"BitlayerNetwork/AboutGas":{"id":"BitlayerNetwork/AboutGas","title":"About Gas","description":"Important: about gas price","sidebar":"docs"},"BitlayerNetwork/Bridges":{"id":"BitlayerNetwork/Bridges","title":"Bridges","description":"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.","sidebar":"docs"},"BitlayerNetwork/Contracts":{"id":"BitlayerNetwork/Contracts","title":"Contracts","description":"Contract Addresses (Mainnet)","sidebar":"docs"},"BitlayerNetwork/Json-RPC":{"id":"BitlayerNetwork/Json-RPC","title":"JSON-RPC","description":"Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.","sidebar":"docs"},"BitlayerNetwork/Networks":{"id":"BitlayerNetwork/Networks","title":"Networks and RPC Enpoints","description":"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.","sidebar":"docs"},"BitlayerNetwork/PegTokens":{"id":"BitlayerNetwork/PegTokens","title":"Peg Tokens","description":"Mainnet","sidebar":"docs"},"Build/Compile and Run":{"id":"Build/Compile and Run","title":"Compile, Run and Deploy","description":"This guide walks you through compiling and running Bitlayer.","sidebar":"docs"},"Build/QuickStart":{"id":"Build/QuickStart","title":"Quick Start Guide","description":"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.","sidebar":"docs"},"DeveloperResources/Block Explorers":{"id":"DeveloperResources/Block Explorers","title":"Block Explorers","description":"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.","sidebar":"docs"},"DeveloperResources/BTC Connect":{"id":"DeveloperResources/BTC Connect","title":"BTC Connect (Account Abstraction)","description":"Particle Network\'s BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.","sidebar":"docs"},"DeveloperResources/Faucets":{"id":"DeveloperResources/Faucets","title":"Faucets","description":"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.","sidebar":"docs"},"DeveloperResources/Subgraph":{"id":"DeveloperResources/Subgraph","title":"Indexing-3rd-Party","description":"What is a Subgraph?","sidebar":"docs"},"DeveloperResources/TheGraph":{"id":"DeveloperResources/TheGraph","title":"Indexing-The-Graph","description":"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.","sidebar":"docs"},"DeveloperResources/Wallets":{"id":"DeveloperResources/Wallets","title":"Supported Wallets for Bitlayer","description":"EVM-Compatible Wallets","sidebar":"docs"},"FAQs/Contact Details":{"id":"FAQs/Contact Details","title":"Contact Details","description":"Website\uff1ahttps://www.bitlayer.org/","sidebar":"docs"},"FAQs/Defillama TVL integration":{"id":"FAQs/Defillama TVL integration","title":"DefiLlama TVL Integration","description":"Introduction","sidebar":"docs"},"FAQs/Frequently asked questions":{"id":"FAQs/Frequently asked questions","title":"Frequently Asked Questions","description":"Q: When does Bitlayer launch?","sidebar":"docs"},"FAQs/WBTC":{"id":"FAQs/WBTC","title":"wBTC","description":"\u4e2d\u6587\u7248\u672c","sidebar":"docs"},"Introduction/AboutBitlayer":{"id":"Introduction/AboutBitlayer","title":"About Bitlayer","description":"For users and developers alike, the fundamental concept of Bitlayer is outlined below:","sidebar":"docs"},"Introduction/BitlayerVsEth":{"id":"Introduction/BitlayerVsEth","title":"Bitlayer vs. Ethereum","description":"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.","sidebar":"docs"},"Introduction/BitVM":{"id":"Introduction/BitVM","title":"About BitVM","description":"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.","sidebar":"docs"},"Introduction/Introduction":{"id":"Introduction/Introduction","title":"Welcome","description":"The first bitcoin security-equivalent Layer 2 based on BitVM","sidebar":"docs"},"Introduction/Roadmap":{"id":"Introduction/Roadmap","title":"Roadmap","description":"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.","sidebar":"docs"},"Introduction/TechnicalArchitecture":{"id":"Introduction/TechnicalArchitecture","title":"Technical Architecture","description":"Technical Architecture","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/94da5579.0845ba24.js b/assets/js/94da5579.0845ba24.js new file mode 100644 index 00000000..a6395239 --- /dev/null +++ b/assets/js/94da5579.0845ba24.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5675],{6513:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var n=i(4848),o=i(8453);const a={slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]},s="The Revival of a Bitcoin-Building Culture",r={permalink:"/blog/Bitlayer: Amplifying Bitcoin",source:"@site/blog/2024-03-01-first-blog-post.md",title:"Bitlayer: Amplifying Bitcoin",description:"Bitcoin is changing. Drastically.",date:"2024-03-01T00:00:00.000Z",tags:[{label:"Hello Bitlayer",permalink:"/blog/tags/hello-bitlayer"}],readingTime:9.435,hasTruncateMarker:!1,authors:[{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"}],frontMatter:{slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]},unlisted:!1},l={authorsImageUrls:[void 0]},c=[];function h(e){const t={p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Bitcoin is changing. Drastically."}),"\n",(0,n.jsx)(t.p,{children:"And the Bitcoin halving is less than 60 days away\u2026."}),"\n",(0,n.jsx)(t.p,{children:"A new \u201corder\u201d of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs \u2014 maybe a maxi\u2019s worst enemy \u2014 are coming to Bitcoin."}),"\n",(0,n.jsx)(t.p,{children:"But at this point, if you don\u2019t at least understand the trade-offs, then you\u2019re not listening."}),"\n",(0,n.jsx)(t.p,{children:"Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s\u2026these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology."}),"\n",(0,n.jsx)(t.p,{children:"Another signal, perhaps the biggest of them all, was the SEC\u2019s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024."}),"\n",(0,n.jsx)(t.p,{children:"It\u2019s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:"}),"\n",(0,n.jsx)(t.p,{children:"Increased security from innumerable new transaction fees (especially as mining rewards decrease)\nInflows of buyers and thriving new global market economies previously blocked by regulation\nCountless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting\u2026\nIntroduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming\n\u2026and all the upside we would otherwise leave on the table, all the innovations and applications we can\u2019t currently conceive\nDespite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they\u2019re storming their way in."}),"\n",(0,n.jsx)(t.p,{children:"Though, their path is not easy."}),"\n",(0,n.jsx)(t.p,{children:"For years, the unique technical characteristics of Bitcoin and the protocol\u2019s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum."}),"\n",(0,n.jsx)(t.p,{children:"The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions."}),"\n",(0,n.jsx)(t.p,{children:"The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key."}),"\n",(0,n.jsx)(t.p,{children:"A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form."}),"\n",(0,n.jsx)(t.p,{children:"In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network\u2019s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin\u2019s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer."}),"\n",(0,n.jsx)(t.p,{children:"\u201cAs long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,\u201d stated Bitlayer cofounder Charlie Hu."}),"\n",(0,n.jsx)(t.p,{children:"A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy."}),"\n",(0,n.jsx)(t.p,{children:"Welcome to Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s Mission\nBitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It\u2019s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin."}),"\n",(0,n.jsx)(t.p,{children:"\u201cBitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,\u201d said Kevin He, cofounder at Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group\u2019s web3 tech head."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network."}),"\n",(0,n.jsx)(t.p,{children:"The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision."}),"\n",(0,n.jsx)(t.p,{children:"Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN."}),"\n",(0,n.jsx)(t.p,{children:"Is Bitlayer the Next Big Thing for Bitcoin\uff1f\nBitVM\u2019s value is gaining increased recognition by developers as many teams continually work towards its implementation."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer\u2019s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine)."}),"\n",(0,n.jsx)(t.p,{children:"The project\u2019s tech team has abstracted three key tasks from these inspirations:"}),"\n",(0,n.jsx)(t.p,{children:"Trustless entry and exit of Layer 1 assets\nState transitions using a Turing-complete Layer 2 virtual machine\nLayer 1 verification of the validity of Layer 2 state transitions\nThe security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets."}),"\n",(0,n.jsx)(t.p,{children:"This traditional approach results in users completely losing control of their assets, while the platform\u2019s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets."}),"\n",(0,n.jsx)(t.p,{children:"The verification of Layer 2 state transitions operates on a principle comparable to proving one\u2019s innocence\u2013 an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin\u2019s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin\u2019s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network."}),"\n",(0,n.jsx)(t.p,{children:"Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications)."}),"\n",(0,n.jsx)(t.p,{children:"Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users."}),"\n",(0,n.jsx)(t.p,{children:"Above is an outline of preliminary ideation for Bitlayer."}),"\n",(0,n.jsx)(t.p,{children:"Following the publication of the Bitlayer white paper, expect more insight into the project\u2019s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is Making History on Bitcoin\nBitcoin initially emerged and endured as an asset or \u201cstore of value\u201d. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards \u201cbuilding on Bitcoin\u201d, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum\u2019s."}),"\n",(0,n.jsx)(t.p,{children:"At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM\u2019s technology, and promoting the implementation of BitVM."}),"\n",(0,n.jsx)(t.p,{children:"Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin\u2019s value, and harnessing its security, is the open future we all desire and deserve."}),"\n",(0,n.jsx)(t.p,{children:"A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin\u2019s scalability challenges remains a key endeavor for the team."}),"\n",(0,n.jsx)(t.p,{children:"Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step."}),"\n",(0,n.jsx)(t.p,{children:"With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don\u2019t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?"}),"\n",(0,n.jsx)(t.p,{children:"Shouldn\u2019t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?"}),"\n",(0,n.jsx)(t.p,{children:"Bitcoin has been left in the corner so far. But things might soon change."}),"\n",(0,n.jsx)(t.p,{children:"Satoshi Nakamoto once predicted: \u201cIn a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.\u201d"}),"\n",(0,n.jsx)(t.p,{children:"Now, at the historical juncture of Bitcoin\u2019s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy."})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>r});var n=i(6540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/94da5579.e576847f.js b/assets/js/94da5579.e576847f.js deleted file mode 100644 index 17250f5a..00000000 --- a/assets/js/94da5579.e576847f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2179],{3905:function(e,t,i){i.d(t,{Zo:function(){return u},kt:function(){return d}});var n=i(7294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?a(Object(i),!0).forEach((function(t){o(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):a(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function s(e,t){if(null==e)return{};var i,n,o=function(e,t){if(null==e)return{};var i,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)i=a[n],t.indexOf(i)>=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)i=a[n],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},u=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(i),d=o,m=p["".concat(l,".").concat(d)]||p[d]||h[d]||a;return i?n.createElement(m,r(r({ref:t},u),{},{components:i})):n.createElement(m,r({ref:t},u))}));function d(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=i.length,r=new Array(a);r[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,r[1]=s;for(var c=2;c<a;c++)r[c]=i[c];return n.createElement.apply(null,r)}return n.createElement.apply(null,i)}p.displayName="MDXCreateElement"},8214:function(e,t,i){i.r(t),i.d(t,{frontMatter:function(){return s},contentTitle:function(){return l},metadata:function(){return c},assets:function(){return u},toc:function(){return h},default:function(){return d}});var n=i(7462),o=i(3366),a=(i(7294),i(3905)),r=["components"],s={slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]},l="The Revival of a Bitcoin-Building Culture",c={permalink:"/blog/Bitlayer: Amplifying Bitcoin",source:"@site/blog/2024-03-01-first-blog-post.md",title:"Bitlayer: Amplifying Bitcoin",description:"Bitcoin is changing. Drastically.",date:"2024-03-01T00:00:00.000Z",formattedDate:"March 1, 2024",tags:[{label:"Hello Bitlayer",permalink:"/blog/tags/hello-bitlayer"}],readingTime:9.435,truncated:!1,authors:[{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"}],frontMatter:{slug:"Bitlayer: Amplifying Bitcoin",title:"Bitlayer: Amplifying Bitcoin",authors:{name:"Bitlayer",title:"The First Bitcoin security - equivalent Layer 2 based on BitVM.",url:"https://medium.com/@Bitlayer",image_url:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4",imageURL:"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},tags:["Hello Bitlayer"]}},u={authorsImageUrls:[void 0]},h=[],p={toc:h};function d(e){var t=e.components,i=(0,o.Z)(e,r);return(0,a.kt)("wrapper",(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Bitcoin is changing. Drastically."),(0,a.kt)("p",null,"And the Bitcoin halving is less than 60 days away\u2026."),(0,a.kt)("p",null,"A new \u201corder\u201d of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs \u2014 maybe a maxi\u2019s worst enemy \u2014 are coming to Bitcoin."),(0,a.kt)("p",null,"But at this point, if you don\u2019t at least understand the trade-offs, then you\u2019re not listening."),(0,a.kt)("p",null,"Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s\u2026these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology."),(0,a.kt)("p",null,"Another signal, perhaps the biggest of them all, was the SEC\u2019s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024."),(0,a.kt)("p",null,"It\u2019s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:"),(0,a.kt)("p",null,"Increased security from innumerable new transaction fees (especially as mining rewards decrease)\nInflows of buyers and thriving new global market economies previously blocked by regulation\nCountless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting\u2026\nIntroduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming\n\u2026and all the upside we would otherwise leave on the table, all the innovations and applications we can\u2019t currently conceive\nDespite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they\u2019re storming their way in."),(0,a.kt)("p",null,"Though, their path is not easy."),(0,a.kt)("p",null,"For years, the unique technical characteristics of Bitcoin and the protocol\u2019s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum."),(0,a.kt)("p",null,"The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions."),(0,a.kt)("p",null,"The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key."),(0,a.kt)("p",null,"A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form."),(0,a.kt)("p",null,"In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network\u2019s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin\u2019s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer."),(0,a.kt)("p",null,"\u201cAs long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,\u201d stated Bitlayer cofounder Charlie Hu."),(0,a.kt)("p",null,"A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy."),(0,a.kt)("p",null,"Welcome to Bitlayer."),(0,a.kt)("p",null,"Bitlayer\u2019s Mission\nBitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It\u2019s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin."),(0,a.kt)("p",null,"\u201cBitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,\u201d said Kevin He, cofounder at Bitlayer."),(0,a.kt)("p",null,"With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale."),(0,a.kt)("p",null,"Bitlayer\u2019s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group\u2019s web3 tech head."),(0,a.kt)("p",null,"Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network."),(0,a.kt)("p",null,"The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision."),(0,a.kt)("p",null,"Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN."),(0,a.kt)("p",null,"Is Bitlayer the Next Big Thing for Bitcoin\uff1f\nBitVM\u2019s value is gaining increased recognition by developers as many teams continually work towards its implementation."),(0,a.kt)("p",null,"Bitlayer\u2019s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine)."),(0,a.kt)("p",null,"The project\u2019s tech team has abstracted three key tasks from these inspirations:"),(0,a.kt)("p",null,"Trustless entry and exit of Layer 1 assets\nState transitions using a Turing-complete Layer 2 virtual machine\nLayer 1 verification of the validity of Layer 2 state transitions\nThe security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets."),(0,a.kt)("p",null,"This traditional approach results in users completely losing control of their assets, while the platform\u2019s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets."),(0,a.kt)("p",null,"The verification of Layer 2 state transitions operates on a principle comparable to proving one\u2019s innocence\u2013 an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin\u2019s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin\u2019s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network."),(0,a.kt)("p",null,"Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications)."),(0,a.kt)("p",null,"Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users."),(0,a.kt)("p",null,"Above is an outline of preliminary ideation for Bitlayer."),(0,a.kt)("p",null,"Following the publication of the Bitlayer white paper, expect more insight into the project\u2019s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline."),(0,a.kt)("p",null,"Bitlayer is Making History on Bitcoin\nBitcoin initially emerged and endured as an asset or \u201cstore of value\u201d. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards \u201cbuilding on Bitcoin\u201d, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum\u2019s."),(0,a.kt)("p",null,"At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution."),(0,a.kt)("p",null,"Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM\u2019s technology, and promoting the implementation of BitVM."),(0,a.kt)("p",null,"Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin\u2019s value, and harnessing its security, is the open future we all desire and deserve."),(0,a.kt)("p",null,"A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin\u2019s scalability challenges remains a key endeavor for the team."),(0,a.kt)("p",null,"Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step."),(0,a.kt)("p",null,"With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don\u2019t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?"),(0,a.kt)("p",null,"Shouldn\u2019t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?"),(0,a.kt)("p",null,"Bitcoin has been left in the corner so far. But things might soon change."),(0,a.kt)("p",null,"Satoshi Nakamoto once predicted: \u201cIn a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.\u201d"),(0,a.kt)("p",null,"Now, at the historical juncture of Bitcoin\u2019s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97338e48.07fae36b.js b/assets/js/97338e48.07fae36b.js new file mode 100644 index 00000000..a69734ab --- /dev/null +++ b/assets/js/97338e48.07fae36b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2044],{2805:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>a});var r=n(4848),s=n(8453);const d={sidebar_position:6},c="Peg Tokens",i={id:"BitlayerNetwork/PegTokens",title:"Peg Tokens",description:"Mainnet",source:"@site/docs/BitlayerNetwork/PegTokens.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/PegTokens",permalink:"/docs/BitlayerNetwork/PegTokens",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"docs",previous:{title:"Contracts",permalink:"/docs/BitlayerNetwork/Contracts"},next:{title:"Bitlayer Architecture",permalink:"/docs/category/bitlayer-architecture"}},o={},a=[{value:"Mainnet",id:"mainnet",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"peg-tokens",children:"Peg Tokens"}),"\n",(0,r.jsx)(t.h2,{id:"mainnet",children:"Mainnet"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Symbol"}),(0,r.jsx)(t.th,{children:"Decimal"}),(0,r.jsx)(t.th,{children:"Contract Address"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Tether USD"}),(0,r.jsx)(t.td,{children:"USDT"}),(0,r.jsx)(t.td,{children:"6"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://www.btrscan.com/address/0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",children:"0xfe9f969faf8ad72a83b761138bf25de87eff9dd2"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"USD Coin"}),(0,r.jsx)(t.td,{children:"USDC"}),(0,r.jsx)(t.td,{children:"6"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://www.btrscan.com/address/0x9827431e8b77e87c9894bd50b055d6be56be0030?tab=Transactions",children:"0x9827431e8b77e87c9894bd50b055d6be56be0030"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Ethereum Token"}),(0,r.jsx)(t.td,{children:"ETH"}),(0,r.jsx)(t.td,{children:"18"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://www.btrscan.com/address/0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2",children:"0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2"})})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var r=n(6540);const s={},d=r.createContext(s);function c(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/97338e48.37ff82c0.js b/assets/js/97338e48.37ff82c0.js deleted file mode 100644 index f7799d33..00000000 --- a/assets/js/97338e48.37ff82c0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[837],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=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=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||s[f]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},831:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return l},contentTitle:function(){return c},metadata:function(){return u},assets:function(){return p},toc:function(){return s},default:function(){return f}});var n=r(7462),a=r(3366),o=(r(7294),r(3905)),i=["components"],l={sidebar_position:6},c="Peg Tokens",u={unversionedId:"BitlayerNetwork/PegTokens",id:"BitlayerNetwork/PegTokens",title:"Peg Tokens",description:"Mainnet",source:"@site/docs/BitlayerNetwork/PegTokens.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/PegTokens",permalink:"/docs/BitlayerNetwork/PegTokens",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"docs",previous:{title:"Contracts",permalink:"/docs/BitlayerNetwork/Contracts"},next:{title:"Bitlayer Architecture",permalink:"/docs/category/bitlayer-architecture"}},p={},s=[{value:"Mainnet",id:"mainnet",level:2}],d={toc:s};function f(e){var t=e.components,r=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"peg-tokens"},"Peg Tokens"),(0,o.kt)("h2",{id:"mainnet"},"Mainnet"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Name"),(0,o.kt)("th",{parentName:"tr",align:null},"Symbol"),(0,o.kt)("th",{parentName:"tr",align:null},"Decimal"),(0,o.kt)("th",{parentName:"tr",align:null},"Contract Address"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Tether USD"),(0,o.kt)("td",{parentName:"tr",align:null},"USDT"),(0,o.kt)("td",{parentName:"tr",align:null},"6"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://www.btrscan.com/address/0xfe9f969faf8ad72a83b761138bf25de87eff9dd2"},"0xfe9f969faf8ad72a83b761138bf25de87eff9dd2"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"USD Coin"),(0,o.kt)("td",{parentName:"tr",align:null},"USDC"),(0,o.kt)("td",{parentName:"tr",align:null},"6"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://www.btrscan.com/address/0x9827431e8b77e87c9894bd50b055d6be56be0030?tab=Transactions"},"0x9827431e8b77e87c9894bd50b055d6be56be0030"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Ethereum Token"),(0,o.kt)("td",{parentName:"tr",align:null},"ETH"),(0,o.kt)("td",{parentName:"tr",align:null},"18"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://www.btrscan.com/address/0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2"},"0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2"))))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.49f3d38a.js b/assets/js/9e4087bc.49f3d38a.js deleted file mode 100644 index 15be0974..00000000 --- a/assets/js/9e4087bc.49f3d38a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3608],{3012:function(e,t,a){a.r(t),a.d(t,{default:function(){return s}});var r=a(7294),n=a(2434),c=a(9960),l=a(5999);function i(e){var t=e.year,a=e.posts;return r.createElement(r.Fragment,null,r.createElement("h3",null,t),r.createElement("ul",null,a.map((function(e){return r.createElement("li",{key:e.metadata.date},r.createElement(c.Z,{to:e.metadata.permalink},e.metadata.formattedDate," - ",e.metadata.title))}))))}function m(e){var t=e.years;return r.createElement("section",{className:"margin-vert--lg"},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},t.map((function(e,t){return r.createElement("div",{key:t,className:"col col--4 margin-vert--lg"},r.createElement(i,e))})))))}function s(e){var t,a,c=e.archive,i=(0,l.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),s=(0,l.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),o=(t=c.blogPosts,a=t.reduceRight((function(e,t){var a=t.metadata.date.split("-")[0],r=e.get(a)||[];return e.set(a,[t].concat(r))}),new Map),Array.from(a,(function(e){return{year:e[0],posts:e[1]}})));return r.createElement(n.Z,{title:i,description:s},r.createElement("header",{className:"hero hero--primary"},r.createElement("div",{className:"container"},r.createElement("h1",{className:"hero__title"},i),r.createElement("p",{className:"hero__subtitle"},s))),r.createElement("main",null,o.length>0&&r.createElement(m,{years:o})))}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.67af21bd.js b/assets/js/9e4087bc.67af21bd.js new file mode 100644 index 00000000..6401ae41 --- /dev/null +++ b/assets/js/9e4087bc.67af21bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2711],{9331:(e,t,r)=>{r.r(t),r.d(t,{default:()=>m});r(6540);var a=r(8774),n=r(1312),s=r(1213),i=r(6266),c=r(5476),l=r(1107),o=r(4848);function d(e){let{year:t,posts:r}=e;const n=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:t,children:t}),(0,o.jsx)("ul",{children:r.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(a.A,{to:e.metadata.permalink,children:[(t=e.metadata.date,n.format(new Date(t)))," - ",e.metadata.title]})},e.metadata.date);var t}))})]})}function h(e){let{years:t}=e;return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:t.map(((e,t)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},t)))})})})}function m(e){let{archive:t}=e;const r=(0,n.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const t=e.reduce(((e,t)=>{const r=t.metadata.date.split("-")[0],a=e.get(r)??[];return e.set(r,[t,...a])}),new Map);return Array.from(t,(e=>{let[t,r]=e;return{year:t,posts:r}}))}(t.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.be,{title:r,description:a}),(0,o.jsxs)(c.A,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.A,{as:"h1",className:"hero__title",children:r}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:i.length>0&&(0,o.jsx)(h,{years:i})})]})]})}},6266:(e,t,r)=>{r.d(t,{i:()=>n});var a=r(4586);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,a.A)(),r=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,a.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:r,...e})}}}]); \ No newline at end of file diff --git a/assets/js/a51f749a.6b72e8c7.js b/assets/js/a51f749a.6b72e8c7.js new file mode 100644 index 00000000..aa645de8 --- /dev/null +++ b/assets/js/a51f749a.6b72e8c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3775],{6766:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var o=n(4848),i=n(8453);const r={sidebar_position:2},s="About Bitlayer",a={id:"Introduction/AboutBitlayer",title:"About Bitlayer",description:"For users and developers alike, the fundamental concept of Bitlayer is outlined below:",source:"@site/docs/Introduction/AboutBitlayer.md",sourceDirName:"Introduction",slug:"/Introduction/AboutBitlayer",permalink:"/docs/Introduction/AboutBitlayer",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Welcome",permalink:"/docs/Introduction/"},next:{title:"Bitlayer vs. Ethereum",permalink:"/docs/Introduction/BitlayerVsEth"}},c={},l=[];function d(t){const e={admonition:"admonition",h1:"h1",img:"img",p:"p",strong:"strong",...(0,i.R)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h1,{id:"about-bitlayer",children:"About Bitlayer"}),"\n",(0,o.jsx)(e.p,{children:"For users and developers alike, the fundamental concept of Bitlayer is outlined below:"}),"\n",(0,o.jsx)(e.p,{children:(0,o.jsx)(e.img,{alt:"intro",src:n(6008).A+"",width:"2828",height:"1116"})}),"\n",(0,o.jsxs)(e.p,{children:["Bitlayer acts as a Layer 2 solution for Bitcoin, boasting ",(0,o.jsx)(e.strong,{children:"100% EVM and Ethereum toolchain compatibility"}),", with BTC as native token(gas token)."]}),"\n",(0,o.jsx)(e.admonition,{title:"Note on Solidity Version Support:",type:"tip",children:(0,o.jsx)(e.p,{children:"We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed."})}),"\n",(0,o.jsxs)(e.p,{children:["Users can engage with it using wallets such as ",(0,o.jsx)(e.strong,{children:"Metamask, imToken, or other Ethereum-compatible wallets"}),"."]}),"\n",(0,o.jsxs)(e.p,{children:["Developers are afforded the ease of migrating smart contracts written in ",(0,o.jsx)(e.strong,{children:"Solidity, Vyper, or any other language that compiles to EVM bytecode"})," directly to Bitlayer, using the toolchain you are familiar with: ",(0,o.jsx)(e.strong,{children:"Ethereum JSON-RPC, Hardhat"}),", etc."]})]})}function u(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},6008:(t,e,n)=>{n.d(e,{A:()=>o});const o=n.p+"assets/images/intro-600473dc49a45f7c6aa40417b41c2029.png"},8453:(t,e,n)=>{n.d(e,{R:()=>s,x:()=>a});var o=n(6540);const i={},r=o.createContext(i);function s(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:s(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/a51f749a.9de8f457.js b/assets/js/a51f749a.9de8f457.js deleted file mode 100644 index 72b47556..00000000 --- a/assets/js/a51f749a.9de8f457.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7600],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=s(n),m=o,f=d["".concat(l,".").concat(m)]||d[m]||p[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var s=2;s<a;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},3947:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return c},contentTitle:function(){return l},metadata:function(){return s},assets:function(){return u},toc:function(){return p},default:function(){return m}});var r=n(7462),o=n(3366),a=(n(7294),n(3905)),i=["components"],c={sidebar_position:2},l="About Bitlayer",s={unversionedId:"Introduction/AboutBitlayer",id:"Introduction/AboutBitlayer",title:"About Bitlayer",description:"For users and developers alike, the fundamental concept of Bitlayer is outlined below:",source:"@site/docs/Introduction/AboutBitlayer.md",sourceDirName:"Introduction",slug:"/Introduction/AboutBitlayer",permalink:"/docs/Introduction/AboutBitlayer",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Welcome",permalink:"/docs/Introduction/"},next:{title:"Bitlayer vs. Ethereum",permalink:"/docs/Introduction/BitlayerVsEth"}},u={},p=[],d={toc:p};function m(e){var t=e.components,c=(0,o.Z)(e,i);return(0,a.kt)("wrapper",(0,r.Z)({},d,c,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"about-bitlayer"},"About Bitlayer"),(0,a.kt)("p",null,"For users and developers alike, the fundamental concept of Bitlayer is outlined below:"),(0,a.kt)("p",null,(0,a.kt)("img",{loading:"lazy",alt:"intro",src:n(4074).Z,width:"2828",height:"1116"})),(0,a.kt)("p",null,"Bitlayer acts as a Layer 2 solution for Bitcoin, boasting ",(0,a.kt)("strong",{parentName:"p"},"100% EVM and Ethereum toolchain compatibility"),", with BTC as native token(gas token)."),(0,a.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"Note on Solidity Version Support:")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed. "))),(0,a.kt)("p",null,"Users can engage with it using wallets such as ",(0,a.kt)("strong",{parentName:"p"},"Metamask, imToken, or other Ethereum-compatible wallets"),"."),(0,a.kt)("p",null,"Developers are afforded the ease of migrating smart contracts written in ",(0,a.kt)("strong",{parentName:"p"},"Solidity, Vyper, or any other language that compiles to EVM bytecode")," directly to Bitlayer, using the toolchain you are familiar with: ",(0,a.kt)("strong",{parentName:"p"},"Ethereum JSON-RPC, Hardhat"),", etc."))}m.isMDXComponent=!0},4074:function(e,t,n){t.Z=n.p+"assets/images/intro-600473dc49a45f7c6aa40417b41c2029.png"}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.2d8de9ae.js b/assets/js/a6aa9e1f.2d8de9ae.js new file mode 100644 index 00000000..2f81fbe2 --- /dev/null +++ b/assets/js/a6aa9e1f.2d8de9ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7643],{5124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});a(6540);var i=a(8215),n=a(4586),r=a(1213),o=a(7559),s=a(6535),l=a(7713),d=a(1463),c=a(3892),g=a(5260),p=a(6676),u=a(4848);function m(e){const t=(0,p.k)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function h(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,n.A)(),{blogDescription:i,blogTitle:o,permalink:s}=t,l="/"===s?a:o;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.be,{title:l,description:i}),(0,u.jsx)(d.A,{tag:"blog_posts_list"})]})}function b(e){const{metadata:t,items:a,sidebar:i}=e;return(0,u.jsxs)(s.A,{sidebar:i,children:[(0,u.jsx)(c.A,{items:a}),(0,u.jsx)(l.A,{metadata:t})]})}function f(e){return(0,u.jsxs)(r.e3,{className:(0,i.A)(o.G.wrapper.blogPages,o.G.page.blogListPage),children:[(0,u.jsx)(h,{...e}),(0,u.jsx)(m,{...e}),(0,u.jsx)(b,{...e})]})}},7713:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var i=a(1312),n=a(9022),r=a(4848);function o(e){const{metadata:t}=e,{previousPage:a,nextPage:o}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,i.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(n.A,{permalink:a,title:(0,r.jsx)(i.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),o&&(0,r.jsx)(n.A,{permalink:o,title:(0,r.jsx)(i.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var i=a(7131),n=a(4651),r=a(4848);function o(e){let{items:t,component:a=n.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(i.i,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},6676:(e,t,a)=>{a.d(t,{k:()=>c,J:()=>g});var i=a(6025),n=a(4586),r=a(6803);var o=a(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(p);return{author:1===t.length?t[0]:t}}function d(e,t,a){return e?{image:u({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function c(e){const{siteConfig:t}=(0,n.A)(),{withBaseUrl:a}=(0,i.h)(),{metadata:{blogDescription:r,blogTitle:o,permalink:c}}=e,g=`${t.url}${c}`;return{"@context":"https://schema.org","@type":"Blog","@id":g,mainEntityOfPage:g,headline:o,description:r,blogPost:e.items.map((e=>function(e,t,a){const{assets:i,frontMatter:n,metadata:r}=e,{date:o,title:c,description:g,lastUpdatedAt:p}=r,u=i.image??n.image,m=n.keywords??[],h=`${t.url}${r.permalink}`,b=p?s(p):void 0;return{"@type":"BlogPosting","@id":h,mainEntityOfPage:h,url:h,headline:c,name:c,description:g,datePublished:o,...b?{dateModified:b}:{},...l(r.authors),...d(u,a,c),...m?{keywords:m}:{}}}(e.content,t,a)))}}function g(){const e=function(){const e=(0,r.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:a}=(0,o.e)(),{siteConfig:c}=(0,n.A)(),{withBaseUrl:g}=(0,i.h)(),{date:p,title:u,description:m,frontMatter:h,lastUpdatedAt:b}=a,f=t.image??h.image,x=h.keywords??[],j=b?s(b):void 0,A=`${c.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":A,mainEntityOfPage:A,url:A,headline:u,name:u,description:m,datePublished:p,...j?{dateModified:j}:{},...l(a.authors),...d(f,g,u),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${c.url}${e.blogBasePath}`,name:e.blogTitle}}}function p(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function u(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.94e0aa18.js b/assets/js/a6aa9e1f.94e0aa18.js deleted file mode 100644 index fb7cdb54..00000000 --- a/assets/js/a6aa9e1f.94e0aa18.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3089],{8665:function(e,t,a){a.d(t,{Z:function(){return b}});var r=a(3366),n=a(7294),l=a(6010),i=a(2434),m=a(9960),s="sidebar_a9qW",o="sidebarItemTitle_uKok",c="sidebarItemList_Kvuv",u="sidebarItem_CF0Q",d="sidebarItemLink_miNk",g="sidebarItemLinkActive_RRTD",p=a(5999);function v(e){var t=e.sidebar;return 0===t.items.length?null:n.createElement("nav",{className:(0,l.Z)(s,"thin-scrollbar"),"aria-label":(0,p.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},n.createElement("div",{className:(0,l.Z)(o,"margin-bottom--md")},t.title),n.createElement("ul",{className:c},t.items.map((function(e){return n.createElement("li",{key:e.permalink,className:u},n.createElement(m.Z,{isNavLink:!0,to:e.permalink,className:d,activeClassName:g},e.title))}))))}var h=["sidebar","toc","children"];function b(e){var t=e.sidebar,a=e.toc,m=e.children,s=(0,r.Z)(e,h),o=t&&t.items.length>0;return n.createElement(i.Z,s,n.createElement("div",{className:"container margin-vert--lg"},n.createElement("div",{className:"row"},o&&n.createElement("aside",{className:"col col--3"},n.createElement(v,{sidebar:t})),n.createElement("main",{className:(0,l.Z)("col",{"col--7":o,"col--9 col--offset-1":!o}),itemScope:!0,itemType:"http://schema.org/Blog"},m),a&&n.createElement("div",{className:"col col--2"},a))))}},7329:function(e,t,a){a.r(t),a.d(t,{default:function(){return o}});var r=a(7294),n=a(2263),l=a(8665),i=a(8561),m=a(6299),s=a(5450);function o(e){var t=e.metadata,a=e.items,o=e.sidebar,c=(0,n.Z)().siteConfig.title,u=t.blogDescription,d=t.blogTitle,g="/"===t.permalink?c:d;return r.createElement(l.Z,{title:g,description:u,wrapperClassName:s.kM.wrapper.blogPages,pageClassName:s.kM.page.blogListPage,searchMetadata:{tag:"blog_posts_list"},sidebar:o},a.map((function(e){var t=e.content;return r.createElement(i.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:t.metadata.truncated},r.createElement(t,null))})),r.createElement(m.Z,{metadata:t}))}},6299:function(e,t,a){a.d(t,{Z:function(){return i}});var r=a(7294),n=a(5999),l=a(1750);function i(e){var t=e.metadata,a=t.previousPage,i=t.nextPage;return r.createElement("nav",{className:"pagination-nav","aria-label":(0,n.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(l.Z,{permalink:a,title:r.createElement(n.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")})),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},i&&r.createElement(l.Z,{permalink:i,title:r.createElement(n.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries")})))}},8561:function(e,t,a){a.d(t,{Z:function(){return k}});var r=a(7294),n=a(6010),l=a(3905),i=a(5999),m=a(9960),s=a(4996),o=a(5450),c=a(8780),u=a(4689),d=a(6753),g="blogPostTitle_rzP5",p="blogPostData_Zg1s",v="blogPostDetailsFull_h6_j",h=a(62),b="image_o0gy";function E(e){var t=e.author,a=t.name,n=t.title,l=t.url,i=t.imageURL;return r.createElement("div",{className:"avatar margin-bottom--sm"},i&&r.createElement(m.Z,{className:"avatar__photo-link avatar__photo",href:l},r.createElement("img",{className:b,src:i,alt:a})),a&&r.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},r.createElement("div",{className:"avatar__name"},r.createElement(m.Z,{href:l,itemProp:"url"},r.createElement("span",{itemProp:"name"},a))),n&&r.createElement("small",{className:"avatar__subtitle",itemProp:"description"},n)))}var f="authorCol_FlmR",_="imageOnlyAuthorRow_trpF",Z="imageOnlyAuthorCol_S2np";function N(e){var t=e.authors,a=e.assets;if(0===t.length)return null;var l=t.every((function(e){return!e.name}));return r.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",l?_:"row")},t.map((function(e,t){var i;return r.createElement("div",{className:(0,n.Z)(!l&&"col col--6",l?Z:f),key:t},r.createElement(E,{author:Object.assign({},e,{imageURL:null!=(i=a.authorsImageUrls[t])?i:e.imageURL})}))})))}function k(e){var t,a,b,E=(b=(0,o.c2)().selectMessage,function(e){var t=Math.ceil(e);return b(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),f=(0,s.C)().withBaseUrl,_=e.children,Z=e.frontMatter,k=e.assets,P=e.metadata,T=e.truncated,w=e.isBlogPostPage,y=void 0!==w&&w,I=P.date,L=P.formattedDate,C=P.permalink,R=P.tags,M=P.readingTime,A=P.title,D=P.editUrl,U=P.authors,x=null!=(t=k.image)?t:Z.image,B=!y&&T,F=R.length>0,O=y?"h1":"h2";return r.createElement("article",{className:y?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},r.createElement("header",null,r.createElement(O,{className:g,itemProp:"headline"},y?A:r.createElement(m.Z,{itemProp:"url",to:C},A)),r.createElement("div",{className:(0,n.Z)(p,"margin-vert--md")},r.createElement("time",{dateTime:I,itemProp:"datePublished"},L),void 0!==M&&r.createElement(r.Fragment,null," \xb7 ",E(M))),r.createElement(N,{authors:U,assets:k})),x&&r.createElement("meta",{itemProp:"image",content:f(x,{absolute:!0})}),r.createElement("div",{id:y?c.blogPostContainerID:void 0,className:"markdown",itemProp:"articleBody"},r.createElement(l.Zo,{components:u.Z},_)),(F||T)&&r.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(a={},a[v]=y,a))},F&&r.createElement("div",{className:(0,n.Z)("col",{"col--9":B})},r.createElement(h.Z,{tags:R})),y&&D&&r.createElement("div",{className:"col margin-top--sm"},r.createElement(d.Z,{editUrl:D})),B&&r.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":F})},r.createElement(m.Z,{to:P.permalink,"aria-label":(0,i.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:A})},r.createElement("b",null,r.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},6753:function(e,t,a){a.d(t,{Z:function(){return d}});var r=a(7294),n=a(5999),l=a(7462),i=a(3366),m=a(6010),s="iconEdit_dcUD",o=["className"];function c(e){var t=e.className,a=(0,i.Z)(e,o);return r.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,m.Z)(s,t),"aria-hidden":"true"},a),r.createElement("g",null,r.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}var u=a(5450);function d(e){var t=e.editUrl;return r.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:u.kM.common.editThisPage},r.createElement(c,null),r.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},1750:function(e,t,a){a.d(t,{Z:function(){return l}});var r=a(7294),n=a(9960);function l(e){var t=e.permalink,a=e.title,l=e.subLabel;return r.createElement(n.Z,{className:"pagination-nav__link",to:t},l&&r.createElement("div",{className:"pagination-nav__sublabel"},l),r.createElement("div",{className:"pagination-nav__label"},a))}},7774:function(e,t,a){a.d(t,{Z:function(){return o}});var r=a(7294),n=a(6010),l=a(9960),i="tag_hD8n",m="tagRegular_D6E_",s="tagWithCount_i0QQ";function o(e){var t,a=e.permalink,o=e.name,c=e.count;return r.createElement(l.Z,{href:a,className:(0,n.Z)(i,(t={},t[m]=!c,t[s]=c,t))},o,c&&r.createElement("span",null,c))}},62:function(e,t,a){a.d(t,{Z:function(){return o}});var r=a(7294),n=a(6010),l=a(5999),i=a(7774),m="tags_XVD_",s="tag_JSN8";function o(e){var t=e.tags;return r.createElement(r.Fragment,null,r.createElement("b",null,r.createElement(l.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),r.createElement("ul",{className:(0,n.Z)(m,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return r.createElement("li",{key:a,className:s},r.createElement(i.Z,{name:t,permalink:a}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.4c2d804d.js b/assets/js/a7023ddc.4c2d804d.js deleted file mode 100644 index 88b8ca6f..00000000 --- a/assets/js/a7023ddc.4c2d804d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1713],{3457:function(e){e.exports=JSON.parse('{"Hello Bitlayer":{"allTagsPath":"/blog/tags","slug":"/blog/tags/hello-bitlayer","name":"Hello Bitlayer","count":1,"permalink":"/blog/tags/hello-bitlayer"}}')}}]); \ No newline at end of file diff --git a/assets/js/a7456010.7b4b0a20.js b/assets/js/a7456010.7b4b0a20.js new file mode 100644 index 00000000..2e5cf6e2 --- /dev/null +++ b/assets/js/a7456010.7b4b0a20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1235],{8552:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.7d720c94.js b/assets/js/a7bd4aaa.7d720c94.js new file mode 100644 index 00000000..13916dc6 --- /dev/null +++ b/assets/js/a7bd4aaa.7d720c94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7098],{4532:(e,n,s)=>{s.r(n),s.d(n,{default:()=>x});s(6540);var r=s(1213),t=s(2967),o=s(2252),i=s(2831),c=s(1463),u=s(4848);function a(e){const{version:n}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.A,{version:n.version,tag:(0,t.tU)(n.pluginId,n.version)}),(0,u.jsx)(r.be,{children:n.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(e){const{version:n,route:s}=e;return(0,u.jsx)(r.e3,{className:n.className,children:(0,u.jsx)(o.n,{version:n,children:(0,i.v)(s.routes)})})}function x(e){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...e}),(0,u.jsx)(l,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.72f53bdb.js b/assets/js/a94703ab.72f53bdb.js new file mode 100644 index 00000000..5212d232 --- /dev/null +++ b/assets/js/a94703ab.72f53bdb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9048],{2559:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(6540),o=n(8215),i=n(1213),s=n(7559),l=n(4142),r=n(6588),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),j=n(4581),f=n(6342),v=n(3465);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const A={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function g(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",A.collapseSidebarButton),onClick:t,children:(0,b.jsx)(_,{className:A.collapseSidebarButtonIcon})})}var k=n(5041),C=n(9532);const S=Symbol("EmptyContext"),T=a.createContext(S);function N(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(T.Provider,{value:i,children:t})}var I=n(1422),B=n(9169),y=n(8774),w=n(2303);function L(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function E(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:j}}}=(0,f.p)(),v=function(e){const t=(0,w.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),_=(0,l.w8)(t,i),A=(0,B.ys)(x,i),{collapsed:g,setCollapsed:k}=(0,I.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:N,setExpandedItem:E}=function(){const e=(0,a.useContext)(T);if(e===S)throw new C.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!g),E(e?null:c),k(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,C.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:g,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=N&&N!==c&&j&&k(!0)}),[h,N,c,k,j]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":g},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":A}),children:[(0,b.jsx)(y.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":A?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!g:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(L,{collapsed:g,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(I.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(U,{items:u,tabIndex:g?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var M=n(6654),H=n(3186);const G={menuExternalLink:"menuExternalLink_NmtK"};function W(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,M.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.A,{className:(0,o.A)("menu__link",!x&&G.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.A,{})]})},u)}const P={menuHtmlItem:"menuHtmlItem_M9Kj"};function R(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[P.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(E,{item:t,...n});case"html":return(0,b.jsx)(R,{item:t,...n});default:return(0,b.jsx)(W,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(N,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const U=(0,a.memo)(F),V={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.Mj)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",V.menu,l&&V.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:n,activePath:t,level:1})})})}const K="sidebar_njMd",z="sidebarWithHideableNavbar_wUlq",q="sidebarHidden_VK0M",O="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,f.p)();return(0,b.jsxs)("div",{className:(0,o.A)(K,s&&z,i&&q),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:O}),(0,b.jsx)(Y,{path:t,sidebar:n}),l&&(0,b.jsx)(g,{onClick:a})]})}const Q=a.memo(J);var X=n(5600),Z=n(2069);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Z.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(X.GX,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,j.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Q,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function se(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.A)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ue(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(3363);function be(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(me.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(8215),o=n(1312),i=n(1107),s=n(4848);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aaa1c66f.202c94a7.js b/assets/js/aaa1c66f.202c94a7.js deleted file mode 100644 index 496ddb6a..00000000 --- a/assets/js/aaa1c66f.202c94a7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2e3],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return b}});var a=n(7294);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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),s=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(n),b=r,m=p["".concat(i,".").concat(b)]||p[b]||u[b]||o;return n?a.createElement(m,l(l({ref:t},d),{},{components:n})):a.createElement(m,l({ref:t},d))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=p;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var s=2;s<o;s++)l[s]=n[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},8215:function(e,t,n){n.d(t,{Z:function(){return r}});var a=n(7294);function r(e){var t=e.children,n=e.hidden,r=e.className;return a.createElement("div",{role:"tabpanel",hidden:n,className:r},t)}},9877:function(e,t,n){n.d(t,{Z:function(){return d}});var a=n(7462),r=n(7294),o=n(2389),l=n(5450),c=n(6010),i="tabItem_LplD";function s(e){var t,n,o,s=e.lazy,d=e.block,u=e.defaultValue,p=e.values,b=e.groupId,m=e.className,f=r.Children.map(e.children,(function(e){if((0,r.isValidElement)(e)&&void 0!==e.props.value)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.')})),k=null!=p?p:f.map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes}})),g=(0,l.lx)(k,(function(e,t){return e.value===t.value}));if(g.length>0)throw new Error('Docusaurus error: Duplicate values "'+g.map((function(e){return e.value})).join(", ")+'" found in <Tabs>. Every value needs to be unique.');var v=null===u?u:null!=(t=null!=u?u:null==(n=f.find((function(e){return e.props.default})))?void 0:n.props.value)?t:null==(o=f[0])?void 0:o.props.value;if(null!==v&&!k.some((function(e){return e.value===v})))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+v+'" but none of its children has the corresponding value. Available values are: '+k.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var y=(0,l.UB)(),h=y.tabGroupChoices,N=y.setTabGroupChoices,x=(0,r.useState)(v),w=x[0],T=x[1],O=[],E=(0,l.o5)().blockElementScrollPositionUntilNextRender;if(null!=b){var P=h[b];null!=P&&P!==w&&k.some((function(e){return e.value===P}))&&T(P)}var I=function(e){var t=e.currentTarget,n=O.indexOf(t),a=k[n].value;a!==w&&(E(t),T(a),null!=b&&N(b,a))},B=function(e){var t,n=null;switch(e.key){case"ArrowRight":var a=O.indexOf(e.currentTarget)+1;n=O[a]||O[0];break;case"ArrowLeft":var r=O.indexOf(e.currentTarget)-1;n=O[r]||O[O.length-1]}null==(t=n)||t.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,c.Z)("tabs",{"tabs--block":d},m)},k.map((function(e){var t=e.value,n=e.label,o=e.attributes;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:w===t?0:-1,"aria-selected":w===t,key:t,ref:function(e){return O.push(e)},onKeyDown:B,onFocus:I,onClick:I},o,{className:(0,c.Z)("tabs__item",i,null==o?void 0:o.className,{"tabs__item--active":w===t})}),null!=n?n:t)}))),s?(0,r.cloneElement)(f.filter((function(e){return e.props.value===w}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},f.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==w})}))))}function d(e){var t=(0,o.Z)();return r.createElement(s,(0,a.Z)({key:String(t)},e))}},5775:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return s},contentTitle:function(){return d},metadata:function(){return u},assets:function(){return p},toc:function(){return b},default:function(){return f}});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),l=n(9877),c=n(8215),i=["components"],s={sidebar_position:5,title:"Logs"},d=void 0,u={unversionedId:"Bitlayer Scan APIs/Logs",id:"Bitlayer Scan APIs/Logs",title:"Logs",description:"Get Event Logs by Address",source:"@site/docs/Bitlayer Scan APIs/Logs.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Logs",permalink:"/docs/Bitlayer Scan APIs/Logs",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Logs"},sidebar:"docs",previous:{title:"Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks"},next:{title:"Tokens",permalink:"/docs/Bitlayer Scan APIs/Tokens"}},p={},b=[{value:"Get Event Logs by Address",id:"get-event-logs-by-address",level:2},{value:"Get Event Logs by Address filtered by Topics",id:"get-event-logs-by-address-filtered-by-topics",level:2}],m={toc:b};function f(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"get-event-logs-by-address"},"Get Event Logs by Address"),(0,o.kt)("p",null,"Returns the event logs from an address, with optional filtering by block range."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=logs\n&action=getLogs\n&address=0x42857b399adba34b75d6bedcacde75c7784e87c6\n&fromBlock=585180\n&toBlock=585189\n")),(0,o.kt)("p",null,"Try this endpoint in your ",(0,o.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=logs&action=getLogs&address=0x42857b399adba34b75d6bedcacde75c7784e87c6&fromBlock=585180&toBlock=585189"},"browser")," \ud83d\udd17"),(0,o.kt)(l.Z,{mdxType:"Tabs"},(0,o.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,o.kt)("th",{parentName:"tr",align:null},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"address"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check for logs")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"startblock"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"toBlock"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"integer")," block number to stop searching for transactions"))))),(0,o.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,o.kt)("p",null," Sample Response"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": [\n {\n "address": "0x42857b399adba34b75d6bedcacde75c7784e87c6",\n "topics": [\n "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",\n "0xfabf3909f1b538697092793867e2118600b63b14fa641bb49f83a02b18d47f0d",\n "0x0000000000000000000000003528c7b21cd34fe32cdda2806cb2e18a4659e8c1",\n "0x0000000000000000000000005798c0c8cc396da77aaa68c0722b70926f98946c"\n ],\n "data": "0x",\n "blockNumber": "0x8ede2",\n "blockHash": "0xfd7f02f18b6c82c765c57b9817438c93a80238b71942d58c7e3219c9a688b5c1",\n "timeStamp": "0x662a0e3b",\n "gasPrice": "0x59682f07",\n "gasUsed": "0xc8e1",\n "logIndex": "0x0",\n "transactionHash": "0xc914f58fafbad9ba2197cfb706c1e93ab20860de4d3fd17c8b0ae396dc8862c1",\n "transactionIndex": "0x0"\n }\n ]\n}\n')))),(0,o.kt)("h2",{id:"get-event-logs-by-address-filtered-by-topics"},"Get Event Logs by Address filtered by Topics"),(0,o.kt)("p",null,"Returns the event logs from an address, filtered by topics and block range."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=logs\n&action=logs\n&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1\n&fromBlock=1191962\n&toBlock=1191964\n&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n&topic0_1_opr=and\n&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37\n")),(0,o.kt)("p",null,"Usage:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"For a single topic, specify the topic number such as topic0, topic1, topic2, topic3"),(0,o.kt)("li",{parentName:"ul"},"For multiple topics, specify the topic numbers and topic operator either and or or such as belowtopic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2) topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2) topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3)")),(0,o.kt)("p",null,"Try this endpoint in your ",(0,o.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=logs&action=logs&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1&fromBlock=1191962&toBlock=1191964&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925&topic0_1_opr=and&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37"},"browser")," \ud83d\udd17"),(0,o.kt)(l.Z,{mdxType:"Tabs"},(0,o.kt)(c.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,o.kt)("th",{parentName:"tr",align:null},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"address"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"string")," representing the address to check for logs")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"fromBlock"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"toBlock"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"integer")," block number to start searching for transactions")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"topic"),(0,o.kt)("td",{parentName:"tr",align:null},"the topic numbers to search for limited ",(0,o.kt)("inlineCode",{parentName:"td"},"totopic0"),", ",(0,o.kt)("inlineCode",{parentName:"td"},"topic1"),", ",(0,o.kt)("inlineCode",{parentName:"td"},"topic2"),", ",(0,o.kt)("inlineCode",{parentName:"td"},"topic3"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"topicOperator"),(0,o.kt)("td",{parentName:"tr",align:null},"the topic operator when multiple topic combinations are used limited to ",(0,o.kt)("inlineCode",{parentName:"td"},"and")," or ",(0,o.kt)("inlineCode",{parentName:"td"},"or")))))),(0,o.kt)(c.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,o.kt)("p",null," Sample Response"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": [\n {\n "address": "0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1",\n "topics": [\n "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",\n "0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37",\n "0x0000000000000000000000006c85a831a945ba9b565d500a3a9e107a0aad868e"\n ],\n "data": "0x000000000000000000000000000000000000027716b6a0adc2d677c080000000",\n "blockNumber": "0x12301b",\n "blockHash": "0x0a6e405fac20bba7395f6f4363a4b18be6838d2b7c73ef6e7a1abca01de82951",\n "timeStamp": "0x6645d4e6",\n "gasPrice": "0x5f5e107",\n "gasUsed": "0xb507",\n "logIndex": "0x0",\n "transactionHash": "0x7ba24f7b5bb5dcfdfeb4bacf587e0a8e63c7d7c39b9a5d05a0337c232a8b230d",\n "transactionIndex": "0x0"\n }\n ]\n}\n')))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/aaa1c66f.7cebd3dc.js b/assets/js/aaa1c66f.7cebd3dc.js new file mode 100644 index 00000000..19d78170 --- /dev/null +++ b/assets/js/aaa1c66f.7cebd3dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8076],{6378:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=t(4848),s=t(8453),a=t(1470),c=t(9365);const o={sidebar_position:5,title:"Logs"},l=void 0,i={id:"Bitlayer Scan APIs/Logs",title:"Logs",description:"Get Event Logs by Address",source:"@site/docs/Bitlayer Scan APIs/Logs.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Logs",permalink:"/docs/Bitlayer Scan APIs/Logs",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Logs"},sidebar:"docs",previous:{title:"Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks"},next:{title:"Tokens",permalink:"/docs/Bitlayer Scan APIs/Tokens"}},d={},u=[{value:"Get Event Logs by Address",id:"get-event-logs-by-address",level:2},{value:"Get Event Logs by Address filtered by Topics",id:"get-event-logs-by-address-filtered-by-topics",level:2}];function b(e){const r={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.h2,{id:"get-event-logs-by-address",children:"Get Event Logs by Address"}),"\n",(0,n.jsx)(r.p,{children:"Returns the event logs from an address, with optional filtering by block range."}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=logs\r\n&action=getLogs\r\n&address=0x42857b399adba34b75d6bedcacde75c7784e87c6\r\n&fromBlock=585180\r\n&toBlock=585189\n"})}),"\n",(0,n.jsxs)(r.p,{children:["Try this endpoint in your ",(0,n.jsx)(r.a,{href:"https://api.btrscan.com/scan/api?module=logs&action=getLogs&address=0x42857b399adba34b75d6bedcacde75c7784e87c6&fromBlock=585180&toBlock=585189",children:"browser"})," \ud83d\udd17"]}),"\n",(0,n.jsxs)(a.A,{children:[(0,n.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,n.jsx)(r.p,{children:"Query Parameters"}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Parameter"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"address"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"string"})," representing the address to check for logs"]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"startblock"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"toBlock"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"integer"})," block number to stop searching for transactions"]})]})]})]})]}),(0,n.jsxs)(c.A,{value:"response",label:"Response",children:[(0,n.jsx)(r.p,{children:"Sample Response"}),(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": [\r\n {\r\n "address": "0x42857b399adba34b75d6bedcacde75c7784e87c6",\r\n "topics": [\r\n "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",\r\n "0xfabf3909f1b538697092793867e2118600b63b14fa641bb49f83a02b18d47f0d",\r\n "0x0000000000000000000000003528c7b21cd34fe32cdda2806cb2e18a4659e8c1",\r\n "0x0000000000000000000000005798c0c8cc396da77aaa68c0722b70926f98946c"\r\n ],\r\n "data": "0x",\r\n "blockNumber": "0x8ede2",\r\n "blockHash": "0xfd7f02f18b6c82c765c57b9817438c93a80238b71942d58c7e3219c9a688b5c1",\r\n "timeStamp": "0x662a0e3b",\r\n "gasPrice": "0x59682f07",\r\n "gasUsed": "0xc8e1",\r\n "logIndex": "0x0",\r\n "transactionHash": "0xc914f58fafbad9ba2197cfb706c1e93ab20860de4d3fd17c8b0ae396dc8862c1",\r\n "transactionIndex": "0x0"\r\n }\r\n ]\r\n}\n'})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"get-event-logs-by-address-filtered-by-topics",children:"Get Event Logs by Address filtered by Topics"}),"\n",(0,n.jsx)(r.p,{children:"Returns the event logs from an address, filtered by topics and block range."}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=logs\r\n&action=logs\r\n&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1\r\n&fromBlock=1191962\r\n&toBlock=1191964\r\n&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\r\n&topic0_1_opr=and\r\n&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37\n"})}),"\n",(0,n.jsx)(r.p,{children:"Usage:"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsx)(r.li,{children:"For a single topic, specify the topic number such as topic0, topic1, topic2, topic3"}),"\n",(0,n.jsx)(r.li,{children:"For multiple topics, specify the topic numbers and topic operator either and or or such as belowtopic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2) topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2) topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3)"}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["Try this endpoint in your ",(0,n.jsx)(r.a,{href:"https://api.btrscan.com/scan/api?module=logs&action=logs&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1&fromBlock=1191962&toBlock=1191964&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925&topic0_1_opr=and&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37",children:"browser"})," \ud83d\udd17"]}),"\n",(0,n.jsxs)(a.A,{children:[(0,n.jsxs)(c.A,{value:"request",label:"Request",default:!0,children:[(0,n.jsx)(r.p,{children:"Query Parameters"}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Parameter"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"address"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"string"})," representing the address to check for logs"]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"fromBlock"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"toBlock"}),(0,n.jsxs)(r.td,{children:["the ",(0,n.jsx)(r.code,{children:"integer"})," block number to start searching for transactions"]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"topic"}),(0,n.jsxs)(r.td,{children:["the topic numbers to search for limited ",(0,n.jsx)(r.code,{children:"totopic0"}),", ",(0,n.jsx)(r.code,{children:"topic1"}),", ",(0,n.jsx)(r.code,{children:"topic2"}),", ",(0,n.jsx)(r.code,{children:"topic3"})]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"topicOperator"}),(0,n.jsxs)(r.td,{children:["the topic operator when multiple topic combinations are used limited to ",(0,n.jsx)(r.code,{children:"and"})," or ",(0,n.jsx)(r.code,{children:"or"})]})]})]})]})]}),(0,n.jsxs)(c.A,{value:"response",label:"Response",children:[(0,n.jsx)(r.p,{children:"Sample Response"}),(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": [\r\n {\r\n "address": "0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1",\r\n "topics": [\r\n "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",\r\n "0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37",\r\n "0x0000000000000000000000006c85a831a945ba9b565d500a3a9e107a0aad868e"\r\n ],\r\n "data": "0x000000000000000000000000000000000000027716b6a0adc2d677c080000000",\r\n "blockNumber": "0x12301b",\r\n "blockHash": "0x0a6e405fac20bba7395f6f4363a4b18be6838d2b7c73ef6e7a1abca01de82951",\r\n "timeStamp": "0x6645d4e6",\r\n "gasPrice": "0x5f5e107",\r\n "gasUsed": "0xb507",\r\n "logIndex": "0x0",\r\n "transactionHash": "0x7ba24f7b5bb5dcfdfeb4bacf587e0a8e63c7d7c39b9a5d05a0337c232a8b230d",\r\n "transactionIndex": "0x0"\r\n }\r\n ]\r\n}\n'})})]})]})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(b,{...e})}):b(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>c});t(6540);var n=t(8215);const s={tabItem:"tabItem_Ymn6"};var a=t(4848);function c(e){let{children:r,hidden:t,className:c}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,c),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>k});var n=t(6540),s=t(8215),a=t(3104),c=t(6347),o=t(205),l=t(7485),i=t(1682),d=t(9466);function u(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(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)??[]}function b(e){const{values:r,children:t}=e;return(0,n.useMemo)((()=>{const e=r??function(e){return u(e).map((e=>{let{props:{value:r,label:t,attributes:n,default:s}}=e;return{value:r,label:t,attributes:n,default:s}}))}(t);return function(e){const r=(0,i.X)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[r,t])}function h(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const s=(0,c.W6)(),a=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)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 t??null}({queryString:r,groupId:t});return[(0,l.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const r=new URLSearchParams(s.location.search);r.set(a,e),s.replace({...s.location,search:r.toString()})}),[a,s])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:s}=e,a=b(e),[c,l]=(0,n.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(r){if(!h({value:r,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:r,tabValues:a}))),[i,u]=p({queryString:t,groupId:s}),[f,x]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[s,a]=(0,d.Dv)(t);return[s,(0,n.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),m=(()=>{const e=i??f;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{m&&l(m)}),[m]);return{selectedValue:c,selectValue:(0,n.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),x(e)}),[u,x,a]),tabValues:a}}var x=t(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=t(4848);function j(e){let{className:r,block:t,selectedValue:n,selectValue:c,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:i}=(0,a.a_)(),d=e=>{const r=e.currentTarget,t=l.indexOf(r),s=o[t].value;s!==n&&(i(r),c(s))},u=e=>{let r=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},r),children:o.map((e=>{let{value:r,label:t,attributes:a}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:n===r?0:-1,"aria-selected":n===r,ref:e=>l.push(e),onKeyDown:u,onClick:d,...a,className:(0,s.A)("tabs__item",m.tabItem,a?.className,{"tabs__item--active":n===r}),children:t??r},r)}))})}function v(e){let{lazy:r,children:t,selectedValue:s}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,n.cloneElement)(e,{key:r,hidden:e.props.value!==s})))})}function y(e){const r=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",m.tabList),children:[(0,g.jsx)(j,{...r,...e}),(0,g.jsx)(v,{...r,...e})]})}function k(e){const r=(0,x.A)();return(0,g.jsx)(y,{...e,children:u(e.children)},String(r))}},8453:(e,r,t)=>{t.d(r,{R:()=>c,x:()=>o});var n=t(6540);const s={},a=n.createContext(s);function c(e){const r=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.9ac6642b.js b/assets/js/aba21aa0.9ac6642b.js new file mode 100644 index 00000000..0c1598dd --- /dev/null +++ b/assets/js/aba21aa0.9ac6642b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5742],{7093:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/acecf23e.dee0de35.js b/assets/js/acecf23e.dee0de35.js new file mode 100644 index 00000000..5bf45725 --- /dev/null +++ b/assets/js/acecf23e.dee0de35.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1903],{1912:e=>{e.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b2b675dd.87d30f11.js b/assets/js/b2b675dd.87d30f11.js deleted file mode 100644 index 8fecedc0..00000000 --- a/assets/js/b2b675dd.87d30f11.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[533],{8017:function(e){e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b2c52ba9.188ae51a.js b/assets/js/b2c52ba9.188ae51a.js new file mode 100644 index 00000000..5d0d6787 --- /dev/null +++ b/assets/js/b2c52ba9.188ae51a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[893],{2743:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var n=t(4848),r=t(8453);const a={sidebar_position:1},s="Overview of Bitlayer's Design",o={id:"BitlayerArchitecture/BitlayerDesign",title:"Overview of Bitlayer's Design",description:"Technical White Paper",source:"@site/docs/BitlayerArchitecture/BitlayerDesign.md",sourceDirName:"BitlayerArchitecture",slug:"/BitlayerArchitecture/BitlayerDesign",permalink:"/docs/BitlayerArchitecture/BitlayerDesign",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Bitlayer Architecture",permalink:"/docs/category/bitlayer-architecture"},next:{title:"Layered Virtual Machine (LVM)",permalink:"/docs/BitlayerArchitecture/LVM"}},c={},l=[{value:"Technical White Paper",id:"technical-white-paper",level:2},{value:"Introduction",id:"introduction",level:2},{value:"1. Transaction Processing",id:"1-transaction-processing",level:2},{value:"2. Transaction Verification",id:"2-transaction-verification",level:2},{value:"3. Asset Bridge",id:"3-asset-bridge",level:2}];function h(e){const i={a:"a",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h1,{id:"overview-of-bitlayers-design",children:"Overview of Bitlayer's Design"}),"\n",(0,n.jsx)(i.h2,{id:"technical-white-paper",children:"Technical White Paper"}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.a,{href:"https://static.bitlayer.org/Bitlayer-Technical-Whitepaper.pdf",children:"Bitlayer: A Bitcoin Computational Layer Architecture Based on the BitVM Paradigm"})}),"\n",(0,n.jsx)(i.h2,{id:"introduction",children:"Introduction"}),"\n",(0,n.jsx)(i.p,{children:"Bitlayer has revolutionized the verification process for Layer 2 transactions using optimistic execution, while keeping the Bitcoin protocol intact. Its architecture comprises transaction processing, verification, and asset bridging components. Transaction processing involves a sequencer and a Layered Virtual Machine (LVM), optimizing transaction handling and computational efficiency. Transaction verification, managed by provers and challengers, ensures transaction validity and compliance with network rules. They collaborate to complete the entire process from Layer 2 transaction handling to Layer 1 confirmation, maintaining transaction security and integrity throughout the process. Bitlayer's assets bridge components further enhance its capabilities by enabling interoperability between Layer 2 and Layer 1 networks, facilitating secure asset transfer across blockchain layers."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"The Architecture of Bitlayer",src:t(3633).A+"",width:"4440",height:"2832"})}),"\n",(0,n.jsx)(i.h2,{id:"1-transaction-processing",children:"1. Transaction Processing"}),"\n",(0,n.jsx)(i.p,{children:"Transaction Processing, as illustrated in the figure above, involves the sequencer and Layered Virtual Machine. These components are responsible for the entire transaction handling, starting from transaction acceptance to executing the output."}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Sequencer"}),": Like other Layer 2 solutions, the sequencer in Bitlayer is responsible for collecting cached transactions and sorting them, serving as the entry point for transactions in Bitlayer."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Layered Virtual Machine (LVM)"}),": The LVM is the computing component of Bitlayer, responsible for executing smart contracts and generating the latest states and zero-knowledge proof. Challengers then use this proof to challenge the execution results."]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"2-transaction-verification",children:"2. Transaction Verification"}),"\n",(0,n.jsx)(i.p,{children:"In Bitlayer, transaction verification is achieved by a zero-knowledge-based optimistic mechanism between the prover and challenger."}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Prover"}),": The Prover is responsible for submitting Layer 2 transactions and states of execution to the Layer 1 chain as described above. It also reveals zero-knowledge proofs on the chain when getting challenged."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Challenger"}),": The Challenger is responsible for verifying the execution results submitted by the Prover through states of execution and zero-knowledge proof verification. If malicious behavior is detected, the Challenger initiates a challenge process to generate fraud proofs including invalid zero-knowledge proofs and submits them to the Layer 1 chain."]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"3-asset-bridge",children:"3. Asset Bridge"}),"\n",(0,n.jsx)(i.p,{children:"The Bridge acts as a crucial component in Bitlayer's infrastructure, facilitating the seamless movement of assets between Layer 2 and Layer 1. Its primary responsibility is to ensure the secure transfer of user assets through an innovative combination of OP-DLC and BitVM."})]})}function d(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},3633:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/BitlayerDesign-883d2e8d59a279b9271697a97eae85c5.png"},8453:(e,i,t)=>{t.d(i,{R:()=>s,x:()=>o});var n=t(6540);const r={},a=n.createContext(r);function s(e){const i=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),n.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b2c52ba9.3fa9113a.js b/assets/js/b2c52ba9.3fa9113a.js deleted file mode 100644 index 8ec5971a..00000000 --- a/assets/js/b2c52ba9.3fa9113a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9222],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function 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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=l(r),d=i,f=h["".concat(c,".").concat(d)]||h[d]||p[d]||a;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.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.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l<a;l++)o[l]=r[l];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}h.displayName="MDXCreateElement"},346:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return s},contentTitle:function(){return c},metadata:function(){return l},assets:function(){return u},toc:function(){return p},default:function(){return d}});var n=r(7462),i=r(3366),a=(r(7294),r(3905)),o=["components"],s={sidebar_position:1},c="Overview of Bitlayer's Design",l={unversionedId:"BitlayerArchitecture/BitlayerDesign",id:"BitlayerArchitecture/BitlayerDesign",title:"Overview of Bitlayer's Design",description:"Technical White Paper",source:"@site/docs/BitlayerArchitecture/BitlayerDesign.md",sourceDirName:"BitlayerArchitecture",slug:"/BitlayerArchitecture/BitlayerDesign",permalink:"/docs/BitlayerArchitecture/BitlayerDesign",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Bitlayer Architecture",permalink:"/docs/category/bitlayer-architecture"},next:{title:"Layered Virtual Machine (LVM)",permalink:"/docs/BitlayerArchitecture/LVM"}},u={},p=[{value:"Technical White Paper",id:"technical-white-paper",level:2},{value:"Introduction",id:"introduction",level:2},{value:"1. Transaction Processing",id:"1-transaction-processing",level:2},{value:"2. Transaction Verification",id:"2-transaction-verification",level:2},{value:"3. Asset Bridge",id:"3-asset-bridge",level:2}],h={toc:p};function d(e){var t=e.components,s=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,n.Z)({},h,s,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"overview-of-bitlayers-design"},"Overview of Bitlayer's Design"),(0,a.kt)("h2",{id:"technical-white-paper"},"Technical White Paper"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://static.bitlayer.org/Bitlayer-Technical-Whitepaper.pdf"},"Bitlayer: A Bitcoin Computational Layer Architecture Based on the BitVM Paradigm")),(0,a.kt)("h2",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"Bitlayer has revolutionized the verification process for Layer 2 transactions using optimistic execution, while keeping the Bitcoin protocol intact. Its architecture comprises transaction processing, verification, and asset bridging components. Transaction processing involves a sequencer and a Layered Virtual Machine (LVM), optimizing transaction handling and computational efficiency. Transaction verification, managed by provers and challengers, ensures transaction validity and compliance with network rules. They collaborate to complete the entire process from Layer 2 transaction handling to Layer 1 confirmation, maintaining transaction security and integrity throughout the process. Bitlayer's assets bridge components further enhance its capabilities by enabling interoperability between Layer 2 and Layer 1 networks, facilitating secure asset transfer across blockchain layers."),(0,a.kt)("p",null,(0,a.kt)("img",{loading:"lazy",alt:"The Architecture of Bitlayer",src:r(9688).Z,width:"4440",height:"2832"})),(0,a.kt)("h2",{id:"1-transaction-processing"},"1. Transaction Processing"),(0,a.kt)("p",null,"Transaction Processing, as illustrated in the figure above, involves the sequencer and Layered Virtual Machine. These components are responsible for the entire transaction handling, starting from transaction acceptance to executing the output."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Sequencer"),": Like other Layer 2 solutions, the sequencer in Bitlayer is responsible for collecting cached transactions and sorting them, serving as the entry point for transactions in Bitlayer."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Layered Virtual Machine (LVM)"),": The LVM is the computing component of Bitlayer, responsible for executing smart contracts and generating the latest states and zero-knowledge proof. Challengers then use this proof to challenge the execution results.")),(0,a.kt)("h2",{id:"2-transaction-verification"},"2. Transaction Verification"),(0,a.kt)("p",null,"In Bitlayer, transaction verification is achieved by a zero-knowledge-based optimistic mechanism between the prover and challenger."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Prover"),": The Prover is responsible for submitting Layer 2 transactions and states of execution to the Layer 1 chain as described above. It also reveals zero-knowledge proofs on the chain when getting challenged."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Challenger"),": The Challenger is responsible for verifying the execution results submitted by the Prover through states of execution and zero-knowledge proof verification. If malicious behavior is detected, the Challenger initiates a challenge process to generate fraud proofs including invalid zero-knowledge proofs and submits them to the Layer 1 chain.")),(0,a.kt)("h2",{id:"3-asset-bridge"},"3. Asset Bridge"),(0,a.kt)("p",null,"The Bridge acts as a crucial component in Bitlayer's infrastructure, facilitating the seamless movement of assets between Layer 2 and Layer 1. Its primary responsibility is to ensure the secure transfer of user assets through an innovative combination of OP-DLC and BitVM."))}d.isMDXComponent=!0},9688:function(e,t,r){t.Z=r.p+"assets/images/BitlayerDesign-883d2e8d59a279b9271697a97eae85c5.png"}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.6d806d8a.js b/assets/js/b2f554cd.6d806d8a.js deleted file mode 100644 index aa55984b..00000000 --- a/assets/js/b2f554cd.6d806d8a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1477],{10:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"Bitlayer: Amplifying Bitcoin","metadata":{"permalink":"/blog/Bitlayer: Amplifying Bitcoin","source":"@site/blog/2024-03-01-first-blog-post.md","title":"Bitlayer: Amplifying Bitcoin","description":"Bitcoin is changing. Drastically.","date":"2024-03-01T00:00:00.000Z","formattedDate":"March 1, 2024","tags":[{"label":"Hello Bitlayer","permalink":"/blog/tags/hello-bitlayer"}],"readingTime":9.435,"truncated":false,"authors":[{"name":"Bitlayer","title":"The First Bitcoin security - equivalent Layer 2 based on BitVM.","url":"https://medium.com/@Bitlayer","image_url":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4","imageURL":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"}],"frontMatter":{"slug":"Bitlayer: Amplifying Bitcoin","title":"Bitlayer: Amplifying Bitcoin","authors":{"name":"Bitlayer","title":"The First Bitcoin security - equivalent Layer 2 based on BitVM.","url":"https://medium.com/@Bitlayer","image_url":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4","imageURL":"https://avatars.githubusercontent.com/u/153826528?s=200&v=4"},"tags":["Hello Bitlayer"]}},"content":"Bitcoin is changing. Drastically.\\n\\nAnd the Bitcoin halving is less than 60 days away\u2026.\\n\\nA new \u201corder\u201d of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs \u2014 maybe a maxi\u2019s worst enemy \u2014 are coming to Bitcoin.\\n\\nBut at this point, if you don\u2019t at least understand the trade-offs, then you\u2019re not listening.\\n\\nInscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s\u2026these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.\\n\\nAnother signal, perhaps the biggest of them all, was the SEC\u2019s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.\\n\\nIt\u2019s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:\\n\\nIncreased security from innumerable new transaction fees (especially as mining rewards decrease)\\nInflows of buyers and thriving new global market economies previously blocked by regulation\\nCountless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting\u2026\\nIntroduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming\\n\u2026and all the upside we would otherwise leave on the table, all the innovations and applications we can\u2019t currently conceive\\nDespite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they\u2019re storming their way in.\\n\\nThough, their path is not easy.\\n\\nFor years, the unique technical characteristics of Bitcoin and the protocol\u2019s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.\\n\\nThe Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.\\n\\nThe market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.\\n\\nA solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.\\n\\nIn the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network\u2019s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin\u2019s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.\\n\\n\u201cAs long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,\u201d stated Bitlayer cofounder Charlie Hu.\\n\\nA disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.\\n\\nWelcome to Bitlayer.\\n\\nBitlayer\u2019s Mission\\nBitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It\u2019s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.\\n\\n\u201cBitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,\u201d said Kevin He, cofounder at Bitlayer.\\n\\nWith hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.\\n\\nBitlayer\u2019s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group\u2019s web3 tech head.\\n\\nBitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.\\n\\nThe solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.\\n\\nBuilding on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.\\n\\nIs Bitlayer the Next Big Thing for Bitcoin\uff1f\\nBitVM\u2019s value is gaining increased recognition by developers as many teams continually work towards its implementation.\\n\\nBitlayer\u2019s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).\\n\\nThe project\u2019s tech team has abstracted three key tasks from these inspirations:\\n\\nTrustless entry and exit of Layer 1 assets\\nState transitions using a Turing-complete Layer 2 virtual machine\\nLayer 1 verification of the validity of Layer 2 state transitions\\nThe security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.\\n\\nThis traditional approach results in users completely losing control of their assets, while the platform\u2019s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.\\n\\nThe verification of Layer 2 state transitions operates on a principle comparable to proving one\u2019s innocence\u2013 an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin\u2019s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin\u2019s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.\\n\\nThrough integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).\\n\\nCompatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.\\n\\nAbove is an outline of preliminary ideation for Bitlayer.\\n\\nFollowing the publication of the Bitlayer white paper, expect more insight into the project\u2019s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.\\n\\nBitlayer is Making History on Bitcoin\\nBitcoin initially emerged and endured as an asset or \u201cstore of value\u201d. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards \u201cbuilding on Bitcoin\u201d, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum\u2019s.\\n\\nAt present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.\\n\\nBitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM\u2019s technology, and promoting the implementation of BitVM.\\n\\nBitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin\u2019s value, and harnessing its security, is the open future we all desire and deserve.\\n\\nA focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin\u2019s scalability challenges remains a key endeavor for the team.\\n\\nExpansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.\\n\\nWith a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don\u2019t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?\\n\\nShouldn\u2019t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?\\n\\nBitcoin has been left in the corner so far. But things might soon change.\\n\\nSatoshi Nakamoto once predicted: \u201cIn a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.\u201d\\n\\nNow, at the historical juncture of Bitcoin\u2019s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy."}]}')}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.8a849516.js b/assets/js/c4f5d8e4.8a849516.js new file mode 100644 index 00000000..11af064d --- /dev/null +++ b/assets/js/c4f5d8e4.8a849516.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2634],{192:(e,t,s)=>{s.r(t),s.d(t,{default:()=>r});s(6540);var u=s(6347),n=s(4848);function r(){return(0,n.jsx)(u.rd,{to:"/docs/Introduction"})}}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.b9cc87af.js b/assets/js/c4f5d8e4.b9cc87af.js deleted file mode 100644 index 6fb79df8..00000000 --- a/assets/js/c4f5d8e4.b9cc87af.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4195],{2841:function(e,t,n){n.r(t),n.d(t,{default:function(){return r}});var u=n(7294),c=n(6775);function r(){return u.createElement(c.l_,{to:"/docs/Introduction"})}}}]); \ No newline at end of file diff --git a/assets/js/c4fdee62.68113f91.js b/assets/js/c4fdee62.68113f91.js deleted file mode 100644 index f03b3cf4..00000000 --- a/assets/js/c4fdee62.68113f91.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1760],{1338:function(e){e.exports=JSON.parse('{"title":"Bitlayer Network","slug":"/category/bitlayer-network","permalink":"/docs/category/bitlayer-network","navigation":{"previous":{"title":"Compile, Run and Deploy","permalink":"/docs/Build/Compile and Run"},"next":{"title":"About Gas","permalink":"/docs/BitlayerNetwork/AboutGas"}}}')}}]); \ No newline at end of file diff --git a/assets/js/c525c73d.b78fbef1.js b/assets/js/c525c73d.b78fbef1.js deleted file mode 100644 index beedec48..00000000 --- a/assets/js/c525c73d.b78fbef1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5529],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(7294);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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(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}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},w=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),w=s(n),f=a,d=w["".concat(l,".").concat(f)]||w[f]||u[f]||o;return n?r.createElement(d,i(i({ref:t},p),{},{components:n})):r.createElement(d,i({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=w;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}w.displayName="MDXCreateElement"},6886:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return c},contentTitle:function(){return l},metadata:function(){return s},assets:function(){return p},toc:function(){return u},default:function(){return f}});var r=n(7462),a=n(3366),o=(n(7294),n(3905)),i=["components"],c={sidebar_position:3},l="wBTC",s={unversionedId:"FAQs/WBTC",id:"FAQs/WBTC",title:"wBTC",description:"\u4e2d\u6587\u7248\u672c",source:"@site/docs/FAQs/WBTC.md",sourceDirName:"FAQs",slug:"/FAQs/WBTC",permalink:"/docs/FAQs/WBTC",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Contact Details",permalink:"/docs/FAQs/Contact Details"},next:{title:"DefiLlama TVL Integration",permalink:"/docs/FAQs/Defillama TVL integration"}},p={},u=[{value:"\u4e2d\u6587\u7248\u672c",id:"\u4e2d\u6587\u7248\u672c",level:2},{value:"wBTC \u5151\u6362",id:"wbtc-\u5151\u6362",level:3},{value:"Macaron Swap",id:"macaron-swap",level:4},{value:"English Version",id:"english-version",level:2},{value:"wBTC",id:"wbtc-1",level:3},{value:"Macaron Swap",id:"macaron-swap-1",level:4}],w={toc:u};function f(e){var t=e.components,c=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,r.Z)({},w,c,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"wbtc"},"wBTC"),(0,o.kt)("h2",{id:"\u4e2d\u6587\u7248\u672c"},"\u4e2d\u6587\u7248\u672c"),(0,o.kt)("h3",{id:"wbtc-\u5151\u6362"},"wBTC \u5151\u6362"),(0,o.kt)("p",null,"Bitlayer \u4f7f\u7528 BTC \u4f5c\u4e3a Gas Token\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u90fd\u4f1a\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684 wBTC token \u65b9\u4fbf\u5404\u7c7b\u534f\u8bae\u4ea4\u4e92\u3002"),(0,o.kt)("p",null,"\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528 Dex \u7684 swap \u529f\u80fd\u5b9e\u73b0\u5151\u6362\u3002"),(0,o.kt)("h4",{id:"macaron-swap"},"Macaron Swap"),(0,o.kt)("p",null,"\u7528\u6237\u5728Macaron Swap\u754c\u9762\u628aBTC\u5151\u6362\u6210wBTC"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.macaron.xyz/#/swapl"},"https://www.macaron.xyz/#/swapl")),(0,o.kt)("p",null,(0,o.kt)("img",{loading:"lazy",alt:"swap",src:n(6203).Z,width:"1472",height:"1200"})),(0,o.kt)("h2",{id:"english-version"},"English Version"),(0,o.kt)("h3",{id:"wbtc-1"},"wBTC"),(0,o.kt)("p",null,"Bitlayer uses BTC as a Gas Token, and typically there is a corresponding wBTC token to facilitate interactions with various protocols."),(0,o.kt)("p",null,"Users can exchange BTC for wBTC using the swap function on a Dex."),(0,o.kt)("h4",{id:"macaron-swap-1"},"Macaron Swap"),(0,o.kt)("p",null,"Users can exchange BTC for wBTC on the Macaron Swap interface."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.macaron.xyz/#/swapl"},"https://www.macaron.xyz/#/swapl")),(0,o.kt)("p",null,(0,o.kt)("img",{loading:"lazy",alt:"swap",src:n(6203).Z,width:"1472",height:"1200"})))}f.isMDXComponent=!0},6203:function(e,t,n){t.Z=n.p+"assets/images/macaron-btc-wbtc-swap-e5aaf46a7941bb18aee7734fc01a6065.jpg"}}]); \ No newline at end of file diff --git a/assets/js/c525c73d.ecec140d.js b/assets/js/c525c73d.ecec140d.js new file mode 100644 index 00000000..4eed3e09 --- /dev/null +++ b/assets/js/c525c73d.ecec140d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6999],{384:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var a=s(4848),t=s(8453);const i={sidebar_position:3},r="wBTC",c={id:"FAQs/WBTC",title:"wBTC",description:"\u4e2d\u6587\u7248\u672c",source:"@site/docs/FAQs/WBTC.md",sourceDirName:"FAQs",slug:"/FAQs/WBTC",permalink:"/docs/FAQs/WBTC",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Contact Details",permalink:"/docs/FAQs/Contact Details"},next:{title:"DefiLlama TVL Integration",permalink:"/docs/FAQs/Defillama TVL integration"}},o={},l=[{value:"\u4e2d\u6587\u7248\u672c",id:"\u4e2d\u6587\u7248\u672c",level:2},{value:"wBTC \u5151\u6362",id:"wbtc-\u5151\u6362",level:3},{value:"Macaron Swap",id:"macaron-swap",level:4},{value:"English Version",id:"english-version",level:2},{value:"wBTC",id:"wbtc-1",level:3},{value:"Macaron Swap",id:"macaron-swap-1",level:4}];function h(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"wbtc",children:"wBTC"}),"\n",(0,a.jsx)(n.h2,{id:"\u4e2d\u6587\u7248\u672c",children:"\u4e2d\u6587\u7248\u672c"}),"\n",(0,a.jsx)(n.h3,{id:"wbtc-\u5151\u6362",children:"wBTC \u5151\u6362"}),"\n",(0,a.jsx)(n.p,{children:"Bitlayer \u4f7f\u7528 BTC \u4f5c\u4e3a Gas Token\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u90fd\u4f1a\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684 wBTC token \u65b9\u4fbf\u5404\u7c7b\u534f\u8bae\u4ea4\u4e92\u3002"}),"\n",(0,a.jsx)(n.p,{children:"\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528 Dex \u7684 swap \u529f\u80fd\u5b9e\u73b0\u5151\u6362\u3002"}),"\n",(0,a.jsx)(n.h4,{id:"macaron-swap",children:"Macaron Swap"}),"\n",(0,a.jsx)(n.p,{children:"\u7528\u6237\u5728Macaron Swap\u754c\u9762\u628aBTC\u5151\u6362\u6210wBTC"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.a,{href:"https://www.macaron.xyz/#/swapl",children:"https://www.macaron.xyz/#/swapl"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"swap",src:s(551).A+"",width:"1472",height:"1200"})}),"\n",(0,a.jsx)(n.h2,{id:"english-version",children:"English Version"}),"\n",(0,a.jsx)(n.h3,{id:"wbtc-1",children:"wBTC"}),"\n",(0,a.jsx)(n.p,{children:"Bitlayer uses BTC as a Gas Token, and typically there is a corresponding wBTC token to facilitate interactions with various protocols."}),"\n",(0,a.jsx)(n.p,{children:"Users can exchange BTC for wBTC using the swap function on a Dex."}),"\n",(0,a.jsx)(n.h4,{id:"macaron-swap-1",children:"Macaron Swap"}),"\n",(0,a.jsx)(n.p,{children:"Users can exchange BTC for wBTC on the Macaron Swap interface."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.a,{href:"https://www.macaron.xyz/#/swapl",children:"https://www.macaron.xyz/#/swapl"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"swap",src:s(551).A+"",width:"1472",height:"1200"})})]})}function d(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},551:(e,n,s)=>{s.d(n,{A:()=>a});const a=s.p+"assets/images/macaron-btc-wbtc-swap-e5aaf46a7941bb18aee7734fc01a6065.jpg"},8453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>c});var a=s(6540);const t={},i=a.createContext(t);function r(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c889d586.7c8b1f7a.js b/assets/js/c889d586.7c8b1f7a.js deleted file mode 100644 index 38c4ae40..00000000 --- a/assets/js/c889d586.7c8b1f7a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[914],{3053:function(e){e.exports=JSON.parse('{"title":"Bitlayer Scan APIs","description":"The Bitlayer Chain Developer APIs are provided as a community service and without warranty, so please use what you need and no more. We support both GET/POST requests and there is a rate limit of 5 calls per sec/IP. Note: Source attribution via a link back or mention that your app is \'\'Powered by api-testnet.bitlayer.org/scan APIs\'\' is required except for personal/private usage.","slug":"/category/bitlayer-scan-apis","permalink":"/docs/category/bitlayer-scan-apis","navigation":{"previous":{"title":"Bitlayer\'s Transaction Lifecycle","permalink":"/docs/BitlayerArchitecture/TransactionLifecycle"},"next":{"title":"Accounts","permalink":"/docs/Bitlayer Scan APIs/Accounts"}}}')}}]); \ No newline at end of file diff --git a/assets/js/c8dfcdb7.9822ccf4.js b/assets/js/c8dfcdb7.9822ccf4.js new file mode 100644 index 00000000..58bd43a7 --- /dev/null +++ b/assets/js/c8dfcdb7.9822ccf4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7120],{7558:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"FAQs","description":"5 minutes to find your answer.","slug":"/category/faqs","permalink":"/docs/category/faqs","sidebar":"docs","navigation":{"previous":{"title":"BTC Connect (Account Abstraction)","permalink":"/docs/DeveloperResources/BTC Connect"},"next":{"title":"Frequently Asked Questions","permalink":"/docs/FAQs/Frequently asked questions"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/c8ff74a9.52a0f294.js b/assets/js/c8ff74a9.52a0f294.js deleted file mode 100644 index 6ccad020..00000000 --- a/assets/js/c8ff74a9.52a0f294.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8864],{3905:function(t,e,r){r.d(e,{Zo:function(){return p},kt:function(){return m}});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){o(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function c(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)>=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var s=n.createContext({}),l=function(t){var e=n.useContext(s),r=e;return t&&(r="function"==typeof t?t(e):a(a({},e),t)),r},p=function(t){var e=l(t.components);return n.createElement(s.Provider,{value:e},t.children)},u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},f=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,i=t.originalType,s=t.parentName,p=c(t,["components","mdxType","originalType","parentName"]),f=l(r),m=o,y=f["".concat(s,".").concat(m)]||f[m]||u[m]||i;return r?n.createElement(y,a(a({ref:e},p),{},{components:r})):n.createElement(y,a({ref:e},p))}));function m(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c.mdxType="string"==typeof t?t:o,a[1]=c;for(var l=2;l<i;l++)a[l]=r[l];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},9052:function(t,e,r){r.r(e),r.d(e,{frontMatter:function(){return c},contentTitle:function(){return s},metadata:function(){return l},assets:function(){return p},toc:function(){return u},default:function(){return m}});var n=r(7462),o=r(3366),i=(r(7294),r(3905)),a=["components"],c={sidebar_position:2},s="Contact Details",l={unversionedId:"FAQs/Contact Details",id:"FAQs/Contact Details",title:"Contact Details",description:"Website\uff1ahttps://www.bitlayer.org/",source:"@site/docs/FAQs/Contact Details.md",sourceDirName:"FAQs",slug:"/FAQs/Contact Details",permalink:"/docs/FAQs/Contact Details",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Frequently Asked Questions",permalink:"/docs/FAQs/Frequently asked questions"},next:{title:"wBTC",permalink:"/docs/FAQs/WBTC"}},p={},u=[],f={toc:u};function m(t){var e=t.components,r=(0,o.Z)(t,a);return(0,i.kt)("wrapper",(0,n.Z)({},f,r,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"contact-details"},"Contact Details"),(0,i.kt)("p",null,"Website\uff1a",(0,i.kt)("a",{parentName:"p",href:"https://www.bitlayer.org/"},"https://www.bitlayer.org/")),(0,i.kt)("p",null,"Twitter: ",(0,i.kt)("a",{parentName:"p",href:"https://twitter.com/BitLayerLabs"},"https://twitter.com/BitLayerLabs")),(0,i.kt)("p",null,"Discord: ",(0,i.kt)("a",{parentName:"p",href:"https://discord.com/invite/GGSjNyD8nj"},"https://discord.com/invite/GGSjNyD8nj")),(0,i.kt)("p",null,"Telegram: ",(0,i.kt)("a",{parentName:"p",href:"https://t.me/bitlayerofficial"},"https://t.me/bitlayerofficial")),(0,i.kt)("p",null,"Github: ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/bitlayer-org"},"https://github.com/bitlayer-org")),(0,i.kt)("p",null,"Medium\uff1a",(0,i.kt)("a",{parentName:"p",href:"https://medium.com/@Bitlayer"},"https://medium.com/@Bitlayer")),(0,i.kt)("p",null,"Email: ",(0,i.kt)("a",{parentName:"p",href:"mailto:build@bitlayer.org"},"build@bitlayer.org")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c8ff74a9.882c7c5f.js b/assets/js/c8ff74a9.882c7c5f.js new file mode 100644 index 00000000..42d4926c --- /dev/null +++ b/assets/js/c8ff74a9.882c7c5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2089],{3432:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var i=s(4848),n=s(8453);const r={sidebar_position:2},o="Contact Details",a={id:"FAQs/Contact Details",title:"Contact Details",description:"Website\uff1ahttps://www.bitlayer.org/",source:"@site/docs/FAQs/Contact Details.md",sourceDirName:"FAQs",slug:"/FAQs/Contact Details",permalink:"/docs/FAQs/Contact Details",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Frequently Asked Questions",permalink:"/docs/FAQs/Frequently asked questions"},next:{title:"wBTC",permalink:"/docs/FAQs/WBTC"}},c={},l=[];function d(t){const e={a:"a",h1:"h1",p:"p",...(0,n.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"contact-details",children:"Contact Details"}),"\n",(0,i.jsxs)(e.p,{children:["Website\uff1a",(0,i.jsx)(e.a,{href:"https://www.bitlayer.org/",children:"https://www.bitlayer.org/"})]}),"\n",(0,i.jsxs)(e.p,{children:["Twitter: ",(0,i.jsx)(e.a,{href:"https://twitter.com/BitLayerLabs",children:"https://twitter.com/BitLayerLabs"})]}),"\n",(0,i.jsxs)(e.p,{children:["Discord: ",(0,i.jsx)(e.a,{href:"https://discord.com/invite/GGSjNyD8nj",children:"https://discord.com/invite/GGSjNyD8nj"})]}),"\n",(0,i.jsxs)(e.p,{children:["Telegram: ",(0,i.jsx)(e.a,{href:"https://t.me/bitlayerofficial",children:"https://t.me/bitlayerofficial"})]}),"\n",(0,i.jsxs)(e.p,{children:["Github: ",(0,i.jsx)(e.a,{href:"https://github.com/bitlayer-org",children:"https://github.com/bitlayer-org"})]}),"\n",(0,i.jsxs)(e.p,{children:["Medium\uff1a",(0,i.jsx)(e.a,{href:"https://medium.com/@Bitlayer",children:"https://medium.com/@Bitlayer"})]}),"\n",(0,i.jsxs)(e.p,{children:["Email: ",(0,i.jsx)(e.a,{href:"mailto:build@bitlayer.org",children:"build@bitlayer.org"})]})]})}function h(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(d,{...t})}):d(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>o,x:()=>a});var i=s(6540);const n={},r=i.createContext(n);function o(t){const e=i.useContext(r);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:o(t.components),i.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.4b4e889f.js b/assets/js/ccc49370.4b4e889f.js new file mode 100644 index 00000000..96c95f7d --- /dev/null +++ b/assets/js/ccc49370.4b4e889f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3249],{3858:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});n(6540);var i=n(8215),a=n(1213),o=n(7559),r=n(7131),s=n(6535),l=n(4651),c=n(1312),d=n(9022),u=n(4848);function m(e){const{nextItem:t,prevItem:n}=e;return(0,u.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.T)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[n&&(0,u.jsx)(d.A,{...n,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer Post"})}),t&&(0,u.jsx)(d.A,{...t,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older Post"}),isNext:!0})]})}function g(){const{assets:e,metadata:t}=(0,r.e)(),{title:n,description:i,date:o,tags:s,authors:l,frontMatter:c}=t,{keywords:d}=c,m=e.image??c.image;return(0,u.jsxs)(a.be,{title:n,description:i,keywords:d,image:m,children:[(0,u.jsx)("meta",{property:"og:type",content:"article"}),(0,u.jsx)("meta",{property:"article:published_time",content:o}),l.some((e=>e.url))&&(0,u.jsx)("meta",{property:"article:author",content:l.map((e=>e.url)).filter(Boolean).join(",")}),s.length>0&&(0,u.jsx)("meta",{property:"article:tag",content:s.map((e=>e.label)).join(",")})]})}var h=n(5260),f=n(6676);function p(){const e=(0,f.J)();return(0,u.jsx)(h.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var v=n(7763),x=n(996);function b(e){let{sidebar:t,children:n}=e;const{metadata:i,toc:a}=(0,r.e)(),{nextItem:o,prevItem:c,frontMatter:d,unlisted:g}=i,{hide_table_of_contents:h,toc_min_heading_level:f,toc_max_heading_level:p}=d;return(0,u.jsxs)(s.A,{sidebar:t,toc:!h&&a.length>0?(0,u.jsx)(v.A,{toc:a,minHeadingLevel:f,maxHeadingLevel:p}):void 0,children:[g&&(0,u.jsx)(x.A,{}),(0,u.jsx)(l.A,{children:n}),(o||c)&&(0,u.jsx)(m,{nextItem:o,prevItem:c})]})}function j(e){const t=e.content;return(0,u.jsx)(r.i,{content:e.content,isBlogPostPage:!0,children:(0,u.jsxs)(a.e3,{className:(0,i.A)(o.G.wrapper.blogPages,o.G.page.blogPostPage),children:[(0,u.jsx)(g,{}),(0,u.jsx)(p,{}),(0,u.jsx)(b,{sidebar:e.sidebar,children:(0,u.jsx)(t,{})})]})})}},7763:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var i=n(8215),a=n(5195);const o={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=n(4848);const s="table-of-contents__link toc-highlight",l="table-of-contents__link--active";function c(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,i.A)(o.tableOfContents,"thin-scrollbar",t),children:(0,r.jsx)(a.A,{...n,linkClassName:s,linkActiveClassName:l})})}},5195:(e,t,n)=>{n.d(t,{A:()=>f});var i=n(6540),a=n(6342);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const i=n.slice(2,e.level);e.parentIndex=Math.max(...i),n[e.level]=t}));const i=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):i.push(a)})),i}function r(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:i}=e;return t.flatMap((e=>{const t=r({toc:e.children,minHeadingLevel:n,maxHeadingLevel:i});return function(e){return e.level>=n&&e.level<=i}(e)?[{...e,children:t}]:t}))}function s(e){const t=e.getBoundingClientRect();return t.top===t.bottom?s(e.parentNode):t}function l(e,t){let{anchorTopOffset:n}=t;const i=e.find((e=>s(e).top>=n));if(i){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(s(i))?i:e[e.indexOf(i)-1]??null}return e[e.length-1]??null}function c(){const e=(0,i.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.p)();return(0,i.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,i.useRef)(void 0),n=c();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:r}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const i=[];for(let a=t;a<=n;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:o,maxHeadingLevel:r}),c=l(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.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===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}var u=n(8774),m=n(4848);function g(e){let{toc:t,className:n,linkClassName:i,isChild:a}=e;return t.length?(0,m.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(g,{isChild:!0,toc:e.children,className:n,linkClassName:i})]},e.id)))}):null}const h=i.memo(g);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:s="table-of-contents__link",linkActiveClassName:l,minHeadingLevel:c,maxHeadingLevel:u,...g}=e;const f=(0,a.p)(),p=c??f.tableOfContents.minHeadingLevel,v=u??f.tableOfContents.maxHeadingLevel,x=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>r({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:v});return d((0,i.useMemo)((()=>{if(s&&l)return{linkClassName:s,linkActiveClassName:l,minHeadingLevel:p,maxHeadingLevel:v}}),[s,l,p,v])),(0,m.jsx)(h,{toc:x,className:n,linkClassName:s,...g})}},996:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var i=n(8215),a=n(1312),o=n(5260),r=n(4848);function s(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,r.jsx)(o.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(7559),u=n(7293);function m(e){let{className:t}=e;return(0,r.jsx)(u.A,{type:"caution",title:(0,r.jsx)(s,{}),className:(0,i.A)(t,d.G.common.unlistedBanner),children:(0,r.jsx)(l,{})})}function g(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c,{}),(0,r.jsx)(m,{...e})]})}},6676:(e,t,n)=>{n.d(t,{k:()=>d,J:()=>u});var i=n(6025),a=n(4586),o=n(6803);var r=n(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(m);return{author:1===t.length?t[0]:t}}function c(e,t,n){return e?{image:g({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${n}`})}:{}}function d(e){const{siteConfig:t}=(0,a.A)(),{withBaseUrl:n}=(0,i.h)(),{metadata:{blogDescription:o,blogTitle:r,permalink:d}}=e,u=`${t.url}${d}`;return{"@context":"https://schema.org","@type":"Blog","@id":u,mainEntityOfPage:u,headline:r,description:o,blogPost:e.items.map((e=>function(e,t,n){const{assets:i,frontMatter:a,metadata:o}=e,{date:r,title:d,description:u,lastUpdatedAt:m}=o,g=i.image??a.image,h=a.keywords??[],f=`${t.url}${o.permalink}`,p=m?s(m):void 0;return{"@type":"BlogPosting","@id":f,mainEntityOfPage:f,url:f,headline:d,name:d,description:u,datePublished:r,...p?{dateModified:p}:{},...l(o.authors),...c(g,n,d),...h?{keywords:h}:{}}}(e.content,t,n)))}}function u(){const e=function(){const e=(0,o.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:n}=(0,r.e)(),{siteConfig:d}=(0,a.A)(),{withBaseUrl:u}=(0,i.h)(),{date:m,title:g,description:h,frontMatter:f,lastUpdatedAt:p}=n,v=t.image??f.image,x=f.keywords??[],b=p?s(p):void 0,j=`${d.url}${n.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":j,mainEntityOfPage:j,url:j,headline:g,name:g,description:h,datePublished:m,...b?{dateModified:b}:{},...l(n.authors),...c(v,u,g),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${d.url}${e.blogBasePath}`,name:e.blogTitle}}}function m(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function g(e){let{imageUrl:t,caption:n}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:n}}}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.a26eb8ad.js b/assets/js/ccc49370.a26eb8ad.js deleted file mode 100644 index a0a86196..00000000 --- a/assets/js/ccc49370.a26eb8ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6103],{8665:function(e,t,a){a.d(t,{Z:function(){return b}});var n=a(3366),l=a(7294),r=a(6010),i=a(2434),o=a(9960),s="sidebar_a9qW",m="sidebarItemTitle_uKok",c="sidebarItemList_Kvuv",u="sidebarItem_CF0Q",d="sidebarItemLink_miNk",g="sidebarItemLinkActive_RRTD",p=a(5999);function v(e){var t=e.sidebar;return 0===t.items.length?null:l.createElement("nav",{className:(0,r.Z)(s,"thin-scrollbar"),"aria-label":(0,p.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,r.Z)(m,"margin-bottom--md")},t.title),l.createElement("ul",{className:c},t.items.map((function(e){return l.createElement("li",{key:e.permalink,className:u},l.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:d,activeClassName:g},e.title))}))))}var h=["sidebar","toc","children"];function b(e){var t=e.sidebar,a=e.toc,o=e.children,s=(0,n.Z)(e,h),m=t&&t.items.length>0;return l.createElement(i.Z,s,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},m&&l.createElement("aside",{className:"col col--3"},l.createElement(v,{sidebar:t})),l.createElement("main",{className:(0,r.Z)("col",{"col--7":m,"col--9 col--offset-1":!m}),itemScope:!0,itemType:"http://schema.org/Blog"},o),a&&l.createElement("div",{className:"col col--2"},a))))}},8561:function(e,t,a){a.d(t,{Z:function(){return k}});var n=a(7294),l=a(6010),r=a(3905),i=a(5999),o=a(9960),s=a(4996),m=a(5450),c=a(8780),u=a(4689),d=a(6753),g="blogPostTitle_rzP5",p="blogPostData_Zg1s",v="blogPostDetailsFull_h6_j",h=a(62),b="image_o0gy";function E(e){var t=e.author,a=t.name,l=t.title,r=t.url,i=t.imageURL;return n.createElement("div",{className:"avatar margin-bottom--sm"},i&&n.createElement(o.Z,{className:"avatar__photo-link avatar__photo",href:r},n.createElement("img",{className:b,src:i,alt:a})),a&&n.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},n.createElement("div",{className:"avatar__name"},n.createElement(o.Z,{href:r,itemProp:"url"},n.createElement("span",{itemProp:"name"},a))),l&&n.createElement("small",{className:"avatar__subtitle",itemProp:"description"},l)))}var f="authorCol_FlmR",N="imageOnlyAuthorRow_trpF",_="imageOnlyAuthorCol_S2np";function Z(e){var t=e.authors,a=e.assets;if(0===t.length)return null;var r=t.every((function(e){return!e.name}));return n.createElement("div",{className:(0,l.Z)("margin-top--md margin-bottom--sm",r?N:"row")},t.map((function(e,t){var i;return n.createElement("div",{className:(0,l.Z)(!r&&"col col--6",r?_:f),key:t},n.createElement(E,{author:Object.assign({},e,{imageURL:null!=(i=a.authorsImageUrls[t])?i:e.imageURL})}))})))}function k(e){var t,a,b,E=(b=(0,m.c2)().selectMessage,function(e){var t=Math.ceil(e);return b(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),f=(0,s.C)().withBaseUrl,N=e.children,_=e.frontMatter,k=e.assets,P=e.metadata,L=e.truncated,C=e.isBlogPostPage,T=void 0!==C&&C,w=P.date,y=P.formattedDate,I=P.permalink,x=P.tags,A=P.readingTime,H=P.title,M=P.editUrl,R=P.authors,U=null!=(t=k.image)?t:_.image,B=!T&&L,D=x.length>0,O=T?"h1":"h2";return n.createElement("article",{className:T?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},n.createElement("header",null,n.createElement(O,{className:g,itemProp:"headline"},T?H:n.createElement(o.Z,{itemProp:"url",to:I},H)),n.createElement("div",{className:(0,l.Z)(p,"margin-vert--md")},n.createElement("time",{dateTime:w,itemProp:"datePublished"},y),void 0!==A&&n.createElement(n.Fragment,null," \xb7 ",E(A))),n.createElement(Z,{authors:R,assets:k})),U&&n.createElement("meta",{itemProp:"image",content:f(U,{absolute:!0})}),n.createElement("div",{id:T?c.blogPostContainerID:void 0,className:"markdown",itemProp:"articleBody"},n.createElement(r.Zo,{components:u.Z},N)),(D||L)&&n.createElement("footer",{className:(0,l.Z)("row docusaurus-mt-lg",(a={},a[v]=T,a))},D&&n.createElement("div",{className:(0,l.Z)("col",{"col--9":B})},n.createElement(h.Z,{tags:x})),T&&M&&n.createElement("div",{className:"col margin-top--sm"},n.createElement(d.Z,{editUrl:M})),B&&n.createElement("div",{className:(0,l.Z)("col text--right",{"col--3":D})},n.createElement(o.Z,{to:P.permalink,"aria-label":(0,i.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:H})},n.createElement("b",null,n.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},9360:function(e,t,a){a.r(t),a.d(t,{default:function(){return g}});var n=a(7294),l=a(1217),r=a(8665),i=a(8561),o=a(7462),s=a(5999),m=a(1750);function c(e){var t=e.nextItem,a=e.prevItem;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n.createElement("div",{className:"pagination-nav__item"},a&&n.createElement(m.Z,(0,o.Z)({},a,{subLabel:n.createElement(s.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")}))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t&&n.createElement(m.Z,(0,o.Z)({},t,{subLabel:n.createElement(s.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post")}))))}var u=a(5450),d=a(1575);function g(e){var t,a=e.content,o=e.sidebar,s=a.assets,m=a.metadata,g=m.title,p=m.description,v=m.nextItem,h=m.prevItem,b=m.date,E=m.tags,f=m.authors,N=m.frontMatter,_=N.hide_table_of_contents,Z=N.keywords,k=N.toc_min_heading_level,P=N.toc_max_heading_level,L=null!=(t=s.image)?t:N.image;return n.createElement(r.Z,{wrapperClassName:u.kM.wrapper.blogPages,pageClassName:u.kM.page.blogPostPage,sidebar:o,toc:!_&&a.toc&&a.toc.length>0?n.createElement(d.Z,{toc:a.toc,minHeadingLevel:k,maxHeadingLevel:P}):void 0},n.createElement(l.Z,{title:g,description:p,keywords:Z,image:L},n.createElement("meta",{property:"og:type",content:"article"}),n.createElement("meta",{property:"article:published_time",content:b}),f.some((function(e){return e.url}))&&n.createElement("meta",{property:"article:author",content:f.map((function(e){return e.url})).filter(Boolean).join(",")}),E.length>0&&n.createElement("meta",{property:"article:tag",content:E.map((function(e){return e.label})).join(",")})),n.createElement(i.Z,{frontMatter:N,assets:s,metadata:m,isBlogPostPage:!0},n.createElement(a,null)),(v||h)&&n.createElement(c,{nextItem:v,prevItem:h}))}},6753:function(e,t,a){a.d(t,{Z:function(){return d}});var n=a(7294),l=a(5999),r=a(7462),i=a(3366),o=a(6010),s="iconEdit_dcUD",m=["className"];function c(e){var t=e.className,a=(0,i.Z)(e,m);return n.createElement("svg",(0,r.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(s,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}var u=a(5450);function d(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:u.kM.common.editThisPage},n.createElement(c,null),n.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},1750:function(e,t,a){a.d(t,{Z:function(){return r}});var n=a(7294),l=a(9960);function r(e){var t=e.permalink,a=e.title,r=e.subLabel;return n.createElement(l.Z,{className:"pagination-nav__link",to:t},r&&n.createElement("div",{className:"pagination-nav__sublabel"},r),n.createElement("div",{className:"pagination-nav__label"},a))}},1575:function(e,t,a){a.d(t,{Z:function(){return c}});var n=a(7462),l=a(3366),r=a(7294),i=a(6010),o=a(5002),s="tableOfContents_cNA8",m=["className"];function c(e){var t=e.className,a=(0,l.Z)(e,m);return r.createElement("div",{className:(0,i.Z)(s,"thin-scrollbar",t)},r.createElement(o.Z,(0,n.Z)({},a,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))}},5002:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7462),l=a(3366),r=a(7294),i=a(5450),o=["toc","className","linkClassName","linkActiveClassName","minHeadingLevel","maxHeadingLevel"];function s(e){var t=e.toc,a=e.className,n=e.linkClassName,l=e.isChild;return t.length?r.createElement("ul",{className:l?void 0:a},t.map((function(e){return r.createElement("li",{key:e.id},r.createElement("a",{href:"#"+e.id,className:null!=n?n:void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(s,{isChild:!0,toc:e.children,className:a,linkClassName:n}))}))):null}function m(e){var t=e.toc,a=e.className,m=void 0===a?"table-of-contents table-of-contents__left-border":a,c=e.linkClassName,u=void 0===c?"table-of-contents__link":c,d=e.linkActiveClassName,g=void 0===d?void 0:d,p=e.minHeadingLevel,v=e.maxHeadingLevel,h=(0,l.Z)(e,o),b=(0,i.LU)(),E=null!=p?p:b.tableOfContents.minHeadingLevel,f=null!=v?v:b.tableOfContents.maxHeadingLevel,N=(0,i.b9)({toc:t,minHeadingLevel:E,maxHeadingLevel:f}),_=(0,r.useMemo)((function(){if(u&&g)return{linkClassName:u,linkActiveClassName:g,minHeadingLevel:E,maxHeadingLevel:f}}),[u,g,E,f]);return(0,i.Si)(_),r.createElement(s,(0,n.Z)({toc:N,className:m,linkClassName:u},h))}},7774:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),l=a(6010),r=a(9960),i="tag_hD8n",o="tagRegular_D6E_",s="tagWithCount_i0QQ";function m(e){var t,a=e.permalink,m=e.name,c=e.count;return n.createElement(r.Z,{href:a,className:(0,l.Z)(i,(t={},t[o]=!c,t[s]=c,t))},m,c&&n.createElement("span",null,c))}},62:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),l=a(6010),r=a(5999),i=a(7774),o="tags_XVD_",s="tag_JSN8";function m(e){var t=e.tags;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,l.Z)(o,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return n.createElement("li",{key:a,className:s},n.createElement(i.Z,{name:t,permalink:a}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/d1d3f8b1.4a2803bc.js b/assets/js/d1d3f8b1.4a2803bc.js deleted file mode 100644 index 7c956c13..00000000 --- a/assets/js/d1d3f8b1.4a2803bc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[511],{3905:function(e,t,r){r.d(t,{Zo:function(){return c},kt:function(){return m}});var i=r(7294);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 a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=i.createContext({}),p=function(e){var t=i.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return i.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(r),m=n,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||a;return r?i.createElement(h,o(o({ref:t},c),{},{components:r})):i.createElement(h,o({ref:t},c))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:n,o[1]=s;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}d.displayName="MDXCreateElement"},7724:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return s},contentTitle:function(){return l},metadata:function(){return p},assets:function(){return c},toc:function(){return u},default:function(){return m}});var i=r(7462),n=r(3366),a=(r(7294),r(3905)),o=["components"],s={sidebar_position:3},l="Bitlayer vs. Ethereum",p={unversionedId:"Introduction/BitlayerVsEth",id:"Introduction/BitlayerVsEth",title:"Bitlayer vs. Ethereum",description:"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.",source:"@site/docs/Introduction/BitlayerVsEth.md",sourceDirName:"Introduction",slug:"/Introduction/BitlayerVsEth",permalink:"/docs/Introduction/BitlayerVsEth",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"About Bitlayer",permalink:"/docs/Introduction/AboutBitlayer"},next:{title:"Technical Architecture",permalink:"/docs/Introduction/TechnicalArchitecture"}},c={},u=[{value:"Gas Price",id:"gas-price",level:2},{value:"Bitlayer",id:"bitlayer",level:3},{value:"Ethereum",id:"ethereum",level:3},{value:"Supported EVM and Solidity Versions",id:"supported-evm-and-solidity-versions",level:2},{value:"Bitlayer",id:"bitlayer-1",level:3},{value:"EVM Support",id:"evm-support",level:4},{value:"Solidity Version",id:"solidity-version",level:4},{value:"Ethereum",id:"ethereum-1",level:3},{value:"EVM Support",id:"evm-support-1",level:4},{value:"Solidity Version",id:"solidity-version-1",level:4},{value:"Implications",id:"implications",level:2},{value:"For Developers",id:"for-developers",level:3},{value:"For Users",id:"for-users",level:3}],d={toc:u};function m(e){var t=e.components,r=(0,n.Z)(e,o);return(0,a.kt)("wrapper",(0,i.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"bitlayer-vs-ethereum"},"Bitlayer vs. Ethereum"),(0,a.kt)("p",null,"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users."),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Feature"),(0,a.kt)("th",{parentName:"tr",align:null},"Bitlayer"),(0,a.kt)("th",{parentName:"tr",align:null},"Ethereum"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Gas Price")),(0,a.kt)("td",{parentName:"tr",align:null},"Lower due to efficiency mechanisms."),(0,a.kt)("td",{parentName:"tr",align:null},"Variable, dependent on network demand. High demand can lead to increased gas prices.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"EVM Support")),(0,a.kt)("td",{parentName:"tr",align:null},"Supports EVM-compatible smart contracts through the Layered Virtual Machine (LVM)."),(0,a.kt)("td",{parentName:"tr",align:null},"Full EVM support as the native platform.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Solidity Support")),(0,a.kt)("td",{parentName:"tr",align:null},"Supports up to Solidity version v0.8.23. Future versions will be supported."),(0,a.kt)("td",{parentName:"tr",align:null},"Supports the latest versions of Solidity, with ongoing updates.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Developer Implications")),(0,a.kt)("td",{parentName:"tr",align:null},"Offers a platform leveraging Bitcoin's security. Easier transition for those familiar with Ethereum's EVM."),(0,a.kt)("td",{parentName:"tr",align:null},"Mature tooling and community support.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"User Implications")),(0,a.kt)("td",{parentName:"tr",align:null},"Access to innovative dApps leveraging Bitcoin's security."),(0,a.kt)("td",{parentName:"tr",align:null},"Vast ecosystem of dApps.")))),(0,a.kt)("h2",{id:"gas-price"},"Gas Price"),(0,a.kt)("h3",{id:"bitlayer"},"Bitlayer"),(0,a.kt)("p",null,"Bitlayer aims to offer lower transaction costs through innovative efficiency mechanisms. Leveraging technologies like optimistic execution, Bitlayer seeks to optimize transaction throughput, making it a potentially more economical choice for its users."),(0,a.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),(0,a.kt)("strong",{parentName:"h5"},"Important: About Gas Price on Bitlayer"))),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"Bitlayer's native gas token is BTC, utilized with an 18-digit precision, diverging from Bitcoin's traditional 8-digit precision. This adjustment aligns with the default decimal precision of tokens on EVM-compatible chains, ensuring consistency across transactions."))),(0,a.kt)("p",null,"To accommodate transaction processing priorities, Bitlayer has established a minimum priority fee requirement. Developers can dynamically estimate the required gas price for transactions using ",(0,a.kt)("inlineCode",{parentName:"p"},"eth_gasPrice")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"eth_maxPriorityFeePerGas"),"."),(0,a.kt)("p",null,"For transactions on the Mainnet/Testnet, a minimum tip of 0.1 gwei is necessary. Typically, setting a ",(0,a.kt)("inlineCode",{parentName:"p"},"gasPrice")," of 0.11 gwei for legacy transactions or a ",(0,a.kt)("inlineCode",{parentName:"p"},"maxPriorityFeePerGas")," of 0.1 gwei (with an adequately set ",(0,a.kt)("inlineCode",{parentName:"p"},"maxFeePerGas"),") for EIP-1559 transactions should suffice for most operations."),(0,a.kt)("p",null,"Dapp developers are advised to programmatically set the ",(0,a.kt)("inlineCode",{parentName:"p"},"maxPriorityFeePerGas")," before initiating transactions via APIs, rather than relying on default strategies employed by wallets (like MetaMask) or SDKs, to ensure optimal transaction processing."),(0,a.kt)("h3",{id:"ethereum"},"Ethereum"),(0,a.kt)("p",null,"In contrast, Ethereum's gas prices fluctuate based on network demand. Users compete for computational resources, leading to variable gas prices that can spike significantly during periods of high demand, affecting cost-effectiveness."),(0,a.kt)("h2",{id:"supported-evm-and-solidity-versions"},"Supported EVM and Solidity Versions"),(0,a.kt)("h3",{id:"bitlayer-1"},"Bitlayer"),(0,a.kt)("h4",{id:"evm-support"},"EVM Support"),(0,a.kt)("p",null,"Bitlayer introduces the Layered Virtual Machine (LVM), which is fully compatible with Ethereum Virtual Machine (EVM) smart contracts. It supports EVM-compatible contracts up to the Shanghai update, with the exception of the PREVRANDAO opcode. The Cancun upgrade is expected to be supported in the next release. This enables developers to build applications on Bitcoin's secure network, mirroring the functionality available on Ethereum."),(0,a.kt)("h4",{id:"solidity-version"},"Solidity Version"),(0,a.kt)("p",null,"Currently, Bitlayer supports Solidity up to version v0.8.23, with a commitment to incorporating future versions. This stance ensures that developers have access to a stable and secure environment for their smart contracts."),(0,a.kt)("h3",{id:"ethereum-1"},"Ethereum"),(0,a.kt)("h4",{id:"evm-support-1"},"EVM Support"),(0,a.kt)("p",null,"Ethereum, as the origin of the EVM, offers support for the entire range of EVM functionalities. This allows for a wide spectrum of smart contract capabilities and decentralized application developments."),(0,a.kt)("h4",{id:"solidity-version-1"},"Solidity Version"),(0,a.kt)("p",null,"Ethereum consistently supports the latest versions of Solidity, providing developers with the newest features, optimizations, and security enhancements for smart contract development."),(0,a.kt)("h2",{id:"implications"},"Implications"),(0,a.kt)("h3",{id:"for-developers"},"For Developers"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Bitlayer")," emerges as an appealing platform for developers seeking to leverage Bitcoin's renowned security with the added benefit of potentially lower operational costs. The LVM's compatibility with EVM ensures a smooth transition for developers already familiar with Ethereum's ecosystem."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Ethereum")," remains a cornerstone for smart contract and decentralized application development, supported by its extensive tooling and a vibrant community.")),(0,a.kt)("h3",{id:"for-users"},"For Users"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Bitlayer")," offer more cost-effective interactions with decentralized applications, backed by the security of Bitcoin. This makes it an attractive platform for users prioritizing security and efficiency."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Ethereum")," offers a broad and diverse ecosystem of dApps.")),(0,a.kt)("p",null,"In essence, Bitlayer introduces a strategic approach to integrating smart contract functionality within Bitcoin's secure and cost-effective framework, offering tangible benefits for both developers and users."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d1d3f8b1.e18fe561.js b/assets/js/d1d3f8b1.e18fe561.js new file mode 100644 index 00000000..86e815a1 --- /dev/null +++ b/assets/js/d1d3f8b1.e18fe561.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5872],{517:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>a,toc:()=>c});var r=t(4848),s=t(8453);const n={sidebar_position:3},o="Bitlayer vs. Ethereum",a={id:"Introduction/BitlayerVsEth",title:"Bitlayer vs. Ethereum",description:"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.",source:"@site/docs/Introduction/BitlayerVsEth.md",sourceDirName:"Introduction",slug:"/Introduction/BitlayerVsEth",permalink:"/docs/Introduction/BitlayerVsEth",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"About Bitlayer",permalink:"/docs/Introduction/AboutBitlayer"},next:{title:"Technical Architecture",permalink:"/docs/Introduction/TechnicalArchitecture"}},l={},c=[{value:"Gas Price",id:"gas-price",level:2},{value:"Bitlayer",id:"bitlayer",level:3},{value:"Ethereum",id:"ethereum",level:3},{value:"Supported EVM and Solidity Versions",id:"supported-evm-and-solidity-versions",level:2},{value:"Bitlayer",id:"bitlayer-1",level:3},{value:"EVM Support",id:"evm-support",level:4},{value:"Solidity Version",id:"solidity-version",level:4},{value:"Ethereum",id:"ethereum-1",level:3},{value:"EVM Support",id:"evm-support-1",level:4},{value:"Solidity Version",id:"solidity-version-1",level:4},{value:"Implications",id:"implications",level:2},{value:"For Developers",id:"for-developers",level:3},{value:"For Users",id:"for-users",level:3}];function d(e){const i={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.h1,{id:"bitlayer-vs-ethereum",children:"Bitlayer vs. Ethereum"}),"\n",(0,r.jsx)(i.p,{children:"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users."}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Feature"}),(0,r.jsx)(i.th,{children:"Bitlayer"}),(0,r.jsx)(i.th,{children:"Ethereum"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Gas Price"})}),(0,r.jsx)(i.td,{children:"Lower due to efficiency mechanisms."}),(0,r.jsx)(i.td,{children:"Variable, dependent on network demand. High demand can lead to increased gas prices."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"EVM Support"})}),(0,r.jsx)(i.td,{children:"Supports EVM-compatible smart contracts through the Layered Virtual Machine (LVM)."}),(0,r.jsx)(i.td,{children:"Full EVM support as the native platform."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Solidity Support"})}),(0,r.jsx)(i.td,{children:"Supports up to Solidity version v0.8.23. Future versions will be supported."}),(0,r.jsx)(i.td,{children:"Supports the latest versions of Solidity, with ongoing updates."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Developer Implications"})}),(0,r.jsx)(i.td,{children:"Offers a platform leveraging Bitcoin's security. Easier transition for those familiar with Ethereum's EVM."}),(0,r.jsx)(i.td,{children:"Mature tooling and community support."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"User Implications"})}),(0,r.jsx)(i.td,{children:"Access to innovative dApps leveraging Bitcoin's security."}),(0,r.jsx)(i.td,{children:"Vast ecosystem of dApps."})]})]})]}),"\n",(0,r.jsx)(i.h2,{id:"gas-price",children:"Gas Price"}),"\n",(0,r.jsx)(i.h3,{id:"bitlayer",children:"Bitlayer"}),"\n",(0,r.jsx)(i.p,{children:"Bitlayer aims to offer lower transaction costs through innovative efficiency mechanisms. Leveraging technologies like optimistic execution, Bitlayer seeks to optimize transaction throughput, making it a potentially more economical choice for its users."}),"\n",(0,r.jsxs)(i.admonition,{type:"caution",children:[(0,r.jsx)(i.mdxAdmonitionTitle,{children:(0,r.jsx)(i.strong,{children:"Important: About Gas Price on Bitlayer"})}),(0,r.jsx)(i.p,{children:"Bitlayer's native gas token is BTC, utilized with an 18-digit precision, diverging from Bitcoin's traditional 8-digit precision. This adjustment aligns with the default decimal precision of tokens on EVM-compatible chains, ensuring consistency across transactions."})]}),"\n",(0,r.jsxs)(i.p,{children:["To accommodate transaction processing priorities, Bitlayer has established a minimum priority fee requirement. Developers can dynamically estimate the required gas price for transactions using ",(0,r.jsx)(i.code,{children:"eth_gasPrice"})," or ",(0,r.jsx)(i.code,{children:"eth_maxPriorityFeePerGas"}),"."]}),"\n",(0,r.jsxs)(i.p,{children:["For transactions on the Mainnet/Testnet, a minimum tip of 0.1 gwei is necessary. Typically, setting a ",(0,r.jsx)(i.code,{children:"gasPrice"})," of 0.11 gwei for legacy transactions or a ",(0,r.jsx)(i.code,{children:"maxPriorityFeePerGas"})," of 0.1 gwei (with an adequately set ",(0,r.jsx)(i.code,{children:"maxFeePerGas"}),") for EIP-1559 transactions should suffice for most operations."]}),"\n",(0,r.jsxs)(i.p,{children:["Dapp developers are advised to programmatically set the ",(0,r.jsx)(i.code,{children:"maxPriorityFeePerGas"})," before initiating transactions via APIs, rather than relying on default strategies employed by wallets (like MetaMask) or SDKs, to ensure optimal transaction processing."]}),"\n",(0,r.jsx)(i.h3,{id:"ethereum",children:"Ethereum"}),"\n",(0,r.jsx)(i.p,{children:"In contrast, Ethereum's gas prices fluctuate based on network demand. Users compete for computational resources, leading to variable gas prices that can spike significantly during periods of high demand, affecting cost-effectiveness."}),"\n",(0,r.jsx)(i.h2,{id:"supported-evm-and-solidity-versions",children:"Supported EVM and Solidity Versions"}),"\n",(0,r.jsx)(i.h3,{id:"bitlayer-1",children:"Bitlayer"}),"\n",(0,r.jsx)(i.h4,{id:"evm-support",children:"EVM Support"}),"\n",(0,r.jsx)(i.p,{children:"Bitlayer introduces the Layered Virtual Machine (LVM), which is fully compatible with Ethereum Virtual Machine (EVM) smart contracts. It supports EVM-compatible contracts up to the Shanghai update, with the exception of the PREVRANDAO opcode. The Cancun upgrade is expected to be supported in the next release. This enables developers to build applications on Bitcoin's secure network, mirroring the functionality available on Ethereum."}),"\n",(0,r.jsx)(i.h4,{id:"solidity-version",children:"Solidity Version"}),"\n",(0,r.jsx)(i.p,{children:"Currently, Bitlayer supports Solidity up to version v0.8.23, with a commitment to incorporating future versions. This stance ensures that developers have access to a stable and secure environment for their smart contracts."}),"\n",(0,r.jsx)(i.h3,{id:"ethereum-1",children:"Ethereum"}),"\n",(0,r.jsx)(i.h4,{id:"evm-support-1",children:"EVM Support"}),"\n",(0,r.jsx)(i.p,{children:"Ethereum, as the origin of the EVM, offers support for the entire range of EVM functionalities. This allows for a wide spectrum of smart contract capabilities and decentralized application developments."}),"\n",(0,r.jsx)(i.h4,{id:"solidity-version-1",children:"Solidity Version"}),"\n",(0,r.jsx)(i.p,{children:"Ethereum consistently supports the latest versions of Solidity, providing developers with the newest features, optimizations, and security enhancements for smart contract development."}),"\n",(0,r.jsx)(i.h2,{id:"implications",children:"Implications"}),"\n",(0,r.jsx)(i.h3,{id:"for-developers",children:"For Developers"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Bitlayer"})," emerges as an appealing platform for developers seeking to leverage Bitcoin's renowned security with the added benefit of potentially lower operational costs. The LVM's compatibility with EVM ensures a smooth transition for developers already familiar with Ethereum's ecosystem."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Ethereum"})," remains a cornerstone for smart contract and decentralized application development, supported by its extensive tooling and a vibrant community."]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"for-users",children:"For Users"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Bitlayer"})," offer more cost-effective interactions with decentralized applications, backed by the security of Bitcoin. This makes it an attractive platform for users prioritizing security and efficiency."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Ethereum"})," offers a broad and diverse ecosystem of dApps."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"In essence, Bitlayer introduces a strategic approach to integrating smart contract functionality within Bitcoin's secure and cost-effective framework, offering tangible benefits for both developers and users."})]})}function h(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,i,t)=>{t.d(i,{R:()=>o,x:()=>a});var r=t(6540);const s={},n=r.createContext(s);function o(e){const i=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(n.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d2eb7327.80b5ddde.js b/assets/js/d2eb7327.80b5ddde.js deleted file mode 100644 index e108708c..00000000 --- a/assets/js/d2eb7327.80b5ddde.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8994],{3905:function(e,r,t){t.d(r,{Zo:function(){return s},kt:function(){return g}});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?o(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)t=o[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),l=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},s=function(e){var r=l(e.components);return a.createElement(p.Provider,{value:r},e.children)},h={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},c=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),c=l(t),g=n,m=c["".concat(p,".").concat(g)]||c[g]||h[g]||o;return t?a.createElement(m,i(i({ref:r},s),{},{components:t})):a.createElement(m,i({ref:r},s))}));function g(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var o=t.length,i=new Array(o);i[0]=c;var u={};for(var p in r)hasOwnProperty.call(r,p)&&(u[p]=r[p]);u.originalType=e,u.mdxType="string"==typeof e?e:n,i[1]=u;for(var l=2;l<o;l++)i[l]=t[l];return a.createElement.apply(null,i)}return a.createElement.apply(null,t)}c.displayName="MDXCreateElement"},9331:function(e,r,t){t.r(r),t.d(r,{frontMatter:function(){return u},contentTitle:function(){return p},metadata:function(){return l},assets:function(){return s},toc:function(){return h},default:function(){return g}});var a=t(7462),n=t(3366),o=(t(7294),t(3905)),i=["components"],u={sidebar_position:3},p="Indexing-3rd-Party",l={unversionedId:"DeveloperResources/Subgraph",id:"DeveloperResources/Subgraph",title:"Indexing-3rd-Party",description:"What is a Subgraph?",source:"@site/docs/DeveloperResources/Subgraph.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/Subgraph",permalink:"/docs/DeveloperResources/Subgraph",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Indexing-The-Graph",permalink:"/docs/DeveloperResources/TheGraph"},next:{title:"Faucets",permalink:"/docs/DeveloperResources/Faucets"}},s={},h=[{value:"What is a Subgraph?",id:"what-is-a-subgraph",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Creating a Subgraph",id:"creating-a-subgraph",level:2},{value:"Removing a Subgraph",id:"removing-a-subgraph",level:2},{value:"Deploying a Subgraph",id:"deploying-a-subgraph",level:2},{value:"Querying a Subgraph",id:"querying-a-subgraph",level:2},{value:"Support",id:"support",level:2}],c={toc:h};function g(e){var r=e.components,t=(0,n.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"indexing-3rd-party"},"Indexing-3rd-Party"),(0,o.kt)("h2",{id:"what-is-a-subgraph"},"What is a Subgraph?"),(0,o.kt)("p",null,"Subgraph is a customized, open-source solution for indexing and accessing real-time blockchain data through the GraphQL API. They provide developers with powerful tools to build, customize and access blockchain data according to their needs."),(0,o.kt)("p",null,"This document will guide you through creating, deploying, and querying this subgraph."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("p",null,"Before getting started, make sure you have:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Registered a Bifrost account and obtained an API key.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Please visit one of the following links and fill out the form to apply for an API key:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://forms.gle/tijPPdW37hFX6QFG9"},"https://forms.gle/tijPPdW37hFX6QFG9")))))),(0,o.kt)("li",{parentName:"ul"},"Installed the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/graphprotocol/graph-cli"},"Graph CLI"),"."),(0,o.kt)("li",{parentName:"ul"},"Installed the ",(0,o.kt)("a",{parentName:"li",href:"https://yarnpkg.com/"},"Yarn package manager"),".")),(0,o.kt)("h2",{id:"creating-a-subgraph"},"Creating a Subgraph"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Choose a subgraph name in the format ",(0,o.kt)("inlineCode",{parentName:"p"},"<username>/<subgraph-name>"),', for example, "alice/mysubgraph".'),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"<username>"),": This is your username on Bifrost."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"<subgraph-name>"),": This is the specific name you choose for your subgraph, which usually reflects the functionality of the subgraph or the smart contract it indexes."))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Run the following command in your terminal, replacing ",(0,o.kt)("inlineCode",{parentName:"p"},"{apikey}")," with your Bifrost API key obtained from the links above and ",(0,o.kt)("inlineCode",{parentName:"p"},"<username/subgraph-name>")," with your chosen subgraph name:"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"graph create --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>\n")),(0,o.kt)("h2",{id:"removing-a-subgraph"},"Removing a Subgraph"),(0,o.kt)("p",null,"If you need to remove a subgraph, run the following command in your terminal, replacing {apikey} with your Bifrost API key and <username/subgraph-name> with the name of the subgraph you want to remove:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"graph remove --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>\n")),(0,o.kt)("h2",{id:"deploying-a-subgraph"},"Deploying a Subgraph"),(0,o.kt)("p",null,"Run the following command in your terminal to deploy your subgraph, replacing {apikey} with your Bifrost API key and <username/subgraph-name> with your subgraph name:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"graph deploy --node https://bifrost.bfno.de/{apikey} --ipfs https://bifrost.bfno.de <username/subgraph-name>\n")),(0,o.kt)("h2",{id:"querying-a-subgraph"},"Querying a Subgraph"),(0,o.kt)("p",null,"Once deployed, you can use the following endpoints to query your subgraph:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"GraphQL Endpoint:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"https://bifrost.bfno.de/{apikey}/subgraphs/name/<username/subgraph-name>/graphql\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"API Endpoint:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"https://bifrost.bfno.de/{apikey}/subgraphs/name/<username/subgraph-name>\n")),(0,o.kt)("p",null,"Replace {apikey} with your Bifrost API key obtained from the links above and <username/subgraph-name> with your subgraph name."),(0,o.kt)("p",null,"You can now use the standard GraphQL query language to query your Subgraph."),(0,o.kt)("h2",{id:"support"},"Support"),(0,o.kt)("p",null,"\ud83d\uded1 Have doubts and need support? Join our ",(0,o.kt)("a",{parentName:"p",href:"https://t.me/+5yyFiu9D9OozMjhl"},"Telegram chat")," and ping the DevRel team for support or interact with other blockchain developers and fellow builders!"))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d2eb7327.a234a950.js b/assets/js/d2eb7327.a234a950.js new file mode 100644 index 00000000..a675f160 --- /dev/null +++ b/assets/js/d2eb7327.a234a950.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8751],{2096:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>h,contentTitle:()=>t,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var s=r(4848),i=r(8453);const a={sidebar_position:3},t="Indexing-3rd-Party",o={id:"DeveloperResources/Subgraph",title:"Indexing-3rd-Party",description:"What is a Subgraph?",source:"@site/docs/DeveloperResources/Subgraph.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/Subgraph",permalink:"/docs/DeveloperResources/Subgraph",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docs",previous:{title:"Indexing-The-Graph",permalink:"/docs/DeveloperResources/TheGraph"},next:{title:"Faucets",permalink:"/docs/DeveloperResources/Faucets"}},h={},l=[{value:"What is a Subgraph?",id:"what-is-a-subgraph",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Creating a Subgraph",id:"creating-a-subgraph",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"indexing-3rd-party",children:"Indexing-3rd-Party"}),"\n",(0,s.jsx)(n.h2,{id:"what-is-a-subgraph",children:"What is a Subgraph?"}),"\n",(0,s.jsx)(n.p,{children:"Subgraph is a customized, open-source solution for indexing and accessing real-time blockchain data through the GraphQL API. They provide developers with powerful tools to build, customize, and access blockchain data according to their needs."}),"\n",(0,s.jsx)(n.p,{children:"This document will guide you through creating, deploying, and querying this subgraph."}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.p,{children:"Before getting started, make sure you have:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Registered a Bifrost account and obtained an API key.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Please visit one of the following links and fill out the form to apply for an API key:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://forms.gle/tijPPdW37hFX6QFG9",children:"Apply for API key"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["Installed the ",(0,s.jsx)(n.a,{href:"https://github.com/graphprotocol/graph-cli",children:"Graph CLI"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Installed the ",(0,s.jsx)(n.a,{href:"https://yarnpkg.com/",children:"Yarn package manager"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"creating-a-subgraph",children:"Creating a Subgraph"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Choose a subgraph name in the format ",(0,s.jsx)(n.code,{children:"<username>/<subgraph-name>"}),', for example, "alice/mysubgraph".']}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"<username>"}),": This is your username on Bifrost."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"<subgraph-name>"}),": This is the specific name you choose for your subgraph, which usually reflects the functionality of the subgraph or the smart contract it indexes."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Run the following command in your terminal, replacing ",(0,s.jsx)(n.code,{children:"{apikey}"})," with your Bifrost API key obtained from the links above and ",(0,s.jsx)(n.code,{children:"<username/subgraph-name>"})," with your chosen subgraph name:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"graph create --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>\n"})}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>t,x:()=>o});var s=r(6540);const i={},a=s.createContext(i);function t(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d5bbf5a4.82df1ca8.js b/assets/js/d5bbf5a4.82df1ca8.js deleted file mode 100644 index f73b79b6..00000000 --- a/assets/js/d5bbf5a4.82df1ca8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4316],{3905:function(t,e,i){i.d(e,{Zo:function(){return p},kt:function(){return d}});var n=i(7294);function r(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function o(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function a(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?o(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function c(t,e){if(null==t)return{};var i,n,r=function(t,e){if(null==t)return{};var i,n,r={},o=Object.keys(t);for(n=0;n<o.length;n++)i=o[n],e.indexOf(i)>=0||(r[i]=t[i]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)i=o[n],e.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(r[i]=t[i])}return r}var l=n.createContext({}),s=function(t){var e=n.useContext(l),i=e;return t&&(i="function"==typeof t?t(e):a(a({},e),t)),i},p=function(t){var e=s(t.components);return n.createElement(l.Provider,{value:e},t.children)},u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var i=t.components,r=t.mdxType,o=t.originalType,l=t.parentName,p=c(t,["components","mdxType","originalType","parentName"]),m=s(i),d=r,f=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return i?n.createElement(f,a(a({ref:e},p),{},{components:i})):n.createElement(f,a({ref:e},p))}));function d(t,e){var i=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=i.length,a=new Array(o);a[0]=m;var c={};for(var l in e)hasOwnProperty.call(e,l)&&(c[l]=e[l]);c.originalType=t,c.mdxType="string"==typeof t?t:r,a[1]=c;for(var s=2;s<o;s++)a[s]=i[s];return n.createElement.apply(null,a)}return n.createElement.apply(null,i)}m.displayName="MDXCreateElement"},3754:function(t,e,i){i.r(e),i.d(e,{frontMatter:function(){return c},contentTitle:function(){return l},metadata:function(){return s},assets:function(){return p},toc:function(){return u},default:function(){return d}});var n=i(7462),r=i(3366),o=(i(7294),i(3905)),a=["components"],c={sidebar_position:7},l="About BitVM",s={unversionedId:"Introduction/BitVM",id:"Introduction/BitVM",title:"About BitVM",description:"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.",source:"@site/docs/Introduction/BitVM.md",sourceDirName:"Introduction",slug:"/Introduction/BitVM",permalink:"/docs/Introduction/BitVM",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"docs",previous:{title:"Roadmap",permalink:"/docs/Introduction/Roadmap"},next:{title:"Getting Started",permalink:"/docs/category/getting-started"}},p={},u=[{value:"What is BitVM?",id:"what-is-bitvm",level:2},{value:"Benefits of BitVM",id:"benefits-of-bitvm",level:2},{value:"Experiment of BitVM White Paper",id:"experiment-of-bitvm-white-paper",level:2},{value:"Engage with the Community",id:"engage-with-the-community",level:2}],m={toc:u};function d(t){var e=t.components,i=(0,r.Z)(t,a);return(0,o.kt)("wrapper",(0,n.Z)({},m,i,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"about-bitvm"},"About BitVM"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://bitvm.org/"},"BitVM")," is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin."),(0,o.kt)("h2",{id:"what-is-bitvm"},"What is BitVM?"),(0,o.kt)("p",null,"BitVM is invented by ",(0,o.kt)("a",{parentName:"p",href:"https://x.com/robin_linus/"},"Robin Linus")," from ZeroSync, BitVM offers a novel computing paradigm designed specifically for the Bitcoin blockchain. This initiative was launched in late 2023 to enable more expressive contracts and efficient off-chain computations without necessitating soft forks."),(0,o.kt)("p",null,"Unlike Ethereum, BitVM's aim is not replication but expansion, enhancing Bitcoin's capabilities to handle increased demand. This becomes increasingly important as the Bitcoin ecosystem grows, especially with upcoming events like Bitcoin halving and the rising interest from institutional investors following Bitcoin ETFs."),(0,o.kt)("p",null,"BitVM's features include the optimistic validation of Zero-Knowledge (ZK) rollups\u2014similar to technologies used in Ethereum's Layer 2 solutions\u2014which process transactions off-chain to reduce mainnet congestion. These transactions are finalized on the mainnet, incorporating mechanisms to deter and identify potential fraud."),(0,o.kt)("h2",{id:"benefits-of-bitvm"},"Benefits of BitVM"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Optimistic Validation of ZK Rollups"),": BitVM facilitates the validation of ZK rollups directly on the Bitcoin network, allowing complex layer 2 computations without changing Bitcoin's consensus rules or compromising blockchain performance.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Bridging Sidechains and Rollups to Bitcoin"),": It aims to create more decentralized bridges between Bitcoin and layer 2 platforms like Rootstock, reducing reliance on intermediaries and lowering the risk of fraud.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Reduced Transaction Fees"),": BitVM could significantly lower Bitcoin transaction fees by managing data and computations off-chain. This can help mitigate spikes in fees, like those seen in December 2023, when they reached $38.43.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Enhanced Security"),": By focusing on two-party contracts, BitVM enhances security over systems that handle multi-party contracts, as is common with Ethereum. It provides mechanisms to prove and dispute fraudulent transactions effectively."))),(0,o.kt)("h2",{id:"experiment-of-bitvm-white-paper"},"Experiment of BitVM White Paper"),(0,o.kt)("p",null,"Learn more about BitVM's innovations and how they can transform the Bitcoin landscape through our detailed white paper and research initiatives:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://bitlayerlabs.notion.site/Experiment-of-BitVM-White-Paper-ef87e719001e4e2d83765c68f1bb8443"},"Experiment of BitVM White Paper")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://medium.com/@Bitlayer/bitvm-and-its-optimization-considerations-007da599d8ac"},"BitVM And Its Optimization Considerations"))),(0,o.kt)("h2",{id:"engage-with-the-community"},"Engage with the Community"),(0,o.kt)("p",null,"Join the discussion and contribute to the development of BitVM at Bitlayer through these community channels:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"BitVM Club"),":",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Twitter: ",(0,o.kt)("a",{parentName:"li",href:"https://twitter.com/Bitvmclub"},"BitVMclub")),(0,o.kt)("li",{parentName:"ul"},"Website: ",(0,o.kt)("a",{parentName:"li",href:"https://www.bitvm.club"},"bitVM.club")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"BitVM_CN"),":",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Twitter: ",(0,o.kt)("a",{parentName:"li",href:"https://twitter.com/bitvm_cn"},"bitvm_cn")),(0,o.kt)("li",{parentName:"ul"},"Website: ",(0,o.kt)("a",{parentName:"li",href:"https://www.bitvmcn.xyz/doc"},"bitvmcn.xyz"))))),(0,o.kt)("p",null,"Explore how Bitlayer is setting the stage for revolutionary changes in Bitcoin's functionality and scalability."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d5bbf5a4.e800493d.js b/assets/js/d5bbf5a4.e800493d.js new file mode 100644 index 00000000..d755bb73 --- /dev/null +++ b/assets/js/d5bbf5a4.e800493d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[238],{3353:(i,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=e(4848),o=e(8453);const s={sidebar_position:7},r="About BitVM",a={id:"Introduction/BitVM",title:"About BitVM",description:"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.",source:"@site/docs/Introduction/BitVM.md",sourceDirName:"Introduction",slug:"/Introduction/BitVM",permalink:"/docs/Introduction/BitVM",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"docs",previous:{title:"Roadmap",permalink:"/docs/Introduction/Roadmap"},next:{title:"Getting Started",permalink:"/docs/category/getting-started"}},c={},l=[{value:"What is BitVM?",id:"what-is-bitvm",level:2},{value:"Benefits of BitVM",id:"benefits-of-bitvm",level:2},{value:"Experiment of BitVM White Paper",id:"experiment-of-bitvm-white-paper",level:2},{value:"Engage with the Community",id:"engage-with-the-community",level:2}];function h(i){const t={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...i.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"about-bitvm",children:"About BitVM"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://bitvm.org/",children:"BitVM"})," is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin."]}),"\n",(0,n.jsx)(t.h2,{id:"what-is-bitvm",children:"What is BitVM?"}),"\n",(0,n.jsxs)(t.p,{children:["BitVM is invented by ",(0,n.jsx)(t.a,{href:"https://x.com/robin_linus/",children:"Robin Linus"})," from ZeroSync, BitVM offers a novel computing paradigm designed specifically for the Bitcoin blockchain. This initiative was launched in late 2023 to enable more expressive contracts and efficient off-chain computations without necessitating soft forks."]}),"\n",(0,n.jsx)(t.p,{children:"Unlike Ethereum, BitVM's aim is not replication but expansion, enhancing Bitcoin's capabilities to handle increased demand. This becomes increasingly important as the Bitcoin ecosystem grows, especially with upcoming events like Bitcoin halving and the rising interest from institutional investors following Bitcoin ETFs."}),"\n",(0,n.jsx)(t.p,{children:"BitVM's features include the optimistic validation of Zero-Knowledge (ZK) rollups\u2014similar to technologies used in Ethereum's Layer 2 solutions\u2014which process transactions off-chain to reduce mainnet congestion. These transactions are finalized on the mainnet, incorporating mechanisms to deter and identify potential fraud."}),"\n",(0,n.jsx)(t.h2,{id:"benefits-of-bitvm",children:"Benefits of BitVM"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Optimistic Validation of ZK Rollups"}),": BitVM facilitates the validation of ZK rollups directly on the Bitcoin network, allowing complex layer 2 computations without changing Bitcoin's consensus rules or compromising blockchain performance."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Bridging Sidechains and Rollups to Bitcoin"}),": It aims to create more decentralized bridges between Bitcoin and layer 2 platforms like Rootstock, reducing reliance on intermediaries and lowering the risk of fraud."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Reduced Transaction Fees"}),": BitVM could significantly lower Bitcoin transaction fees by managing data and computations off-chain. This can help mitigate spikes in fees, like those seen in December 2023, when they reached $38.43."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Enhanced Security"}),": By focusing on two-party contracts, BitVM enhances security over systems that handle multi-party contracts, as is common with Ethereum. It provides mechanisms to prove and dispute fraudulent transactions effectively."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"experiment-of-bitvm-white-paper",children:"Experiment of BitVM White Paper"}),"\n",(0,n.jsx)(t.p,{children:"Learn more about BitVM's innovations and how they can transform the Bitcoin landscape through our detailed white paper and research initiatives:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://bitlayerlabs.notion.site/Experiment-of-BitVM-White-Paper-ef87e719001e4e2d83765c68f1bb8443",children:"Experiment of BitVM White Paper"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://medium.com/@Bitlayer/bitvm-and-its-optimization-considerations-007da599d8ac",children:"BitVM And Its Optimization Considerations"})}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"engage-with-the-community",children:"Engage with the Community"}),"\n",(0,n.jsx)(t.p,{children:"Join the discussion and contribute to the development of BitVM at Bitlayer through these community channels:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"BitVM Club"}),":","\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Twitter: ",(0,n.jsx)(t.a,{href:"https://twitter.com/Bitvmclub",children:"BitVMclub"})]}),"\n",(0,n.jsxs)(t.li,{children:["Website: ",(0,n.jsx)(t.a,{href:"https://www.bitvm.club",children:"bitVM.club"})]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"BitVM_CN"}),":","\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Twitter: ",(0,n.jsx)(t.a,{href:"https://twitter.com/bitvm_cn",children:"bitvm_cn"})]}),"\n",(0,n.jsxs)(t.li,{children:["Website: ",(0,n.jsx)(t.a,{href:"https://www.bitvmcn.xyz/doc",children:"bitvmcn.xyz"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Explore how Bitlayer is setting the stage for revolutionary changes in Bitcoin's functionality and scalability."})]})}function d(i={}){const{wrapper:t}={...(0,o.R)(),...i.components};return t?(0,n.jsx)(t,{...i,children:(0,n.jsx)(h,{...i})}):h(i)}},8453:(i,t,e)=>{e.d(t,{R:()=>r,x:()=>a});var n=e(6540);const o={},s=n.createContext(o);function r(i){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof i?i(t):{...t,...i}}),[t,i])}function a(i){let t;return t=i.disableParentContext?"function"==typeof i.components?i.components(o):i.components||o:r(i.components),n.createElement(s.Provider,{value:t},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/ecc6b621.ae884017.js b/assets/js/ecc6b621.ae884017.js deleted file mode 100644 index 59bd5a5d..00000000 --- a/assets/js/ecc6b621.ae884017.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7020],{2705:function(t){t.exports=JSON.parse('{"title":"Introduction","slug":"/category/introduction","permalink":"/docs/category/introduction","navigation":{"next":{"title":"Welcome","permalink":"/docs/Introduction/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/ef566535.08b94712.js b/assets/js/ef566535.08b94712.js new file mode 100644 index 00000000..e8545487 --- /dev/null +++ b/assets/js/ef566535.08b94712.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7204],{365:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>b,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=r(4848),s=r(8453),a=r(1470),l=r(9365);const o={sidebar_position:4,title:"Blocks"},c=void 0,i={id:"Bitlayer Scan APIs/Blocks",title:"Blocks",description:"Get Block Rewards by BlockNo",source:"@site/docs/Bitlayer Scan APIs/Blocks.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,title:"Blocks"},sidebar:"docs",previous:{title:"Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions"},next:{title:"Logs",permalink:"/docs/Bitlayer Scan APIs/Logs"}},u={},d=[{value:"Get Block Rewards by BlockNo",id:"get-block-rewards-by-blockno",level:2},{value:"Get Block Number by Timestamp",id:"get-block-number-by-timestamp",level:2}];function h(e){const t={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"get-block-rewards-by-blockno",children:"Get Block Rewards by BlockNo"}),"\n",(0,n.jsx)(t.p,{children:"The status field returns 0 for failed transactions\uff0c1 for successful transactions and 2 for pending transactions."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=block\r\n&action=getblockreward\r\n&blockNum=426364\n"})}),"\n",(0,n.jsxs)(t.p,{children:["Try this endpoint in your ",(0,n.jsx)(t.a,{href:"https://api.btrscan.com/scan/api?module=block&action=getblockreward&blockNum=426364",children:"browser"})," \ud83d\udd17"]}),"\n",(0,n.jsxs)(a.A,{children:[(0,n.jsxs)(l.A,{value:"request",label:"Request",default:!0,children:[(0,n.jsx)(t.p,{children:"Query Parameters"}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"blockno"}),(0,n.jsxs)(t.td,{children:["the ",(0,n.jsx)(t.code,{children:"integer"})," block number to check block rewards for eg. 12697906"]})]})})]})]}),(0,n.jsxs)(l.A,{value:"response",label:"Response",children:[(0,n.jsx)(t.p,{children:"Sample Response"}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-json",children:' {\r\n "status": "1",\r\n "message": "OK",\r\n "result": {\r\n "blockNumber": "426364",\r\n "timeStamp": "1713555721",\r\n "blockMiner": "0x12a95f3c32e400129c7970f5d490152ad24dd869",\r\n "blockReward": "0.000000000000000000"\r\n }\r\n }\n'})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"get-block-number-by-timestamp",children:"Get Block Number by Timestamp"}),"\n",(0,n.jsx)(t.p,{children:"[Parameters] timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: 'before' or 'after'"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=block\r\n&action=getblocknobytime\r\n×tamp=1715789611\r\n&closest=before\n"})}),"\n",(0,n.jsxs)(t.p,{children:["Try this endpoint in your ",(0,n.jsx)(t.a,{href:"https://api.btrscan.com/scan/api?module=block&action=getblocknobytime×tamp=1715789611&closest=before",children:"browser"})," \ud83d\udd17"]}),"\n",(0,n.jsxs)(a.A,{children:[(0,n.jsxs)(l.A,{value:"request",label:"Request",default:!0,children:[(0,n.jsx)(t.p,{children:"Query Parameters"}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"timestamp"}),(0,n.jsxs)(t.td,{children:["the ",(0,n.jsx)(t.code,{children:"integer"})," representing the Unix timestamp in seconds"]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"closest"}),(0,n.jsxs)(t.td,{children:["the closest available block to the provided timestamp, either ",(0,n.jsx)(t.code,{children:"before"})," or ",(0,n.jsx)(t.code,{children:"after"})]})]})]})]})]}),(0,n.jsxs)(l.A,{value:"response",label:"Response",children:[(0,n.jsx)(t.p,{children:"Sample Response"}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-json",children:' {\r\n "status": "1",\r\n "message": "OK",\r\n "result": "1170994",\r\n }\n'})})]})]})]})}function b(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},9365:(e,t,r)=>{r.d(t,{A:()=>l});r(6540);var n=r(8215);const s={tabItem:"tabItem_Ymn6"};var a=r(4848);function l(e){let{children:t,hidden:r,className:l}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,l),hidden:r,children:t})}},1470:(e,t,r)=>{r.d(t,{A:()=>y});var n=r(6540),s=r(8215),a=r(3104),l=r(6347),o=r(205),c=r(7485),i=r(1682),u=r(9466);function d(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.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)??[]}function h(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:s}}=e;return{value:t,label:r,attributes:n,default:s}}))}(r);return function(e){const t=(0,i.X)(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,r])}function b(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:r}=e;const s=(0,l.W6)(),a=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)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 r??null}({queryString:t,groupId:r});return[(0,c.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function m(e){const{defaultValue:t,queryString:r=!1,groupId:s}=e,a=h(e),[l,c]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!b({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:a}))),[i,d]=p({queryString:r,groupId:s}),[m,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,u.Dv)(r);return[s,(0,n.useCallback)((e=>{r&&a.set(e)}),[r,a])]}({groupId:s}),x=(()=>{const e=i??m;return b({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{x&&c(x)}),[x]);return{selectedValue:l,selectValue:(0,n.useCallback)((e=>{if(!b({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),f(e)}),[d,f,a]),tabValues:a}}var f=r(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=r(4848);function v(e){let{className:t,block:r,selectedValue:n,selectValue:l,tabValues:o}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,a.a_)(),u=e=>{const t=e.currentTarget,r=c.indexOf(t),s=o[r].value;s!==n&&(i(t),l(s))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":r},t),children:o.map((e=>{let{value:t,label:r,attributes:a}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>c.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function k(e){let{lazy:t,children:r,selectedValue:s}=e;const a=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==s})))})}function g(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,j.jsx)(v,{...t,...e}),(0,j.jsx)(k,{...t,...e})]})}function y(e){const t=(0,f.A)();return(0,j.jsx)(g,{...e,children:d(e.children)},String(t))}},8453:(e,t,r)=>{r.d(t,{R:()=>l,x:()=>o});var n=r(6540);const s={},a=n.createContext(s);function l(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ef566535.d73fa9a4.js b/assets/js/ef566535.d73fa9a4.js deleted file mode 100644 index beaa374f..00000000 --- a/assets/js/ef566535.d73fa9a4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8746],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return d}});var r=n(7294);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 l(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={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,a=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=u(n),d=a,b=m["".concat(s,".").concat(d)]||m[d]||p[d]||l;return n?r.createElement(b,o(o({ref:t},c),{},{components:n})):r.createElement(b,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var u=2;u<l;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8215:function(e,t,n){n.d(t,{Z:function(){return a}});var r=n(7294);function a(e){var t=e.children,n=e.hidden,a=e.className;return r.createElement("div",{role:"tabpanel",hidden:n,className:a},t)}},9877:function(e,t,n){n.d(t,{Z:function(){return c}});var r=n(7462),a=n(7294),l=n(2389),o=n(5450),i=n(6010),s="tabItem_LplD";function u(e){var t,n,l,u=e.lazy,c=e.block,p=e.defaultValue,m=e.values,d=e.groupId,b=e.className,f=a.Children.map(e.children,(function(e){if((0,a.isValidElement)(e)&&void 0!==e.props.value)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.')})),k=null!=m?m:f.map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes}})),v=(0,o.lx)(k,(function(e,t){return e.value===t.value}));if(v.length>0)throw new Error('Docusaurus error: Duplicate values "'+v.map((function(e){return e.value})).join(", ")+'" found in <Tabs>. Every value needs to be unique.');var y=null===p?p:null!=(t=null!=p?p:null==(n=f.find((function(e){return e.props.default})))?void 0:n.props.value)?t:null==(l=f[0])?void 0:l.props.value;if(null!==y&&!k.some((function(e){return e.value===y})))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+y+'" but none of its children has the corresponding value. Available values are: '+k.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var g=(0,o.UB)(),h=g.tabGroupChoices,N=g.setTabGroupChoices,w=(0,a.useState)(y),T=w[0],O=w[1],P=[],x=(0,o.o5)().blockElementScrollPositionUntilNextRender;if(null!=d){var B=h[d];null!=B&&B!==T&&k.some((function(e){return e.value===B}))&&O(B)}var E=function(e){var t=e.currentTarget,n=P.indexOf(t),r=k[n].value;r!==T&&(x(t),O(r),null!=d&&N(d,r))},j=function(e){var t,n=null;switch(e.key){case"ArrowRight":var r=P.indexOf(e.currentTarget)+1;n=P[r]||P[0];break;case"ArrowLeft":var a=P.indexOf(e.currentTarget)-1;n=P[a]||P[P.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":c},b)},k.map((function(e){var t=e.value,n=e.label,l=e.attributes;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:T===t?0:-1,"aria-selected":T===t,key:t,ref:function(e){return P.push(e)},onKeyDown:j,onFocus:E,onClick:E},l,{className:(0,i.Z)("tabs__item",s,null==l?void 0:l.className,{"tabs__item--active":T===t})}),null!=n?n:t)}))),u?(0,a.cloneElement)(f.filter((function(e){return e.props.value===T}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},f.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==T})}))))}function c(e){var t=(0,l.Z)();return a.createElement(u,(0,r.Z)({key:String(t)},e))}},4530:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return u},contentTitle:function(){return c},metadata:function(){return p},assets:function(){return m},toc:function(){return d},default:function(){return f}});var r=n(7462),a=n(3366),l=(n(7294),n(3905)),o=n(9877),i=n(8215),s=["components"],u={sidebar_position:4,title:"Blocks"},c=void 0,p={unversionedId:"Bitlayer Scan APIs/Blocks",id:"Bitlayer Scan APIs/Blocks",title:"Blocks",description:"Get Block Rewards by BlockNo",source:"@site/docs/Bitlayer Scan APIs/Blocks.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,title:"Blocks"},sidebar:"docs",previous:{title:"Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions"},next:{title:"Logs",permalink:"/docs/Bitlayer Scan APIs/Logs"}},m={},d=[{value:"Get Block Rewards by BlockNo",id:"get-block-rewards-by-blockno",level:2},{value:"Get Block Number by Timestamp",id:"get-block-number-by-timestamp",level:2}],b={toc:d};function f(e){var t=e.components,n=(0,a.Z)(e,s);return(0,l.kt)("wrapper",(0,r.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"get-block-rewards-by-blockno"},"Get Block Rewards by BlockNo"),(0,l.kt)("p",null,"The status field returns 0 for failed transactions\uff0c1 for successful transactions and 2 for pending transactions."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=block\n&action=getblockreward\n&blockNum=426364\n")),(0,l.kt)("p",null,"Try this endpoint in your ",(0,l.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=block&action=getblockreward&blockNum=426364"},"browser")," \ud83d\udd17"),(0,l.kt)(o.Z,{mdxType:"Tabs"},(0,l.kt)(i.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,l.kt)("th",{parentName:"tr",align:null},"Description"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"blockno"),(0,l.kt)("td",{parentName:"tr",align:null},"the ",(0,l.kt)("inlineCode",{parentName:"td"},"integer")," block number to check block rewards for eg. 12697906"))))),(0,l.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,l.kt)("p",null," Sample Response"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},' {\n "status": "1",\n "message": "OK",\n "result": {\n "blockNumber": "426364",\n "timeStamp": "1713555721",\n "blockMiner": "0x12a95f3c32e400129c7970f5d490152ad24dd869",\n "blockReward": "0.000000000000000000"\n }\n }\n')))),(0,l.kt)("h2",{id:"get-block-number-by-timestamp"},"Get Block Number by Timestamp"),(0,l.kt)("p",null,"[Parameters]"," timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: 'before' or 'after'"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=block\n&action=getblocknobytime\n×tamp=1715789611\n&closest=before\n")),(0,l.kt)("p",null,"Try this endpoint in your ",(0,l.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=block&action=getblocknobytime×tamp=1715789611&closest=before"},"browser")," \ud83d\udd17"),(0,l.kt)(o.Z,{mdxType:"Tabs"},(0,l.kt)(i.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,l.kt)("th",{parentName:"tr",align:null},"Description"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"timestamp"),(0,l.kt)("td",{parentName:"tr",align:null},"the ",(0,l.kt)("inlineCode",{parentName:"td"},"integer")," representing the Unix timestamp in seconds")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"closest"),(0,l.kt)("td",{parentName:"tr",align:null},"the closest available block to the provided timestamp, either ",(0,l.kt)("inlineCode",{parentName:"td"},"before")," or ",(0,l.kt)("inlineCode",{parentName:"td"},"after")))))),(0,l.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,l.kt)("p",null," Sample Response"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},' {\n "status": "1",\n "message": "OK",\n "result": "1170994",\n }\n')))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f220d995.04f0b383.js b/assets/js/f220d995.04f0b383.js new file mode 100644 index 00000000..b5ead955 --- /dev/null +++ b/assets/js/f220d995.04f0b383.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5450],{8315:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>h});var o=n(4848),t=n(8453);const i={sidebar_position:2},s="Indexing-The-Graph",a={id:"DeveloperResources/TheGraph",title:"Indexing-The-Graph",description:"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.",source:"@site/docs/DeveloperResources/TheGraph.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/TheGraph",permalink:"/docs/DeveloperResources/TheGraph",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Supported Wallets for Bitlayer",permalink:"/docs/DeveloperResources/Wallets"},next:{title:"Indexing-3rd-Party",permalink:"/docs/DeveloperResources/Subgraph"}},c={},h=[{value:"The Graph Official",id:"the-graph-official",level:2},{value:"Project Local Graph Node",id:"project-local-graph-node",level:3},{value:"Set up graph-node",id:"set-up-graph-node",level:4},{value:"Migration",id:"migration",level:3}];function l(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(r.h1,{id:"indexing-the-graph",children:"Indexing-The-Graph"}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.code,{children:"Graph Node"})," is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL."]}),"\n",(0,o.jsxs)(r.ul,{children:["\n",(0,o.jsx)(r.li,{children:(0,o.jsx)(r.a,{href:"https://thegraph.com/",children:"Official website"})}),"\n",(0,o.jsx)(r.li,{children:(0,o.jsx)(r.a,{href:"https://github.com/graphprotocol/graph-node",children:"Github"})}),"\n"]}),"\n",(0,o.jsx)(r.h2,{id:"the-graph-official",children:"The Graph Official"}),"\n",(0,o.jsx)(r.p,{children:"The Graph official has not support bitlayer, will coming soon."}),"\n",(0,o.jsx)(r.h3,{id:"project-local-graph-node",children:"Project Local Graph Node"}),"\n",(0,o.jsxs)(r.p,{children:["We recommend following the ",(0,o.jsx)(r.a,{href:"https://thegraph.com/docs/",children:"Official documentation"})," for deployment. The next operation is only intended as a simple setup tutorial for reference."]}),"\n",(0,o.jsx)(r.h4,{id:"set-up-graph-node",children:"Set up graph-node"}),"\n",(0,o.jsxs)(r.p,{children:["For convenience reasons, we use the official ",(0,o.jsx)(r.a,{href:"https://github.com/graphprotocol/graph-node/tree/master/docker",children:"docker compose"})," for node, database, and IPFS deployment.\r\nNote that the value of the ",(0,o.jsx)(r.code,{children:"ethereum"})," field in ",(0,o.jsx)(r.code,{children:"docker-compose.yml"})," is replaced with ",(0,o.jsx)(r.code,{children:"Bitlayer"}),"'s node connection information."]}),"\n",(0,o.jsx)(r.pre,{children:(0,o.jsx)(r.code,{children:"graph-node:\r\n image: graphprotocol/graph-node\r\n ports:\r\n - '8000:8000'\r\n - '8001:8001'\r\n - '8020:8020'\r\n - '8030:8030'\r\n - '8040:8040'\r\n depends_on:\r\n - ipfs\r\n - postgres\r\n environment:\r\n postgres_host: postgres\r\n postgres_user: graph-node\r\n postgres_pass: let-me-in\r\n postgres_db: graph-node\r\n ipfs: 'ipfs:5001'\r\n ethereum: 'mainnet:http://127.0.0.1:8545' #replaced with bitlayer rpc info\r\n RUST_LOG: info\n"})}),"\n",(0,o.jsxs)(r.blockquote,{children:["\n",(0,o.jsxs)(r.p,{children:["Note: The node connected to graph-node needs to be in ",(0,o.jsx)(r.code,{children:"archive"})," mode (add flag --syncmode full --gcmode archive when starting the node), we recommend each user to build their own RPC node."]}),"\n"]}),"\n",(0,o.jsx)(r.h3,{id:"migration",children:"Migration"}),"\n",(0,o.jsx)(r.p,{children:"You can migrate your subgraph from bitlayer graph node or project local graph node to offical environment when the graph enables bitlayer.\r\nTo migrate smoothly, please set dataSources.source.startBlock in subgraph.yaml, we suggest using the block in which the contract was created."})]})}function d(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,o.jsx)(r,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,r,n)=>{n.d(r,{R:()=>s,x:()=>a});var o=n(6540);const t={},i=o.createContext(t);function s(e){const r=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),o.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f220d995.ed12d333.js b/assets/js/f220d995.ed12d333.js deleted file mode 100644 index 893b976a..00000000 --- a/assets/js/f220d995.ed12d333.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5444],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return h}});var n=r(7294);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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=c(r),h=o,f=d["".concat(l,".").concat(h)]||d[h]||u[h]||a;return r?n.createElement(f,i(i({ref:t},s),{},{components:r})):n.createElement(f,i({ref:t},s))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p.mdxType="string"==typeof e?e:o,i[1]=p;for(var c=2;c<a;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},3582:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return p},contentTitle:function(){return l},metadata:function(){return c},assets:function(){return s},toc:function(){return u},default:function(){return h}});var n=r(7462),o=r(3366),a=(r(7294),r(3905)),i=["components"],p={sidebar_position:2},l="Indexing-The-Graph",c={unversionedId:"DeveloperResources/TheGraph",id:"DeveloperResources/TheGraph",title:"Indexing-The-Graph",description:"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.",source:"@site/docs/DeveloperResources/TheGraph.md",sourceDirName:"DeveloperResources",slug:"/DeveloperResources/TheGraph",permalink:"/docs/DeveloperResources/TheGraph",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docs",previous:{title:"Supported Wallets for Bitlayer",permalink:"/docs/DeveloperResources/Wallets"},next:{title:"Indexing-3rd-Party",permalink:"/docs/DeveloperResources/Subgraph"}},s={},u=[{value:"The Graph Official",id:"the-graph-official",level:2},{value:"Project Local Graph Node",id:"project-local-graph-node",level:3},{value:"Set up graph-node",id:"set-up-graph-node",level:4},{value:"Migration",id:"migration",level:3}],d={toc:u};function h(e){var t=e.components,r=(0,o.Z)(e,i);return(0,a.kt)("wrapper",(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"indexing-the-graph"},"Indexing-The-Graph"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Graph Node")," is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://thegraph.com/"},"Official website")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/graphprotocol/graph-node"},"Github"))),(0,a.kt)("h2",{id:"the-graph-official"},"The Graph Official"),(0,a.kt)("p",null,"The Graph official has not support bitlayer, will coming soon."),(0,a.kt)("h3",{id:"project-local-graph-node"},"Project Local Graph Node"),(0,a.kt)("p",null,"We recommend following the ",(0,a.kt)("a",{parentName:"p",href:"https://thegraph.com/docs/"},"Official documentation")," for deployment. The next operation is only intended as a simple setup tutorial for reference."),(0,a.kt)("h4",{id:"set-up-graph-node"},"Set up graph-node"),(0,a.kt)("p",null,"For convenience reasons, we use the official ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/graphprotocol/graph-node/tree/master/docker"},"docker compose")," for node, database, and IPFS deployment.\nNote that the value of the ",(0,a.kt)("inlineCode",{parentName:"p"},"ethereum")," field in ",(0,a.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," is replaced with ",(0,a.kt)("inlineCode",{parentName:"p"},"Bitlayer"),"'s node connection information."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"graph-node:\n image: graphprotocol/graph-node\n ports:\n - '8000:8000'\n - '8001:8001'\n - '8020:8020'\n - '8030:8030'\n - '8040:8040'\n depends_on:\n - ipfs\n - postgres\n environment:\n postgres_host: postgres\n postgres_user: graph-node\n postgres_pass: let-me-in\n postgres_db: graph-node\n ipfs: 'ipfs:5001'\n ethereum: 'mainnet:http://127.0.0.1:8545' #replaced with bitlayer rpc info\n RUST_LOG: info\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Note: The node connected to graph-node needs to be in ",(0,a.kt)("inlineCode",{parentName:"p"},"archive")," mode (add flag --syncmode full --gcmode archive when starting the node), we recommend each user to build their own RPC node.")),(0,a.kt)("h3",{id:"migration"},"Migration"),(0,a.kt)("p",null,"You can migrate your subgraph from bitlayer graph node or project local graph node to offical environment when the graph enables bitlayer.\nTo migrate smoothly, please set dataSources.source.startBlock in subgraph.yaml, we suggest using the block in which the contract was created."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f6c83f90.607bf363.js b/assets/js/f6c83f90.607bf363.js new file mode 100644 index 00000000..caccc2b2 --- /dev/null +++ b/assets/js/f6c83f90.607bf363.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2198],{9912:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=n(4848),a=n(8453),s=n(1470),o=n(9365);const l={sidebar_position:3,title:"Transactions"},c=void 0,i={id:"Bitlayer Scan APIs/Transactions",title:"Transactions",description:"Check Transaction Receipt Status",source:"@site/docs/Bitlayer Scan APIs/Transactions.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,title:"Transactions"},sidebar:"docs",previous:{title:"Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts"},next:{title:"Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks"}},u={},d=[{value:"Check Transaction Receipt Status",id:"check-transaction-receipt-status",level:2}];function h(e){const t={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"check-transaction-receipt-status",children:"Check Transaction Receipt Status"}),"\n",(0,r.jsx)(t.p,{children:"The status field returns 0 for failed transactions\uff0c1 for successful transactions and 2 for pending transactions."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:"https://api.btrscan.com/scan/api\r\n?module=transaction\r\n&action=gettxreceiptstatus\r\n&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Try this endpoint in your ",(0,r.jsx)(t.a,{href:"https://api.btrscan.com/scan/api?module=transaction&action=gettxreceiptstatus&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013",children:"browser"})," \ud83d\udd17"]}),"\n",(0,r.jsxs)(s.A,{children:[(0,r.jsxs)(o.A,{value:"request",label:"Request",default:!0,children:[(0,r.jsx)(t.p,{children:"Query Parameters"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Parameter"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"txhash"}),(0,r.jsxs)(t.td,{children:["the ",(0,r.jsx)(t.code,{children:"string"})," representing the transaction hash to check the execution status"]})]})})]})]}),(0,r.jsxs)(o.A,{value:"response",label:"Response",children:[(0,r.jsx)(t.p,{children:"Sample Response"}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:'{\r\n "status": "1",\r\n "message": "OK",\r\n "result": {\r\n "status": "1"\r\n }\r\n}\n'})})]})]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var r=n(8215);const a={tabItem:"tabItem_Ymn6"};var s=n(4848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,o),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>k});var r=n(6540),a=n(8215),s=n(3104),o=n(6347),l=n(205),c=n(7485),i=n(1682),u=n(9466);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((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)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}(n);return function(e){const t=(0,i.X)(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 p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const a=(0,o.W6)(),s=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,c.aZ)(s),(0,r.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(a.location.search);t.set(s,e),a.replace({...a.location,search:t.toString()})}),[s,a])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=h(e),[o,c]=(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(!p({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:s}))),[i,d]=b({queryString:n,groupId:a}),[f,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,s]=(0,u.Dv)(n);return[a,(0,r.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:a}),x=(()=>{const e=i??f;return p({value:e,tabValues:s})?e:null})();(0,l.A)((()=>{x&&c(x)}),[x]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),m(e)}),[d,m,s]),tabValues:s}}var m=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=n(4848);function g(e){let{className:t,block:n,selectedValue:r,selectValue:o,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:i}=(0,s.a_)(),u=e=>{const t=e.currentTarget,n=c.indexOf(t),a=l[n].value;a!==r&&(i(t),o(a))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},t),children:l.map((e=>{let{value:t,label:n,attributes:s}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>c.push(e),onKeyDown:d,onClick:u,...s,className:(0,a.A)("tabs__item",x.tabItem,s?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:a}=e;const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=s.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function y(e){const t=f(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",x.tabList),children:[(0,v.jsx)(g,{...t,...e}),(0,v.jsx)(j,{...t,...e})]})}function k(e){const t=(0,m.A)();return(0,v.jsx)(y,{...e,children:d(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(6540);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6c83f90.f9b9ee36.js b/assets/js/f6c83f90.f9b9ee36.js deleted file mode 100644 index b3743bac..00000000 --- a/assets/js/f6c83f90.f9b9ee36.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6577],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return f}});var r=n(7294);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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(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}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(n),f=a,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||o;return n?r.createElement(m,l(l({ref:t},c),{},{components:n})):r.createElement(m,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=n[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},8215:function(e,t,n){n.d(t,{Z:function(){return a}});var r=n(7294);function a(e){var t=e.children,n=e.hidden,a=e.className;return r.createElement("div",{role:"tabpanel",hidden:n,className:a},t)}},9877:function(e,t,n){n.d(t,{Z:function(){return c}});var r=n(7462),a=n(7294),o=n(2389),l=n(5450),i=n(6010),s="tabItem_LplD";function u(e){var t,n,o,u=e.lazy,c=e.block,p=e.defaultValue,d=e.values,f=e.groupId,m=e.className,b=a.Children.map(e.children,(function(e){if((0,a.isValidElement)(e)&&void 0!==e.props.value)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.')})),v=null!=d?d:b.map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes}})),h=(0,l.lx)(v,(function(e,t){return e.value===t.value}));if(h.length>0)throw new Error('Docusaurus error: Duplicate values "'+h.map((function(e){return e.value})).join(", ")+'" found in <Tabs>. Every value needs to be unique.');var y=null===p?p:null!=(t=null!=p?p:null==(n=b.find((function(e){return e.props.default})))?void 0:n.props.value)?t:null==(o=b[0])?void 0:o.props.value;if(null!==y&&!v.some((function(e){return e.value===y})))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+y+'" but none of its children has the corresponding value. Available values are: '+v.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");var k=(0,l.UB)(),g=k.tabGroupChoices,T=k.setTabGroupChoices,O=(0,a.useState)(y),w=O[0],x=O[1],N=[],P=(0,l.o5)().blockElementScrollPositionUntilNextRender;if(null!=f){var E=g[f];null!=E&&E!==w&&v.some((function(e){return e.value===E}))&&x(E)}var j=function(e){var t=e.currentTarget,n=N.indexOf(t),r=v[n].value;r!==w&&(P(t),x(r),null!=f&&T(f,r))},S=function(e){var t,n=null;switch(e.key){case"ArrowRight":var r=N.indexOf(e.currentTarget)+1;n=N[r]||N[0];break;case"ArrowLeft":var a=N.indexOf(e.currentTarget)-1;n=N[a]||N[N.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":c},m)},v.map((function(e){var t=e.value,n=e.label,o=e.attributes;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:w===t?0:-1,"aria-selected":w===t,key:t,ref:function(e){return N.push(e)},onKeyDown:S,onFocus:j,onClick:j},o,{className:(0,i.Z)("tabs__item",s,null==o?void 0:o.className,{"tabs__item--active":w===t})}),null!=n?n:t)}))),u?(0,a.cloneElement)(b.filter((function(e){return e.props.value===w}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},b.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==w})}))))}function c(e){var t=(0,o.Z)();return a.createElement(u,(0,r.Z)({key:String(t)},e))}},3339:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return u},contentTitle:function(){return c},metadata:function(){return p},assets:function(){return d},toc:function(){return f},default:function(){return b}});var r=n(7462),a=n(3366),o=(n(7294),n(3905)),l=n(9877),i=n(8215),s=["components"],u={sidebar_position:3,title:"Transactions"},c=void 0,p={unversionedId:"Bitlayer Scan APIs/Transactions",id:"Bitlayer Scan APIs/Transactions",title:"Transactions",description:"Check Transaction Receipt Status",source:"@site/docs/Bitlayer Scan APIs/Transactions.mdx",sourceDirName:"Bitlayer Scan APIs",slug:"/Bitlayer Scan APIs/Transactions",permalink:"/docs/Bitlayer Scan APIs/Transactions",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,title:"Transactions"},sidebar:"docs",previous:{title:"Contracts",permalink:"/docs/Bitlayer Scan APIs/Contracts"},next:{title:"Blocks",permalink:"/docs/Bitlayer Scan APIs/Blocks"}},d={},f=[{value:"Check Transaction Receipt Status",id:"check-transaction-receipt-status",level:2}],m={toc:f};function b(e){var t=e.components,n=(0,a.Z)(e,s);return(0,o.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"check-transaction-receipt-status"},"Check Transaction Receipt Status"),(0,o.kt)("p",null,"The status field returns 0 for failed transactions\uff0c1 for successful transactions and 2 for pending transactions."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},"https://api.btrscan.com/scan/api\n?module=transaction\n&action=gettxreceiptstatus\n&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013\n")),(0,o.kt)("p",null,"Try this endpoint in your ",(0,o.kt)("a",{parentName:"p",href:"https://api.btrscan.com/scan/api?module=transaction&action=gettxreceiptstatus&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013"},"browser")," \ud83d\udd17"),(0,o.kt)(l.Z,{mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"request",label:"Request",default:!0,mdxType:"TabItem"},"Query Parameters",(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,o.kt)("th",{parentName:"tr",align:null},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"txhash"),(0,o.kt)("td",{parentName:"tr",align:null},"the ",(0,o.kt)("inlineCode",{parentName:"td"},"string")," representing the transaction hash to check the execution status"))))),(0,o.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,o.kt)("p",null," Sample Response"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "1",\n "message": "OK",\n "result": {\n "status": "1"\n }\n}\n')))))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f8691577.1bebd337.js b/assets/js/f8691577.1bebd337.js deleted file mode 100644 index 3ff499fa..00000000 --- a/assets/js/f8691577.1bebd337.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2670],{3905:function(e,t,r){r.d(t,{Zo:function(){return c},kt:function(){return f}});var n=r(7294);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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},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,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=s(r),f=a,d=m["".concat(p,".").concat(f)]||m[f]||u[f]||i;return r?n.createElement(d,o(o({ref:t},c),{},{components:r})):n.createElement(d,o({ref:t},c))}));function f(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 l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},6566:function(e,t,r){r.r(t),r.d(t,{frontMatter:function(){return l},contentTitle:function(){return p},metadata:function(){return s},assets:function(){return c},toc:function(){return u},default:function(){return f}});var n=r(7462),a=r(3366),i=(r(7294),r(3905)),o=["components"],l={sidebar_position:1},p="About Gas",s={unversionedId:"BitlayerNetwork/AboutGas",id:"BitlayerNetwork/AboutGas",title:"About Gas",description:"Important: about gas price",source:"@site/docs/BitlayerNetwork/AboutGas.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/AboutGas",permalink:"/docs/BitlayerNetwork/AboutGas",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Bitlayer Network",permalink:"/docs/category/bitlayer-network"},next:{title:"Networks and RPC Enpoints",permalink:"/docs/BitlayerNetwork/Networks"}},c={},u=[{value:"Important: about gas price",id:"important-about-gas-price",level:2},{value:"Get BTC Gas",id:"get-btc-gas",level:2}],m={toc:u};function f(e){var t=e.components,r=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"about-gas"},"About Gas"),(0,i.kt)("h2",{id:"important-about-gas-price"},"Important: about gas price"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Bitlayer's native gas token is BTC. However, on Bitlayer, BTC has an 18-digit precision, which is different from the 8-digit precision of BTC on Bitcoin. This is done to maintain consistency with the default decimal of tokens of EVM-compatible chains.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"On the Bitlayer, there is a minimum priority fee requirement. Developers can use ",(0,i.kt)("inlineCode",{parentName:"p"},"eth_gasPrice")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"eth_maxPriorityFeePerGas")," to estimate the gas price required for a transaction in real time.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"For the Mainnet/Testnet, a minimum tip of ",(0,i.kt)("inlineCode",{parentName:"p"},"0.1 gwei")," is required. Usually, ",(0,i.kt)("inlineCode",{parentName:"p"},"0.11 gwei")," ",(0,i.kt)("inlineCode",{parentName:"p"},"gasPrice")," for legacy transactions, ",(0,i.kt)("inlineCode",{parentName:"p"},"0.1 gwei")," ",(0,i.kt)("inlineCode",{parentName:"p"},"maxPriorityFeePerGas")," (and set enough amount to ",(0,i.kt)("inlineCode",{parentName:"p"},"maxFeePerGas"),") for EIP1559 transactions SHOULD BE enough.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"For Dapp developers, it's recommended that setting the ",(0,i.kt)("inlineCode",{parentName:"p"},"maxPriorityFeePerGas")," by code before calling apis to send the transaction, rather then leave it empty (filled by the default strategy of wallet (e.g. Metamask) or SDK)."))),(0,i.kt)("h2",{id:"get-btc-gas"},"Get BTC Gas"),(0,i.kt)("p",null,"There are multiple way to get BTC gas on Bitlayer:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Visit ",(0,i.kt)("a",{parentName:"p",href:"https://www.bitlayer.org/bridge"},"https://www.bitlayer.org/bridge"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Visit ",(0,i.kt)("a",{parentName:"p",href:"https://www.bitlayer.org/gas-swap"},"https://www.bitlayer.org/gas-swap")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f8691577.92af7809.js b/assets/js/f8691577.92af7809.js new file mode 100644 index 00000000..a1e06c09 --- /dev/null +++ b/assets/js/f8691577.92af7809.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9038],{3573:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=i(4848),r=i(8453);const s={sidebar_position:1},o="About Gas",a={id:"BitlayerNetwork/AboutGas",title:"About Gas",description:"Important: about gas price",source:"@site/docs/BitlayerNetwork/AboutGas.md",sourceDirName:"BitlayerNetwork",slug:"/BitlayerNetwork/AboutGas",permalink:"/docs/BitlayerNetwork/AboutGas",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Bitlayer Network",permalink:"/docs/category/bitlayer-network"},next:{title:"Networks and RPC Enpoints",permalink:"/docs/BitlayerNetwork/Networks"}},c={},l=[{value:"Important: about gas price",id:"important-about-gas-price",level:2},{value:"Get BTC Gas",id:"get-btc-gas",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"about-gas",children:"About Gas"}),"\n",(0,n.jsx)(t.h2,{id:"important-about-gas-price",children:"Important: about gas price"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Bitlayer's native gas token is BTC. However, on Bitlayer, BTC has an 18-digit precision, which is different from the 8-digit precision of BTC on Bitcoin. This is done to maintain consistency with the default decimal of tokens of EVM-compatible chains."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["On the Bitlayer, there is a minimum priority fee requirement. Developers can use ",(0,n.jsx)(t.code,{children:"eth_gasPrice"})," or ",(0,n.jsx)(t.code,{children:"eth_maxPriorityFeePerGas"})," to estimate the gas price required for a transaction in real time."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["For the Mainnet/Testnet, a minimum tip of ",(0,n.jsx)(t.code,{children:"0.1 gwei"})," is required. Usually, ",(0,n.jsx)(t.code,{children:"0.11 gwei"})," ",(0,n.jsx)(t.code,{children:"gasPrice"})," for legacy transactions, ",(0,n.jsx)(t.code,{children:"0.1 gwei"})," ",(0,n.jsx)(t.code,{children:"maxPriorityFeePerGas"})," (and set enough amount to ",(0,n.jsx)(t.code,{children:"maxFeePerGas"}),") for EIP1559 transactions SHOULD BE enough."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["For Dapp developers, it's recommended that setting the ",(0,n.jsx)(t.code,{children:"maxPriorityFeePerGas"})," by code before calling apis to send the transaction, rather then leave it empty (filled by the default strategy of wallet (e.g. Metamask) or SDK)."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"get-btc-gas",children:"Get BTC Gas"}),"\n",(0,n.jsx)(t.p,{children:"There are multiple way to get BTC gas on Bitlayer:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Visit ",(0,n.jsx)(t.a,{href:"https://www.bitlayer.org/bridge",children:"https://www.bitlayer.org/bridge"})]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Visit ",(0,n.jsx)(t.a,{href:"https://www.bitlayer.org/gas-swap",children:"https://www.bitlayer.org/gas-swap"})]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,t,i)=>{i.d(t,{R:()=>o,x:()=>a});var n=i(6540);const r={},s=n.createContext(r);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fba826a7.4223f169.js b/assets/js/fba826a7.4223f169.js deleted file mode 100644 index 3ac62f83..00000000 --- a/assets/js/fba826a7.4223f169.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7879],{3905:function(t,e,n){n.d(e,{Zo:function(){return d},kt:function(){return m}});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?l(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},l=Object.keys(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var s=a.createContext({}),p=function(t){var e=a.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},d=function(t){var e=p(t.components);return a.createElement(s.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},u=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,s=t.parentName,d=o(t,["components","mdxType","originalType","parentName"]),u=p(n),m=r,k=u["".concat(s,".").concat(m)]||u[m]||c[m]||l;return n?a.createElement(k,i(i({ref:e},d),{},{components:n})):a.createElement(k,i({ref:e},d))}));function m(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=u;var o={};for(var s in e)hasOwnProperty.call(e,s)&&(o[s]=e[s]);o.originalType=t,o.mdxType="string"==typeof t?t:r,i[1]=o;for(var p=2;p<l;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},2915:function(t,e,n){n.r(e),n.d(e,{frontMatter:function(){return o},contentTitle:function(){return s},metadata:function(){return p},assets:function(){return d},toc:function(){return c},default:function(){return m}});var a=n(7462),r=n(3366),l=(n(7294),n(3905)),i=["components"],o={sidebar_position:1},s="Quick Start Guide",p={unversionedId:"Build/QuickStart",id:"Build/QuickStart",title:"Quick Start Guide",description:"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.",source:"@site/docs/Build/QuickStart.md",sourceDirName:"Build",slug:"/Build/QuickStart",permalink:"/docs/Build/QuickStart",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Getting Started",permalink:"/docs/category/getting-started"},next:{title:"Compile, Run and Deploy",permalink:"/docs/Build/Compile and Run"}},d={},c=[{value:"Network Configuration",id:"network-configuration",level:2},{value:"Bitlayer Mainnet",id:"bitlayer-mainnet",level:3},{value:"Bitlayer Testnet",id:"bitlayer-testnet",level:3},{value:"Hardhat",id:"hardhat",level:4},{value:"Foundry",id:"foundry",level:4},{value:"Remix Web IDE",id:"remix-web-ide",level:4},{value:"Truffle",id:"truffle",level:4},{value:"Brownie",id:"brownie",level:4},{value:"ethers.js",id:"ethersjs",level:4},{value:"scaffold-eth",id:"scaffold-eth",level:4},{value:"Configure Hardhat",id:"configure-hardhat",level:4}],u={toc:c};function m(t){var e=t.components,n=(0,r.Z)(t,i);return(0,l.kt)("wrapper",(0,a.Z)({},u,n,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"quick-start-guide"},"Quick Start Guide"),(0,l.kt)("p",null,"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility."),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"Note:")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed. "))),(0,l.kt)("h2",{id:"network-configuration"},"Network Configuration"),(0,l.kt)("h3",{id:"bitlayer-mainnet"},"Bitlayer Mainnet"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,l.kt)("th",{parentName:"tr",align:null},"Value"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Network Name"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"Bitlayer Mainnet"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Chain ID"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"200901"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Currency Symbol"),(0,l.kt)("td",{parentName:"tr",align:null},"BTC")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Explorer"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.btrscan.com"},"https://www.btrscan.com"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public RPC URLs"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://rpc.bitlayer.org"},"https://rpc.bitlayer.org"),", ",(0,l.kt)("a",{parentName:"td",href:"https://rpc.bitlayer-rpc.com"},"https://rpc.bitlayer-rpc.com"),", ",(0,l.kt)("a",{parentName:"td",href:"https://rpc.ankr.com/bitlayer"},"https://rpc.ankr.com/bitlayer"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"WebSocket"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("div",null,"wss://ws.bitlayer.org"),(0,l.kt)("div",null,"wss://ws.bitlayer-rpc.com"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Contract Addresses"),(0,l.kt)("td",{parentName:"tr",align:null},"Refer to the ",(0,l.kt)("a",{parentName:"td",href:"../BitlayerNetwork/Contracts"},"Contract Addresses page"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Connect Wallet"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chainlist.org/?search=bitlayer"},"Click here to connect your wallet to Bitlayer Mainnet"))))),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://medium.com/@Bitlayer/introducing-bitlayer-mainnet-v1-unlocking-the-potential-of-bitcoin-56c5fa2159fd"},"Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin")," "),(0,l.kt)("p",null,"Click the above link to know more about our Mainnet-V1."),(0,l.kt)("h3",{id:"bitlayer-testnet"},"Bitlayer Testnet"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,l.kt)("th",{parentName:"tr",align:null},"Value"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Network"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"Bitlayer Testnet"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Chain ID"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"200810"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Currency Symbol"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"BTC"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Explorer"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://testnet-scan.bitlayer.org"},"https://testnet-scan.bitlayer.org"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public RPC URL"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://testnet-rpc.bitlayer.org"},"https://testnet-rpc.bitlayer.org"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"WebSocket"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("div",null,"wss://testnet-ws.bitlayer.org"),(0,l.kt)("div",null,"wss://testnet-ws.bitlayer-rpc.com"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Contract Addresses"),(0,l.kt)("td",{parentName:"tr",align:null},"Refer to the ",(0,l.kt)("a",{parentName:"td",href:"../BitlayerNetwork/Contracts"},"Contract Addresses page"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Connect Wallet"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chainlist.org/?search=bitlayer&testnets=true"},"Click here to connect your wallet to Bitlayer Testnet"))))),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"tip")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},'The "currency symbol" is required by some wallets like MetaMask.'))),(0,l.kt)("p",null,"Here are the quick access commands for the Bitlayer Testnet:"),(0,l.kt)("h4",{id:"hardhat"},"Hardhat"),(0,l.kt)("p",null,"Modify your Hardhat config file ",(0,l.kt)("inlineCode",{parentName:"p"},"hardhat.config.ts")," to point at the Bitlayer Testnet public RPC."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-jsx"},'const config: HardhatUserConfig = {\n ...\n networks: {\n bitlayer: {\n url: "https://testnet-rpc.bitlayer.org" || "",\n accounts:\n process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],\n },\n },\n};\n')),(0,l.kt)("h4",{id:"foundry"},"Foundry"),(0,l.kt)("p",null,"To deploy using the Bitlayer Testnet Public RPC, run:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"forge create ... --rpc-url=https://https://testnet-rpc.bitlayer.org/ --legacy\n")),(0,l.kt)("h4",{id:"remix-web-ide"},"Remix Web IDE"),(0,l.kt)("p",null,"After compiling your contracts, the easiest way to deploy using Remix is by ",(0,l.kt)("a",{parentName:"p",href:"https://docs.bitlayer.org/user-guide/setup#metamask"},"setting up Metamask"),", then selecting the ",(0,l.kt)("strong",{parentName:"p"},"Bitlayer Testnet")," network."),(0,l.kt)("p",null,"In the \u201cDeploy and Run Transactions\u201d tab, use the \u201cEnvironment\u201d drop-down and select \u201cInjected Provider - MetaMask.\u201d"),(0,l.kt)("p",null,"Connect your wallet and select the Bitlayer Testnet. Your account should be selected automatically in Remix, and you can click \u201cDeploy.\u201d"),(0,l.kt)("h4",{id:"truffle"},"Truffle"),(0,l.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"caution")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"}," The Truffle Suite is being ",(0,l.kt)("strong",{parentName:"p"},"sunset"),". For information on ongoing support, migration options and FAQs, visit the ",(0,l.kt)("a",{parentName:"p",href:"https://consensys.io/blog/consensys-announces-the-sunset-of-truffle-and-ganache-and-new-hardhat?utm_source=github&utm_medium=referral&utm_campaign=2023_Sep_truffle-sunset-2023_announcement_"},"Consensys blog"),". "))),(0,l.kt)("p",null,"Assuming you already have a Truffle environment setup, go to the Truffle ",(0,l.kt)("a",{parentName:"p",href:"https://trufflesuite.com/docs/truffle/reference/configuration/"},"configuration file"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"truffle.js"),". Make sure to have installed HDWalletProvider: ",(0,l.kt)("inlineCode",{parentName:"p"},"npm install @truffle/hdwallet-provider@1.4.0")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-js"},'const HDWalletProvider = require("@truffle/hdwallet-provider")\n...\nmodule.exports = {\n networks: {\n bitlayer: {\n provider: () =>\n new HDWalletProvider(process.env.PRIVATE_KEY, "https://testnet-rpc.bitlayer.org"),\n network_id: \'*\',\n },\n }\n}\n')),(0,l.kt)("h4",{id:"brownie"},"Brownie"),(0,l.kt)("p",null,"To add the Bitlayer Testnet, run the following command:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"brownie networks add Bitlayer host=https://testnet-rpc.bitlayer.org chainid=200810 \n")),(0,l.kt)("p",null,"To set this as your default network, add the following in your project config file:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-yaml"},"networks:\n default: bitlayer\n")),(0,l.kt)("p",null,"Another way to add the Bitlayer Testnet is to create a ",(0,l.kt)("inlineCode",{parentName:"p"},"yaml")," file and run a command to add it."),(0,l.kt)("p",null,"This is an example of a yaml file called ",(0,l.kt)("inlineCode",{parentName:"p"},"network-config.yaml")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-yaml"},"live:\n- name: Ethereum\n networks:\n - chainid: 200810\n explorer: https://testnet-scan.bitlayer.org\n host: https://testnet-rpc.bitlayer.org\n id: bitlayer\n name: Bitlayer Testnet\n")),(0,l.kt)("p",null,"To add the Bitlayer Testnet to the network list, run the following command:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"brownie networks import ./network-config.yaml\n")),(0,l.kt)("p",null,"To deploy on Bitlayer, run the following command. In this example, ",(0,l.kt)("inlineCode",{parentName:"p"},"token.py")," is the script to deploy the smart contract. Replace this with the name of your script:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"brownie run token.py --network Bitlayer\n")),(0,l.kt)("h4",{id:"ethersjs"},"ethers.js"),(0,l.kt)("p",null,"Setting up a Bitlayer Testnet provider in an ",(0,l.kt)("inlineCode",{parentName:"p"},"ethers")," script:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-jsx"},'import { ethers } from "ethers"\n\nconst provider = new ethers.providers.JsonRpcProvider("https://testnet-rpc.bitlayer.org")\n')),(0,l.kt)("h4",{id:"scaffold-eth"},"scaffold-eth"),(0,l.kt)("p",null,"To deploy using Scaffold-eth, you\u2019ll need to point both your Hardhat and React settings at the Bitlayer Testnet."),(0,l.kt)("h4",{id:"configure-hardhat"},"Configure Hardhat"),(0,l.kt)("p",null,"In the ",(0,l.kt)("inlineCode",{parentName:"p"},"packages/hardhat/hardhat.config.js")," file, you\u2019ll add the network and select it as the default network."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-jsx"},'...\n//\n// Select the network you want to deploy to here:\n//\nconst defaultNetwork = "Bitlayer";\n...\nmodule.exports = {\n...\n networks: {\n...\n Bitlayer: {\n url: "https://testnet-rpc.bitlayer.org",\n accounts: {\n mnemonic: mnemonic(),\n },\n },\n }\n...\n}\n')),(0,l.kt)("p",null,"Be sure to fund the deployment wallet as well! Run ",(0,l.kt)("inlineCode",{parentName:"p"},"yarn generate")," to create the wallet and ",(0,l.kt)("inlineCode",{parentName:"p"},"yarn account")," to check its funds. Once funded, run ",(0,l.kt)("inlineCode",{parentName:"p"},"yarn deploy --network Bitlayer")," to deploy on the Bitlayer testnet."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fba826a7.5b6fcab2.js b/assets/js/fba826a7.5b6fcab2.js new file mode 100644 index 00000000..94e6d231 --- /dev/null +++ b/assets/js/fba826a7.5b6fcab2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[988],{8088:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>a});var r=n(4848),i=n(8453);const s={sidebar_position:1},l="Quick Start Guide",d={id:"Build/QuickStart",title:"Quick Start Guide",description:"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.",source:"@site/docs/Build/QuickStart.md",sourceDirName:"Build",slug:"/Build/QuickStart",permalink:"/docs/Build/QuickStart",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docs",previous:{title:"Getting Started",permalink:"/docs/category/getting-started"},next:{title:"Compile, Run and Deploy",permalink:"/docs/Build/Compile and Run"}},o={},a=[{value:"Network Configuration",id:"network-configuration",level:2},{value:"Bitlayer Mainnet",id:"bitlayer-mainnet",level:3},{value:"Bitlayer Testnet",id:"bitlayer-testnet",level:3},{value:"Hardhat",id:"hardhat",level:4},{value:"Foundry",id:"foundry",level:4},{value:"Remix Web IDE",id:"remix-web-ide",level:4},{value:"Truffle",id:"truffle",level:4},{value:"Brownie",id:"brownie",level:4},{value:"ethers.js",id:"ethersjs",level:4},{value:"scaffold-eth",id:"scaffold-eth",level:4},{value:"Configure Hardhat",id:"configure-hardhat",level:4}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"quick-start-guide",children:"Quick Start Guide"}),"\n",(0,r.jsx)(t.p,{children:"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility."}),"\n",(0,r.jsx)(t.admonition,{title:"Note:",type:"tip",children:(0,r.jsx)(t.p,{children:"We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed."})}),"\n",(0,r.jsx)(t.h2,{id:"network-configuration",children:"Network Configuration"}),"\n",(0,r.jsx)(t.h3,{id:"bitlayer-mainnet",children:"Bitlayer Mainnet"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Parameter"}),(0,r.jsx)(t.th,{children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Network Name"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"Bitlayer Mainnet"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Chain ID"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"200901"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Currency Symbol"}),(0,r.jsx)(t.td,{children:"BTC"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Explorer"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://www.btrscan.com",children:"https://www.btrscan.com"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Public RPC URLs"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://rpc.bitlayer.org",children:"https://rpc.bitlayer.org"}),", ",(0,r.jsx)(t.a,{href:"https://rpc.bitlayer-rpc.com",children:"https://rpc.bitlayer-rpc.com"}),", ",(0,r.jsx)(t.a,{href:"https://rpc.ankr.com/bitlayer",children:"https://rpc.ankr.com/bitlayer"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"WebSocket"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)("div",{children:"wss://ws.bitlayer.org"}),(0,r.jsx)("div",{children:"wss://ws.bitlayer-rpc.com"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Contract Addresses"}),(0,r.jsxs)(t.td,{children:["Refer to the ",(0,r.jsx)(t.a,{href:"../BitlayerNetwork/Contracts",children:"Contract Addresses page"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Connect Wallet"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://chainlist.org/?search=bitlayer",children:"Click here to connect your wallet to Bitlayer Mainnet"})})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.a,{href:"https://medium.com/@Bitlayer/introducing-bitlayer-mainnet-v1-unlocking-the-potential-of-bitcoin-56c5fa2159fd",children:"Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin"})}),"\n",(0,r.jsx)(t.p,{children:"Click the above link to know more about our Mainnet-V1."}),"\n",(0,r.jsx)(t.h3,{id:"bitlayer-testnet",children:"Bitlayer Testnet"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Parameter"}),(0,r.jsx)(t.th,{children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Network"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"Bitlayer Testnet"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Chain ID"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"200810"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Currency Symbol"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BTC"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Explorer"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://testnet-scan.bitlayer.org",children:"https://testnet-scan.bitlayer.org"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Public RPC URL"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://testnet-rpc.bitlayer.org",children:"https://testnet-rpc.bitlayer.org"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"WebSocket"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)("div",{children:"wss://testnet-ws.bitlayer.org"}),(0,r.jsx)("div",{children:"wss://testnet-ws.bitlayer-rpc.com"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Contract Addresses"}),(0,r.jsxs)(t.td,{children:["Refer to the ",(0,r.jsx)(t.a,{href:"../BitlayerNetwork/Contracts",children:"Contract Addresses page"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Connect Wallet"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://chainlist.org/?search=bitlayer&testnets=true",children:"Click here to connect your wallet to Bitlayer Testnet"})})]})]})]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsx)(t.mdxAdmonitionTitle,{}),(0,r.jsx)(t.p,{children:'The "currency symbol" is required by some wallets like MetaMask.'})]}),"\n",(0,r.jsx)(t.p,{children:"Here are the quick access commands for the Bitlayer Testnet:"}),"\n",(0,r.jsx)(t.h4,{id:"hardhat",children:"Hardhat"}),"\n",(0,r.jsxs)(t.p,{children:["Modify your Hardhat config file ",(0,r.jsx)(t.code,{children:"hardhat.config.ts"})," to point at the Bitlayer Testnet public RPC."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-jsx",children:'const config: HardhatUserConfig = {\r\n ...\r\n networks: {\r\n bitlayer: {\r\n url: "https://testnet-rpc.bitlayer.org" || "",\r\n accounts:\r\n process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],\r\n },\r\n },\r\n};\n'})}),"\n",(0,r.jsx)(t.h4,{id:"foundry",children:"Foundry"}),"\n",(0,r.jsx)(t.p,{children:"To deploy using the Bitlayer Testnet Public RPC, run:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"forge create ... --rpc-url=https://https://testnet-rpc.bitlayer.org/ --legacy\n"})}),"\n",(0,r.jsx)(t.h4,{id:"remix-web-ide",children:"Remix Web IDE"}),"\n",(0,r.jsxs)(t.p,{children:["After compiling your contracts, the easiest way to deploy using Remix is by ",(0,r.jsx)(t.a,{href:"https://docs.bitlayer.org/user-guide/setup#metamask",children:"setting up Metamask"}),", then selecting the ",(0,r.jsx)(t.strong,{children:"Bitlayer Testnet"})," network."]}),"\n",(0,r.jsx)(t.p,{children:"In the \u201cDeploy and Run Transactions\u201d tab, use the \u201cEnvironment\u201d drop-down and select \u201cInjected Provider - MetaMask.\u201d"}),"\n",(0,r.jsx)(t.p,{children:"Connect your wallet and select the Bitlayer Testnet. Your account should be selected automatically in Remix, and you can click \u201cDeploy.\u201d"}),"\n",(0,r.jsx)(t.h4,{id:"truffle",children:"Truffle"}),"\n",(0,r.jsx)(t.admonition,{type:"caution",children:(0,r.jsxs)(t.p,{children:["The Truffle Suite is being ",(0,r.jsx)(t.strong,{children:"sunset"}),". For information on ongoing support, migration options and FAQs, visit the ",(0,r.jsx)(t.a,{href:"https://consensys.io/blog/consensys-announces-the-sunset-of-truffle-and-ganache-and-new-hardhat?utm_source=github&utm_medium=referral&utm_campaign=2023_Sep_truffle-sunset-2023_announcement_",children:"Consensys blog"}),"."]})}),"\n",(0,r.jsxs)(t.p,{children:["Assuming you already have a Truffle environment setup, go to the Truffle ",(0,r.jsx)(t.a,{href:"https://trufflesuite.com/docs/truffle/reference/configuration/",children:"configuration file"}),", ",(0,r.jsx)(t.code,{children:"truffle.js"}),". Make sure to have installed HDWalletProvider: ",(0,r.jsx)(t.code,{children:"npm install @truffle/hdwallet-provider@1.4.0"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'const HDWalletProvider = require("@truffle/hdwallet-provider")\r\n...\r\nmodule.exports = {\r\n networks: {\r\n bitlayer: {\r\n provider: () =>\r\n new HDWalletProvider(process.env.PRIVATE_KEY, "https://testnet-rpc.bitlayer.org"),\r\n network_id: \'*\',\r\n },\r\n }\r\n}\n'})}),"\n",(0,r.jsx)(t.h4,{id:"brownie",children:"Brownie"}),"\n",(0,r.jsx)(t.p,{children:"To add the Bitlayer Testnet, run the following command:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"brownie networks add Bitlayer host=https://testnet-rpc.bitlayer.org chainid=200810 \n"})}),"\n",(0,r.jsx)(t.p,{children:"To set this as your default network, add the following in your project config file:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-yaml",children:"networks:\r\n default: bitlayer\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Another way to add the Bitlayer Testnet is to create a ",(0,r.jsx)(t.code,{children:"yaml"})," file and run a command to add it."]}),"\n",(0,r.jsxs)(t.p,{children:["This is an example of a yaml file called ",(0,r.jsx)(t.code,{children:"network-config.yaml"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-yaml",children:"live:\r\n- name: Ethereum\r\n networks:\r\n - chainid: 200810\r\n explorer: https://testnet-scan.bitlayer.org\r\n host: https://testnet-rpc.bitlayer.org\r\n id: bitlayer\r\n name: Bitlayer Testnet\n"})}),"\n",(0,r.jsx)(t.p,{children:"To add the Bitlayer Testnet to the network list, run the following command:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"brownie networks import ./network-config.yaml\n"})}),"\n",(0,r.jsxs)(t.p,{children:["To deploy on Bitlayer, run the following command. In this example, ",(0,r.jsx)(t.code,{children:"token.py"})," is the script to deploy the smart contract. Replace this with the name of your script:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"brownie run token.py --network Bitlayer\n"})}),"\n",(0,r.jsx)(t.h4,{id:"ethersjs",children:"ethers.js"}),"\n",(0,r.jsxs)(t.p,{children:["Setting up a Bitlayer Testnet provider in an ",(0,r.jsx)(t.code,{children:"ethers"})," script:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-jsx",children:'import { ethers } from "ethers"\r\n\r\nconst provider = new ethers.providers.JsonRpcProvider("https://testnet-rpc.bitlayer.org")\n'})}),"\n",(0,r.jsx)(t.h4,{id:"scaffold-eth",children:"scaffold-eth"}),"\n",(0,r.jsx)(t.p,{children:"To deploy using Scaffold-eth, you\u2019ll need to point both your Hardhat and React settings at the Bitlayer Testnet."}),"\n",(0,r.jsx)(t.h4,{id:"configure-hardhat",children:"Configure Hardhat"}),"\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.code,{children:"packages/hardhat/hardhat.config.js"})," file, you\u2019ll add the network and select it as the default network."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-jsx",children:'...\r\n//\r\n// Select the network you want to deploy to here:\r\n//\r\nconst defaultNetwork = "Bitlayer";\r\n...\r\nmodule.exports = {\r\n...\r\n\tnetworks: {\r\n...\r\n Bitlayer: {\r\n url: "https://testnet-rpc.bitlayer.org",\r\n accounts: {\r\n mnemonic: mnemonic(),\r\n },\r\n },\r\n\t}\r\n...\r\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["Be sure to fund the deployment wallet as well! Run ",(0,r.jsx)(t.code,{children:"yarn generate"})," to create the wallet and ",(0,r.jsx)(t.code,{children:"yarn account"})," to check its funds. Once funded, run ",(0,r.jsx)(t.code,{children:"yarn deploy --network Bitlayer"})," to deploy on the Bitlayer testnet."]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>d});var r=n(6540);const i={},s=r.createContext(i);function l(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.a99d99d4.js b/assets/js/main.a99d99d4.js deleted file mode 100644 index bce4c725..00000000 --- a/assets/js/main.a99d99d4.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.a99d99d4.js.LICENSE.txt */ -(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[179],{9782:function(e,t,n){"use strict";n.r(t),t.default={title:"Bitlayer",tagline:"The first Bitcoin security-equivalent Layer 2 based on BitVM",url:"https://docs.bitlayer.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/bitlayer.ico",organizationName:"bitlayer-org",projectName:"bitlayer-org.github.io",presets:[["classic",{docs:{routeBasePath:"docs",sidebarPath:"/home/runner/work/bitlayer-org.github.io/bitlayer-org.github.io/sidebars.js"},blog:{showReadingTime:!0},theme:{customCss:"/home/runner/work/bitlayer-org.github.io/bitlayer-org.github.io/src/css/custom.css"}}]],themeConfig:{initialColorMode:"dark",navbar:{title:"Bitlayer",logo:{alt:"Bitlayer Logo",src:"img/FA_Bitlayer-Logo.png"},items:[{to:"/docs/Introduction",position:"left",label:"Build Now",activeBaseRegex:"/docs/"},{href:"https://medium.com/@Bitlayer",label:"Blog",position:"left"},{href:"https://github.com/bitlayer-org",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Build Now",to:"/docs/Introduction"}]},{title:"Community",items:[{label:"Telegram",href:"https://t.me/bitlayerofficial"},{label:"Discord",href:"https://discord.com/invite/GGSjNyD8nj"},{label:"Twitter",href:"https://twitter.com/BitLayerLabs"}]},{title:"More",items:[{label:"Blog",href:"https://medium.com/@Bitlayer"},{label:"GitHub",href:"https://github.com/bitlayer-org"}]}],copyright:"Copyright \xa9 2024 Bitlayer"},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},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:[]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},docs:{versionPersistence:"localStorage"},metadata:[],hideableSidebar:!1,autoCollapseSidebarCategories:!1,tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],titleDelimiter:"|",noIndex:!1}},723:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7294),o=n(7462),a=n(8356),i=n.n(a);function l(e){var t=e.error,n=e.retry,o=e.pastDelay;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,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):o?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 s=n(6887),u={"01a85c17":[function(){return Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,497))},"@theme/BlogTagsListPage",497],"068d31a7":[function(){return Promise.all([n.e(532),n.e(3573)]).then(n.bind(n,7390))},"@site/docs/Bitlayer Scan APIs/Accounts.mdx",7390],"09a35e94":[function(){return n.e(5931).then(n.bind(n,1850))},"@site/docs/BitlayerNetwork/Contracts.md",1850],"0b58a425":[function(){return n.e(6226).then(n.t.bind(n,8247,19))},"~blog/default/blog-tags-hello-bitlayer-8a8-list.json",8247],"14eb3368":[function(){return Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,8507))},"@theme/DocCategoryGeneratedIndexPage",8507],15315605:[function(){return n.e(8745).then(n.bind(n,5609))},"@site/blog/2024-03-01-first-blog-post.md?truncated=true",5609],17794634:[function(){return n.e(9641).then(n.bind(n,3289))},"@site/docs/Introduction/TechnicalArchitecture.md",3289],17896441:[function(){return Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,9153))},"@theme/DocItem",9153],"182ba0de":[function(){return n.e(7401).then(n.bind(n,4708))},"@site/docs/Build/Compile and Run.md",4708],"1b2e8bb4":[function(){return n.e(9581).then(n.t.bind(n,2929,19))},"~docs/default/category-docs-docs-category-bitlayer-architecture-25d.json",2929],"1be78505":[function(){return Promise.all([n.e(532),n.e(5897),n.e(9514)]).then(n.bind(n,6756))},"@theme/DocPage",6756],"1cbcec10":[function(){return n.e(6922).then(n.bind(n,3227))},"@site/docs/BitlayerArchitecture/TransactionLifecycle.md",3227],"1f391b9e":[function(){return Promise.all([n.e(532),n.e(5897),n.e(3085)]).then(n.bind(n,6416))},"@theme/MDXPage",6416],"1f9bfb41":[function(){return n.e(5519).then(n.bind(n,8069))},"@site/docs/DeveloperResources/Block Explorers.md",8069],"25f9780a":[function(){return n.e(5096).then(n.bind(n,4568))},"@site/docs/Introduction/Introduction.md",4568],"3673f061":[function(){return n.e(8107).then(n.bind(n,5416))},"@site/docs/DeveloperResources/Wallets.md",5416],"393be207":[function(){return n.e(7414).then(n.bind(n,3123))},"@site/src/pages/markdown-page.md",3123],"3af9b51d":[function(){return n.e(5800).then(n.bind(n,6039))},"@site/docs/BitlayerNetwork/Json-RPC.md",6039],"3b705731":[function(){return n.e(3789).then(n.bind(n,9614))},"@site/docs/DeveloperResources/Faucets.md",9614],"494fd248":[function(){return Promise.all([n.e(532),n.e(5491)]).then(n.bind(n,7782))},"@site/docs/Bitlayer Scan APIs/Contracts.mdx",7782],"52addc0b":[function(){return n.e(3245).then(n.t.bind(n,6056,19))},"~docs/default/category-docs-docs-category-getting-started-0e8.json",6056],"5a0b0ff1":[function(){return n.e(7924).then(n.bind(n,4201))},"@site/docs/BitlayerNetwork/Networks.md",4201],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(n,9782))},"@generated/docusaurus.config",9782],"6840a158":[function(){return n.e(8236).then(n.bind(n,3778))},"@site/docs/FAQs/Frequently asked questions.md",3778],"6875c492":[function(){return Promise.all([n.e(532),n.e(5897),n.e(8610)]).then(n.bind(n,9404))},"@theme/BlogTagsPostsPage",9404],"77aa6ee4":[function(){return n.e(2234).then(n.t.bind(n,2232,19))},"~docs/default/category-docs-docs-category-faqs-2fa.json",2232],"7868b092":[function(){return n.e(328).then(n.t.bind(n,9141,19))},"~docs/default/category-docs-docs-category-developer-resources-099.json",9141],"790d882a":[function(){return n.e(7834).then(n.bind(n,6776))},"@site/docs/DeveloperResources/BTC Connect.md",6776],"79bd6113":[function(){return n.e(5714).then(n.t.bind(n,5100,19))},"~blog/default/blog-tags-hello-bitlayer-8a8.json",5100],"79f3b2bb":[function(){return n.e(7525).then(n.bind(n,3379))},"@site/docs/BitlayerNetwork/Bridges.md",3379],"7ae85faa":[function(){return n.e(2315).then(n.bind(n,6815))},"@site/docs/Introduction/Roadmap.md",6815],"7d70e263":[function(){return Promise.all([n.e(532),n.e(3146)]).then(n.bind(n,9680))},"@site/docs/Bitlayer Scan APIs/Tokens.mdx",9680],"814f3328":[function(){return n.e(2535).then(n.t.bind(n,5641,19))},"~blog/default/blog-post-list-prop-default.json",5641],91907527:[function(){return n.e(3377).then(n.bind(n,8149))},"@site/docs/BitlayerArchitecture/LVM.md",8149],"928ec736":[function(){return n.e(623).then(n.bind(n,4643))},"@site/docs/FAQs/Defillama TVL integration.md",4643],"935f2afb":[function(){return n.e(53).then(n.t.bind(n,1109,19))},"~docs/default/version-current-metadata-prop-751.json",1109],"94da5579":[function(){return n.e(2179).then(n.bind(n,8214))},"@site/blog/2024-03-01-first-blog-post.md",8214],"97338e48":[function(){return n.e(837).then(n.bind(n,831))},"@site/docs/BitlayerNetwork/PegTokens.md",831],"9e4087bc":[function(){return n.e(3608).then(n.bind(n,3012))},"@theme/BlogArchivePage",3012],a51f749a:[function(){return n.e(7600).then(n.bind(n,3947))},"@site/docs/Introduction/AboutBitlayer.md",3947],a6aa9e1f:[function(){return Promise.all([n.e(532),n.e(5897),n.e(3089)]).then(n.bind(n,7329))},"@theme/BlogListPage",7329],a7023ddc:[function(){return n.e(1713).then(n.t.bind(n,3457,19))},"~blog/default/blog-tags-tags-4c2.json",3457],aaa1c66f:[function(){return Promise.all([n.e(532),n.e(2e3)]).then(n.bind(n,5775))},"@site/docs/Bitlayer Scan APIs/Logs.mdx",5775],b2b675dd:[function(){return n.e(533).then(n.t.bind(n,8017,19))},"~blog/default/blog-c06.json",8017],b2c52ba9:[function(){return n.e(9222).then(n.bind(n,346))},"@site/docs/BitlayerArchitecture/BitlayerDesign.md",346],b2f554cd:[function(){return n.e(1477).then(n.t.bind(n,10,19))},"~blog/default/blog-archive-80c.json",10],c4f5d8e4:[function(){return n.e(4195).then(n.bind(n,2841))},"@site/src/pages/index.js",2841],c4fdee62:[function(){return n.e(1760).then(n.t.bind(n,1338,19))},"~docs/default/category-docs-docs-category-bitlayer-network-123.json",1338],c525c73d:[function(){return n.e(5529).then(n.bind(n,6886))},"@site/docs/FAQs/WBTC.md",6886],c889d586:[function(){return n.e(914).then(n.t.bind(n,3053,19))},"~docs/default/category-docs-docs-category-bitlayer-scan-apis-9eb.json",3053],c8ff74a9:[function(){return n.e(8864).then(n.bind(n,9052))},"@site/docs/FAQs/Contact Details.md",9052],ccc49370:[function(){return Promise.all([n.e(532),n.e(5897),n.e(6103)]).then(n.bind(n,9360))},"@theme/BlogPostPage",9360],d1d3f8b1:[function(){return n.e(511).then(n.bind(n,7724))},"@site/docs/Introduction/BitlayerVsEth.md",7724],d2eb7327:[function(){return n.e(8994).then(n.bind(n,9331))},"@site/docs/DeveloperResources/Subgraph.md",9331],d5bbf5a4:[function(){return n.e(4316).then(n.bind(n,3754))},"@site/docs/Introduction/BitVM.md",3754],ecc6b621:[function(){return n.e(7020).then(n.t.bind(n,2705,19))},"~docs/default/category-docs-docs-category-introduction-c4f.json",2705],ef566535:[function(){return Promise.all([n.e(532),n.e(8746)]).then(n.bind(n,4530))},"@site/docs/Bitlayer Scan APIs/Blocks.mdx",4530],f220d995:[function(){return n.e(5444).then(n.bind(n,3582))},"@site/docs/DeveloperResources/TheGraph.md",3582],f6c83f90:[function(){return Promise.all([n.e(532),n.e(6577)]).then(n.bind(n,3339))},"@site/docs/Bitlayer Scan APIs/Transactions.mdx",3339],f8691577:[function(){return n.e(2670).then(n.bind(n,6566))},"@site/docs/BitlayerNetwork/AboutGas.md",6566],fba826a7:[function(){return n.e(7879).then(n.bind(n,2915))},"@site/docs/Build/QuickStart.md",2915]},c=n(9670);function d(e,t){if("*"===e)return i()({loading:l,loader:function(){return n.e(4608).then(n.bind(n,4608))}});var a=s[e+"-"+t],d=[],f=[],p={},m=(0,c.Z)(a);return Object.keys(m).forEach((function(e){var t=u[m[e]];t&&(p[e]=t[0],d.push(t[1]),f.push(t[2]))})),i().Map({loading:l,loader:p,modules:d,webpack:function(){return f},render:function(e,t){var n=JSON.parse(JSON.stringify(a));Object.keys(e).forEach((function(t){for(var r=n,o=t.split("."),a=0;a<o.length-1;a+=1)r=r[o[a]];r[o[o.length-1]]=e[t].default;var i=Object.keys(e[t]).filter((function(e){return"default"!==e}));i&&i.length&&i.forEach((function(n){r[o[o.length-1]][n]=e[t][n]}))}));var i=n.component;return delete n.component,r.createElement(i,(0,o.Z)({},n,t))}})}var f=[{path:"/blog",component:d("/blog","651"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","f4c"),exact:!0},{path:"/blog/Bitlayer: Amplifying Bitcoin",component:d("/blog/Bitlayer: Amplifying Bitcoin","6b2"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","e13"),exact:!0},{path:"/blog/tags/hello-bitlayer",component:d("/blog/tags/hello-bitlayer","73d"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","be1"),exact:!0},{path:"/docs",component:d("/docs","9ae"),routes:[{path:"/docs/Bitlayer Scan APIs/Accounts",component:d("/docs/Bitlayer Scan APIs/Accounts","4dd"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Blocks",component:d("/docs/Bitlayer Scan APIs/Blocks","cf1"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Contracts",component:d("/docs/Bitlayer Scan APIs/Contracts","460"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Logs",component:d("/docs/Bitlayer Scan APIs/Logs","0f0"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Tokens",component:d("/docs/Bitlayer Scan APIs/Tokens","3c5"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Transactions",component:d("/docs/Bitlayer Scan APIs/Transactions","68b"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/BitlayerDesign",component:d("/docs/BitlayerArchitecture/BitlayerDesign","6b2"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/LVM",component:d("/docs/BitlayerArchitecture/LVM","6b6"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/TransactionLifecycle",component:d("/docs/BitlayerArchitecture/TransactionLifecycle","e7a"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/AboutGas",component:d("/docs/BitlayerNetwork/AboutGas","f7e"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Bridges",component:d("/docs/BitlayerNetwork/Bridges","b65"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Contracts",component:d("/docs/BitlayerNetwork/Contracts","dd5"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Json-RPC",component:d("/docs/BitlayerNetwork/Json-RPC","944"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Networks",component:d("/docs/BitlayerNetwork/Networks","2ec"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/PegTokens",component:d("/docs/BitlayerNetwork/PegTokens","05d"),exact:!0,sidebar:"docs"},{path:"/docs/Build/Compile and Run",component:d("/docs/Build/Compile and Run","2f1"),exact:!0,sidebar:"docs"},{path:"/docs/Build/QuickStart",component:d("/docs/Build/QuickStart","e0a"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-architecture",component:d("/docs/category/bitlayer-architecture","5bb"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-network",component:d("/docs/category/bitlayer-network","3d8"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-scan-apis",component:d("/docs/category/bitlayer-scan-apis","911"),exact:!0,sidebar:"docs"},{path:"/docs/category/developer-resources",component:d("/docs/category/developer-resources","c05"),exact:!0,sidebar:"docs"},{path:"/docs/category/faqs",component:d("/docs/category/faqs","203"),exact:!0,sidebar:"docs"},{path:"/docs/category/getting-started",component:d("/docs/category/getting-started","066"),exact:!0,sidebar:"docs"},{path:"/docs/category/introduction",component:d("/docs/category/introduction","15c"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Block Explorers",component:d("/docs/DeveloperResources/Block Explorers","bb6"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/BTC Connect",component:d("/docs/DeveloperResources/BTC Connect","60e"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Faucets",component:d("/docs/DeveloperResources/Faucets","e07"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Subgraph",component:d("/docs/DeveloperResources/Subgraph","767"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/TheGraph",component:d("/docs/DeveloperResources/TheGraph","46b"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Wallets",component:d("/docs/DeveloperResources/Wallets","811"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Contact Details",component:d("/docs/FAQs/Contact Details","ce4"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Defillama TVL integration",component:d("/docs/FAQs/Defillama TVL integration","24b"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Frequently asked questions",component:d("/docs/FAQs/Frequently asked questions","f1a"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/WBTC",component:d("/docs/FAQs/WBTC","e63"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/",component:d("/docs/Introduction/","aec"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/AboutBitlayer",component:d("/docs/Introduction/AboutBitlayer","37a"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/BitlayerVsEth",component:d("/docs/Introduction/BitlayerVsEth","165"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/BitVM",component:d("/docs/Introduction/BitVM","be5"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/Roadmap",component:d("/docs/Introduction/Roadmap","796"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/TechnicalArchitecture",component:d("/docs/Introduction/TechnicalArchitecture","b7b"),exact:!0,sidebar:"docs"}]},{path:"/",component:d("/","deb"),exact:!0},{path:"*",component:d("*")}]},5753:function(e,t,n){"use strict";var r=n(7294),o=n(3935),a=n(3727),i=n(405),l=n(723),s=n(412),u=n(8790),c=n(9913),d=n(7041),f=n(4578),p=n(6775),m=n(4865),h=n.n(m),g=[n(2497),n(2448),n(6743),n(2295)];function v(e,t){g.forEach((function(n){var r,o,a=null!==(o=null===(r=null==n?void 0:n.default)||void 0===r?void 0:r[e])&&void 0!==o?o:n[e];null==a||a.apply(void 0,t)}))}var b={onRouteUpdate:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];v("onRouteUpdate",t)},onRouteUpdateDelayed:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];v("onRouteUpdateDelayed",t)}},y=b;function w(e,t){var n=(0,u.f)(e,t);return Promise.all(n.map((function(e){var t=e.route.component;if(t&&t.preload)return t.preload()})))}var k={};function E(e){if(k[e.pathname])return Object.assign({},e,{pathname:k[e.pathname]});var t=e.pathname||"/";return""===(t=t.trim().replace(/\/index\.html$/,""))&&(t="/"),k[e.pathname]=t,Object.assign({},e,{pathname:t})}h().configure({showSpinner:!1});var S=function(e){function t(t){var n;return(n=e.call(this,t)||this).previousLocation=null,n.progressBarTimeout=null,n.state={nextRouteHasLoaded:!0},n}(0,f.Z)(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e,t){var n=this,r=e.location!==this.props.location,o=this.props,a=o.routes,i=o.delay;if(r){var l=E(e.location);return this.startProgressBar(i),this.previousLocation=E(this.props.location),this.setState({nextRouteHasLoaded:!1}),w(a,l.pathname).then((function(){y.onRouteUpdate({previousLocation:n.previousLocation,location:l}),n.previousLocation=null,n.setState({nextRouteHasLoaded:!0},n.stopProgressBar);var e=l.hash;if(e){var t=decodeURIComponent(e.substring(1)),r=document.getElementById(t);r&&r.scrollIntoView()}else window.scrollTo(0,0)})).catch((function(e){return console.warn(e)})),!1}return!!t.nextRouteHasLoaded},n.clearProgressBarTimeout=function(){this.progressBarTimeout&&(clearTimeout(this.progressBarTimeout),this.progressBarTimeout=null)},n.startProgressBar=function(e){var t=this;this.clearProgressBarTimeout(),this.progressBarTimeout=setTimeout((function(){y.onRouteUpdateDelayed({location:E(t.props.location)}),h().start()}),e)},n.stopProgressBar=function(){this.clearProgressBarTimeout(),h().done()},n.render=function(){var e=this.props,t=e.children,n=e.location;return r.createElement(p.AW,{location:E(n),render:function(){return t}})},t}(r.Component),x=(0,p.EN)(S),C=n(5742),T=n(2263),_="docusaurus-base-url-issue-banner-container",A="docusaurus-base-url-issue-banner-suggestion-container",P="__DOCUSAURUS_INSERT_BASEURL_BANNER";function R(e){return"\nwindow['"+P+"'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['"+P+"'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('"+_+"');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = "+JSON.stringify(function(e){return'\n<div id="docusaurus-base-url-issue-banner" 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="'+A+'" style="font-weight: bold; color: green;"></span></p>\n</div>\n'}(e)).replace(/</g,"\\<")+";\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('"+A+"');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n"}function L(){var e=(0,T.Z)().siteConfig.baseUrl;return(0,r.useLayoutEffect)((function(){window[P]=!1}),[]),r.createElement(r.Fragment,null,!s.Z.canUseDOM&&r.createElement(C.Z,null,r.createElement("script",null,R(e))),r.createElement("div",{id:_}))}function N(){var e=(0,T.Z)().siteConfig,t=e.baseUrl,n=e.baseUrlIssueBanner,o=(0,p.TH)().pathname;return n&&o===t?r.createElement(L,null):null}function O(e){return e.children}var I=n(780),D=n(4953);function B(){return r.createElement(I.Z,{fallback:D.Z},r.createElement(d.M,null,r.createElement(c.t,null,r.createElement(O,null,r.createElement(N,null),r.createElement(x,{routes:l.Z,delay:1e3},(0,u.H)(l.Z))))))}var M=n(6887);var F=function(e){if("undefined"==typeof document)return!1;var t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e){return new Promise((function(t,n){if("undefined"!=typeof document){var r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=t,r.onerror=n,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(r)}else n()}))}:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=function(){200===r.status?t():n()},r.send(null)}))},j={};var z=n(9670),U={},Z={},q=function(){var e,t;return(null===(e=navigator.connection)||void 0===e?void 0:e.effectiveType.includes("2g"))&&(null===(t=navigator.connection)||void 0===t?void 0:t.saveData)},G={prefetch:function(e){return!!function(e){return!q()&&!Z[e]&&!U[e]}(e)&&(U[e]=!0,(0,u.f)(l.Z,e).flatMap((function(e){return t=e.route.path,Object.entries(M).filter((function(e){return e[0].replace(/-[^-]+$/,"")===t})).flatMap((function(e){var t=e[1];return Object.values((0,z.Z)(t))}));var t})).forEach((function(e){var t,r=n.gca(e);r&&!/undefined/.test(r)&&(t=r,new Promise((function(e){j[t]?e():F(t).then((function(){e(),j[t]=!0})).catch((function(){}))})))})),!0)},preload:function(e){return!!function(e){return!q()&&!Z[e]}(e)&&(Z[e]=!0,w(l.Z,e),!0)}};if(s.Z.canUseDOM){window.docusaurus=G;var $=o.hydrate;w(l.Z,window.location.pathname).then((function(){$(r.createElement(i.B6,null,r.createElement(a.VK,null,r.createElement(B,null))),document.getElementById("__docusaurus"))}))}},780:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(4578),o=n(7294),a=n(412),i=n(4953),l=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){a.Z.canUseDOM&&this.setState({error:e})},n.render=function(){var e,t=this,n=this.props.children,r=this.state.error;return r?(null!==(e=this.props.fallback)&&void 0!==e?e:i.Z)({error:r,tryAgain:function(){return t.setState({error:null})}}):null!=n?n:null},t}(o.Component)},412:function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseIntersectionObserver:n&&"IntersectionObserver"in window,canUseViewport:n&&!!window.screen};t.Z=r},5742:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o=n(405);function a(e){return r.createElement(o.ql,e)}},9960:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var r=n(7462),o=n(3366),a=n(7294),i=n(3727),l=n(2263),s=n(3919),u=n(412),c=(0,a.createContext)({collectLink:function(){}});var d=n(4996),f=n(8780),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m=e.isNavLink,h=e.to,g=e.href,v=e.activeClassName,b=e.isActive,y=e["data-noBrokenLinkCheck"],w=e.autoAddBaseUrl,k=void 0===w||w,E=(0,o.Z)(e,p),S=(0,l.Z)().siteConfig,x=S.trailingSlash,C=S.baseUrl,T=(0,d.C)().withBaseUrl,_=(0,a.useContext)(c),A=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(function(){return A.current}));var P=h||g;var R,L=(0,s.Z)(P),N=null==P?void 0:P.replace("pathname://",""),O=void 0!==N?(R=N,k&&function(e){return e.startsWith("/")}(R)?T(R):R):void 0;O&&L&&(O=(0,f.applyTrailingSlash)(O,{trailingSlash:x,baseUrl:C}));var I=(0,a.useRef)(!1),D=m?i.OL:i.rU,B=u.Z.canUseIntersectionObserver,M=(0,a.useRef)();(0,a.useEffect)((function(){return!B&&L&&null!=O&&window.docusaurus.prefetch(O),function(){B&&M.current&&M.current.disconnect()}}),[M,O,B,L]);var F=null!==(n=null==O?void 0:O.startsWith("#"))&&void 0!==n&&n,j=!O||!L||F;return O&&L&&!F&&!y&&_.collectLink(O),j?a.createElement("a",(0,r.Z)({ref:A,href:O},P&&!L&&{target:"_blank",rel:"noopener noreferrer"},E)):a.createElement(D,(0,r.Z)({},E,{onMouseEnter:function(){I.current||null==O||(window.docusaurus.preload(O),I.current=!0)},innerRef:function(e){var t,n;A.current=e,B&&e&&L&&(t=e,n=function(){null!=O&&window.docusaurus.prefetch(O)},M.current=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(M.current.unobserve(t),M.current.disconnect(),n())}))})),M.current.observe(t))},to:O||""},m&&{isActive:b,activeClassName:v}))}var h=a.forwardRef(m)},1875:function(e,t){"use strict";t.Z=function(){return null}},5999:function(e,t,n){"use strict";n.d(t,{Z:function(){return c},I:function(){return u}});var r=n(7294),o=/{\w+}/g,a="{}";function i(e,t){var n=[],i=e.replace(o,(function(e){var o=e.substring(1,e.length-1),i=null==t?void 0:t[o];if(void 0!==i){var l=r.isValidElement(i)?i:String(i);return n.push(l),a}return e}));return 0===n.length?e:n.every((function(e){return"string"==typeof e}))?i.split(a).reduce((function(e,t,r){var o;return e.concat(t).concat(null!==(o=n[r])&&void 0!==o?o:"")}),""):i.split(a).reduce((function(e,t,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},t,n[o])])}),[])}var l=n(7529);function s(e){var t,n,r=e.id,o=e.message;if(void 0===r&&void 0===o)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!==(n=null!==(t=l[null!=r?r:o])&&void 0!==t?t:o)&&void 0!==n?n:r}function u(e,t){return i(s({message:e.message,id:e.id}),t)}function c(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");return i(s({message:t,id:n}),r)}},9913:function(e,t,n){"use strict";n.d(t,{_:function(){return o},t:function(){return a}});var r=n(7294),o=r.createContext(!1);function a(e){var t=e.children,n=(0,r.useState)(!1),a=n[0],i=n[1];return(0,r.useEffect)((function(){i(!0)}),[]),r.createElement(o.Provider,{value:a},t)}},9935:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});var r="default"},7041:function(e,t,n){"use strict";n.d(t,{_:function(){return c},M:function(){return d}});var r=n(7294),o=n(9782),a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"Introduction/Introduction","docs":[{"id":"Bitlayer Scan APIs/Accounts","path":"/docs/Bitlayer Scan APIs/Accounts","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Blocks","path":"/docs/Bitlayer Scan APIs/Blocks","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Contracts","path":"/docs/Bitlayer Scan APIs/Contracts","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Logs","path":"/docs/Bitlayer Scan APIs/Logs","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Tokens","path":"/docs/Bitlayer Scan APIs/Tokens","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Transactions","path":"/docs/Bitlayer Scan APIs/Transactions","sidebar":"docs"},{"id":"BitlayerArchitecture/BitlayerDesign","path":"/docs/BitlayerArchitecture/BitlayerDesign","sidebar":"docs"},{"id":"BitlayerArchitecture/LVM","path":"/docs/BitlayerArchitecture/LVM","sidebar":"docs"},{"id":"BitlayerArchitecture/TransactionLifecycle","path":"/docs/BitlayerArchitecture/TransactionLifecycle","sidebar":"docs"},{"id":"BitlayerNetwork/AboutGas","path":"/docs/BitlayerNetwork/AboutGas","sidebar":"docs"},{"id":"BitlayerNetwork/Bridges","path":"/docs/BitlayerNetwork/Bridges","sidebar":"docs"},{"id":"BitlayerNetwork/Contracts","path":"/docs/BitlayerNetwork/Contracts","sidebar":"docs"},{"id":"BitlayerNetwork/Json-RPC","path":"/docs/BitlayerNetwork/Json-RPC","sidebar":"docs"},{"id":"BitlayerNetwork/Networks","path":"/docs/BitlayerNetwork/Networks","sidebar":"docs"},{"id":"BitlayerNetwork/PegTokens","path":"/docs/BitlayerNetwork/PegTokens","sidebar":"docs"},{"id":"Build/Compile and Run","path":"/docs/Build/Compile and Run","sidebar":"docs"},{"id":"Build/QuickStart","path":"/docs/Build/QuickStart","sidebar":"docs"},{"id":"DeveloperResources/Block Explorers","path":"/docs/DeveloperResources/Block Explorers","sidebar":"docs"},{"id":"DeveloperResources/BTC Connect","path":"/docs/DeveloperResources/BTC Connect","sidebar":"docs"},{"id":"DeveloperResources/Faucets","path":"/docs/DeveloperResources/Faucets","sidebar":"docs"},{"id":"DeveloperResources/Subgraph","path":"/docs/DeveloperResources/Subgraph","sidebar":"docs"},{"id":"DeveloperResources/TheGraph","path":"/docs/DeveloperResources/TheGraph","sidebar":"docs"},{"id":"DeveloperResources/Wallets","path":"/docs/DeveloperResources/Wallets","sidebar":"docs"},{"id":"FAQs/Contact Details","path":"/docs/FAQs/Contact Details","sidebar":"docs"},{"id":"FAQs/Defillama TVL integration","path":"/docs/FAQs/Defillama TVL integration","sidebar":"docs"},{"id":"FAQs/Frequently asked questions","path":"/docs/FAQs/Frequently asked questions","sidebar":"docs"},{"id":"FAQs/WBTC","path":"/docs/FAQs/WBTC","sidebar":"docs"},{"id":"Introduction/AboutBitlayer","path":"/docs/Introduction/AboutBitlayer","sidebar":"docs"},{"id":"Introduction/BitlayerVsEth","path":"/docs/Introduction/BitlayerVsEth","sidebar":"docs"},{"id":"Introduction/BitVM","path":"/docs/Introduction/BitVM","sidebar":"docs"},{"id":"Introduction/Introduction","path":"/docs/Introduction/","sidebar":"docs"},{"id":"Introduction/Roadmap","path":"/docs/Introduction/Roadmap","sidebar":"docs"},{"id":"Introduction/TechnicalArchitecture","path":"/docs/Introduction/TechnicalArchitecture","sidebar":"docs"},{"id":"/category/introduction","path":"/docs/category/introduction","sidebar":"docs"},{"id":"/category/getting-started","path":"/docs/category/getting-started","sidebar":"docs"},{"id":"/category/bitlayer-network","path":"/docs/category/bitlayer-network","sidebar":"docs"},{"id":"/category/bitlayer-architecture","path":"/docs/category/bitlayer-architecture","sidebar":"docs"},{"id":"/category/bitlayer-scan-apis","path":"/docs/category/bitlayer-scan-apis","sidebar":"docs"},{"id":"/category/developer-resources","path":"/docs/category/developer-resources","sidebar":"docs"},{"id":"/category/faqs","path":"/docs/category/faqs","sidebar":"docs"}],"sidebars":{"docs":{"link":{"path":"/docs/category/introduction","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en"}}}'),l=n(7529),s=JSON.parse('{"docusaurusVersion":"2.0.0-beta.16","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.0.0-beta.16"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.0.0-beta.16"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.0.0-beta.16"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.0.0-beta.16"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.0.0-beta.16"}}}'),u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){var t=e.children;return r.createElement(c.Provider,{value:u},t)}},3919:function(e,t,n){"use strict";function r(e){return!0===/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{b:function(){return r},Z:function(){return o}})},8143:function(e,t,n){"use strict";n.r(t),n.d(t,{useHistory:function(){return r.k6},useLocation:function(){return r.TH},Redirect:function(){return r.l_},matchPath:function(){return r.LX}});var r=n(6775)},4996:function(e,t,n){"use strict";n.d(t,{C:function(){return a},Z:function(){return i}});var r=n(2263),o=n(3919);function a(){var e=(0,r.Z)().siteConfig,t=e.baseUrl,n=e.url;return{withBaseUrl:function(e,r){return function(e,t,n,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,l=void 0!==i&&i,s=a.absolute,u=void 0!==s&&s;if(!n)return n;if(n.startsWith("#"))return n;if((0,o.b)(n))return n;if(l)return t+n.replace(/^\//,"");var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return u?e+c:c}(n,t,e,r)}}}function i(e,t){return void 0===t&&(t={}),(0,a().withBaseUrl)(e,t)}},2263:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o=n(7041);function a(){return(0,r.useContext)(o._)}},8084:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return a},useAllPluginInstancesData:function(){return i},usePluginData:function(){return l}});var r=n(2263),o=n(9935);function a(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){var t=a()[e];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return t}function l(e,t){void 0===t&&(t=o.m);var n=i(e)[t];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return n}},2389:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o=n(9913);function a(){return(0,r.useContext)(o._)}},9670:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});function r(e){var t={};return function e(n,r){Object.keys(n).forEach((function(o){var a,i=n[o],l=r?r+"."+o:o;"object"==typeof(a=i)&&a&&Object.keys(a).length>0?e(i,l):t[l]=i}))}(e),t}},4953:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(7294),o=n(2434),a=n(780);function i(e){var t=e.error,n=e.tryAgain;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function l(e){var t=e.error,n=e.tryAgain;return r.createElement(a.Z,{fallback:function(){return r.createElement(i,{error:t,tryAgain:n})}},r.createElement(o.Z,{title:"Page Error"},r.createElement(i,{error:t,tryAgain:n})))}},8408:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;var r=n(8143);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});var o=Object.entries(e).sort((function(e,t){return t[1].path.localeCompare(e[1].path)})).find((function(e){var n=e[1];return!!(0,r.matchPath)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return a};t.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};t.getActiveVersion=function(e,n){var o=(0,t.getLatestVersion)(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!1,strict:!1})}))};t.getActiveDocContext=function(e,n){var o,a,i=(0,t.getActiveVersion)(e,n),l=null==i?void 0:i.docs.find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:l,alternateDocVersions:l?(o=l.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===o&&(a[e.name]=t)}))})),a):{}}};t.getDocVersionSuggestions=function(e,n){var r=(0,t.getLatestVersion)(e),o=(0,t.getActiveDocContext)(e,n);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},5551:function(e,t,n){"use strict";t.Jo=t.Iw=t.zu=t.yW=t.gB=t.gA=t.zh=t._r=void 0;var r=n(655),o=n(8143),a=(0,r.__importStar)(n(8084)),i=n(8408),l={};t._r=function(){var e;return null!==(e=(0,a.default)()["docusaurus-plugin-content-docs"])&&void 0!==e?e:l};t.zh=function(e){return(0,a.usePluginData)("docusaurus-plugin-content-docs",e)};t.gA=function(e){void 0===e&&(e={});var n=(0,t._r)(),r=(0,o.useLocation)().pathname;return(0,i.getActivePlugin)(n,r,e)};t.gB=function(e){return(0,t.zh)(e).versions};t.yW=function(e){var n=(0,t.zh)(e);return(0,i.getLatestVersion)(n)};t.zu=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getActiveVersion)(n,r)};t.Iw=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getActiveDocContext)(n,r)};t.Jo=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getDocVersionSuggestions)(n,r)}},541:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o="iconExternalLink_I5OW";function a(e){var t=e.width,n=void 0===t?13.5:t,a=e.height,i=void 0===a?13.5:a;return r.createElement("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:o},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"}))}},2434:function(e,t,n){"use strict";n.d(t,{Z:function(){return me}});var r=n(7294),o=n(6010),a=n(780),i=n(6775),l=n(5999),s=n(5450),u="skipToContent_ZgBM";function c(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function d(){var e=(0,r.useRef)(null),t=(0,i.k6)().action;return(0,s.SL)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&c(e.current)})),r.createElement("div",{ref:e,role:"region"},r.createElement("a",{href:"#",className:u,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&c(t)}},r.createElement(l.Z,{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"},"Skip to main content")))}var f=n(7462),p=n(3366),m=["width","height","color","strokeWidth","className"];function h(e){var t=e.width,n=void 0===t?21:t,o=e.height,a=void 0===o?21:o,i=e.color,l=void 0===i?"currentColor":i,s=e.strokeWidth,u=void 0===s?1.2:s,c=(e.className,(0,p.Z)(e,m));return r.createElement("svg",(0,f.Z)({viewBox:"0 0 15 15",width:n,height:a},c),r.createElement("g",{stroke:l,strokeWidth:u},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}var g="announcementBar_IbjG",v="announcementBarPlaceholder_NC_W",b="announcementBarClose_FG1z",y="announcementBarContent_KsVm";function w(){var e=(0,s.nT)(),t=e.isActive,n=e.close,a=(0,s.LU)().announcementBar;if(!t)return null;var i=a.content,u=a.backgroundColor,c=a.textColor,d=a.isCloseable;return r.createElement("div",{className:g,style:{backgroundColor:u,color:c},role:"banner"},d&&r.createElement("div",{className:v}),r.createElement("div",{className:y,dangerouslySetInnerHTML:{__html:i}}),d?r.createElement("button",{type:"button",className:(0,o.Z)("clean-btn close",b),onClick:n,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement(h,{width:14,height:14,strokeWidth:3.1})):null)}var k=n(1875),E=n(2389),S="toggle_Pssr",x="toggleScreenReader_JnkT",C="toggleDisabled_jDku",T="toggleTrack_SSoT",_="toggleTrackCheck_XobZ",A="toggleChecked_cnQY",P="toggleTrackX_YkSC",R="toggleTrackThumb_uRm4",L="toggleFocused_A7DC",N="toggleIcon_eZtF",O=(0,r.memo)((function(e){var t,n=e.className,a=e.switchConfig,i=e.checked,s=e.disabled,u=e.onChange,c=a.darkIcon,d=a.darkIconStyle,f=a.lightIcon,p=a.lightIconStyle,m=(0,r.useState)(i),h=m[0],g=m[1],v=(0,r.useState)(!1),b=v[0],y=v[1],w=(0,r.useRef)(null);return(0,r.useEffect)((function(){g(i)}),[i]),r.createElement("div",{className:(0,o.Z)(S,n,(t={},t[A]=h,t[L]=b,t[C]=s,t))},r.createElement("div",{className:T,role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=w.current)?void 0:e.click()}},r.createElement("div",{className:_},r.createElement("span",{className:N,style:d},c)),r.createElement("div",{className:P},r.createElement("span",{className:N,style:p},f)),r.createElement("div",{className:R})),r.createElement("input",{ref:w,checked:h,type:"checkbox",className:x,"aria-label":(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:h?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})}),onChange:u,onClick:function(){return g(!h)},onFocus:function(){return y(!0)},onBlur:function(){return y(!1)},onKeyDown:function(e){var t;"Enter"===e.key&&(null==(t=w.current)||t.click())}}))}));function I(e){var t=(0,s.LU)().colorMode.switchConfig,n=(0,E.Z)();return r.createElement(O,(0,f.Z)({switchConfig:t,disabled:!n},e))}var D=n(5551),B=n(2207),M=n(5537),F=["width","height","className"];function j(e){var t=e.width,n=void 0===t?30:t,o=e.height,a=void 0===o?30:o,i=e.className,l=(0,p.Z)(e,F);return r.createElement("svg",(0,f.Z)({className:i,width:n,height:a,viewBox:"0 0 30 30","aria-hidden":"true"},l),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}var z={toggle:"toggle_TdHA",navbarHideable:"navbarHideable_aKYr",navbarHidden:"navbarHidden_KUhG",navbarSidebarToggle:"navbarSidebarToggle_nL8I"},U="right";function Z(){return(0,s.LU)().navbar.items}function q(){var e=(0,s.LU)().colorMode.disableSwitch,t=(0,s.If)(),n=t.isDarkTheme,o=t.setLightTheme,a=t.setDarkTheme;return{isDarkTheme:n,toggle:(0,r.useCallback)((function(e){return e.target.checked?a():o()}),[o,a]),disabled:e}}function G(e){var t=e.sidebarShown,n=e.toggleSidebar;(0,s.Ni)(t);var a=Z(),i=q(),u=function(e){var t,n=e.sidebarShown,o=e.toggleSidebar,a=null==(t=(0,s.g8)())?void 0:t({toggleSidebar:o}),i=(0,s.D9)(a),l=(0,r.useState)((function(){return!1})),u=l[0],c=l[1];(0,r.useEffect)((function(){a&&!i&&c(!0)}),[a,i]);var d=!!a;return(0,r.useEffect)((function(){d?n||c(!0):c(!1)}),[n,d]),{shown:u,hide:(0,r.useCallback)((function(){c(!1)}),[]),content:a}}({sidebarShown:t,toggleSidebar:n});return r.createElement("div",{className:"navbar-sidebar"},r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(M.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),!i.disabled&&r.createElement(I,{className:z.navbarSidebarToggle,checked:i.isDarkTheme,onChange:i.toggle}),r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:n},r.createElement(h,{color:"var(--ifm-color-emphasis-600)",className:z.navbarSidebarCloseSvg}))),r.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":u.shown})},r.createElement("div",{className:"navbar-sidebar__item menu"},r.createElement("ul",{className:"menu__list"},a.map((function(e,t){return r.createElement(B.Z,(0,f.Z)({mobile:!0},e,{onClick:n,key:t}))})))),r.createElement("div",{className:"navbar-sidebar__item menu"},a.length>0&&r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__back",onClick:u.hide},r.createElement(l.Z,{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)"},"\u2190 Back to main menu")),u.content)))}function $(){var e,t=(0,s.LU)().navbar,n=t.hideOnScroll,a=t.style,i=function(){var e=(0,s.iP)(),t="mobile"===e,n=(0,r.useState)(!1),o=n[0],a=n[1];(0,s.Rb)((function(){if(o)return a(!1),!1}));var i=(0,r.useCallback)((function(){a((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===e&&a(!1)}),[e]),{shouldRender:t,toggle:i,shown:o}}(),l=q(),u=(0,D.gA)(),c=(0,s.cK)(n),d=c.navbarRef,p=c.isNavbarVisible,m=Z(),h=m.some((function(e){return"search"===e.type})),g=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!=(t=e.position)?t:U)})),rightItems:e.filter((function(e){var t;return"right"===(null!=(t=e.position)?t:U)}))}}(m),v=g.leftItems,b=g.rightItems;return r.createElement("nav",{ref:d,className:(0,o.Z)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown},e[z.navbarHideable]=n,e[z.navbarHidden]=n&&!p,e))},r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},((null==m?void 0:m.length)>0||u)&&r.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:i.toggle,onKeyDown:i.toggle},r.createElement(j,null)),r.createElement(M.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),v.map((function(e,t){return r.createElement(B.Z,(0,f.Z)({},e,{key:t}))}))),r.createElement("div",{className:"navbar__items navbar__items--right"},b.map((function(e,t){return r.createElement(B.Z,(0,f.Z)({},e,{key:t}))})),!l.disabled&&r.createElement(I,{className:z.toggle,checked:l.isDarkTheme,onChange:l.toggle}),!h&&r.createElement(k.Z,null))),r.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:i.toggle}),i.shouldRender&&r.createElement(G,{sidebarShown:i.shown,toggleSidebar:i.toggle}))}var H=n(9960),V=n(4996),W=n(3919),Q="footerLogoLink_RC3H",K=n(9750),Y=n(541),X=["to","href","label","prependBaseUrlToHref"];function J(e){var t=e.to,n=e.href,o=e.label,a=e.prependBaseUrlToHref,i=(0,p.Z)(e,X),l=(0,V.Z)(t),s=(0,V.Z)(n,{forcePrependBaseUrl:!0});return r.createElement(H.Z,(0,f.Z)({className:"footer__link-item"},n?{href:a?s:n}:{to:l},i),n&&!(0,W.Z)(n)?r.createElement("span",null,o,r.createElement(Y.Z,null)):o)}function ee(e){var t=e.sources,n=e.alt,o=e.width,a=e.height;return r.createElement(K.Z,{className:"footer__logo",alt:n,sources:t,width:o,height:a})}function te(e){var t=e.links;return r.createElement(r.Fragment,null,t.map((function(e,t){return r.createElement("div",{key:t,className:"col footer__col"},r.createElement("div",{className:"footer__title"},e.title),r.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement("li",{key:e.href||e.to,className:"footer__item"},r.createElement(J,e))}))))})))}function ne(e){var t=e.links;return r.createElement("div",{className:"footer__links"},t.map((function(e,n){return r.createElement(r.Fragment,{key:n},e.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement(J,e),t.length!==n+1&&r.createElement("span",{className:"footer__link-separator"},"\xb7"))})))}function re(){var e=(0,s.LU)().footer,t=e||{},n=t.copyright,a=t.links,i=void 0===a?[]:a,l=t.logo,u=void 0===l?{}:l,c={light:(0,V.Z)(u.src),dark:(0,V.Z)(u.srcDark||u.src)};return e?r.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},r.createElement("div",{className:"container container-fluid"},i&&i.length>0&&(function(e){return"title"in e[0]}(i)?r.createElement("div",{className:"row footer__links"},r.createElement(te,{links:i})):r.createElement("div",{className:"footer__links text--center"},r.createElement(ne,{links:i}))),(u||n)&&r.createElement("div",{className:"footer__bottom text--center"},u&&(u.src||u.srcDark)&&r.createElement("div",{className:"margin-bottom--sm"},u.href?r.createElement(H.Z,{href:u.href,className:Q},r.createElement(ee,{alt:u.alt,sources:c,width:u.width,height:u.height})):r.createElement(ee,{alt:u.alt,sources:c,width:u.width,height:u.height})),n?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:n}}):null))):null}var oe=r.memo(re);function ae(e){var t=e.children;return r.createElement(s.SG,null,r.createElement(s.pl,null,r.createElement(s.z5,null,r.createElement(s.OC,null,r.createElement(s.L5,null,r.createElement(s.Cn,null,t))))))}var ie=n(5742),le=n(2263);function se(e){var t=e.locale,n=e.version,o=e.tag,a=t;return r.createElement(ie.Z,null,a&&r.createElement("meta",{name:"docsearch:language",content:a}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}var ue=n(1217);function ce(){var e=(0,le.Z)().i18n,t=e.defaultLocale,n=e.localeConfigs,o=(0,s.l5)();return r.createElement(ie.Z,null,Object.entries(n).map((function(e){var t=e[0],n=e[1].htmlLang;return r.createElement("link",{key:t,rel:"alternate",href:o.createUrl({locale:t,fullyQualified:!0}),hrefLang:n})})),r.createElement("link",{rel:"alternate",href:o.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function de(e){var t=e.permalink,n=(0,le.Z)().siteConfig.url,o=function(){var e=(0,le.Z)().siteConfig.url,t=(0,i.TH)().pathname;return e+(0,V.Z)(t)}(),a=t?""+n+t:o;return r.createElement(ie.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function fe(e){var t=(0,le.Z)(),n=t.siteConfig.favicon,o=t.i18n,a=o.currentLocale,i=o.localeConfigs,l=(0,s.LU)(),u=l.metadata,c=l.image,d=e.title,p=e.description,m=e.image,h=e.keywords,g=e.searchMetadata,v=(0,V.Z)(n),b=(0,s.pe)(d),y=i[a],w=y.htmlLang,k=y.direction;return r.createElement(r.Fragment,null,r.createElement(ie.Z,null,r.createElement("html",{lang:w,dir:k}),n&&r.createElement("link",{rel:"icon",href:v}),r.createElement("title",null,b),r.createElement("meta",{property:"og:title",content:b}),r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:s.hC})),c&&r.createElement(ue.Z,{image:c}),m&&r.createElement(ue.Z,{image:m}),r.createElement(ue.Z,{description:p,keywords:h}),r.createElement(de,null),r.createElement(ce,null),r.createElement(se,(0,f.Z)({tag:s.HX,locale:a},g)),r.createElement(ie.Z,null,u.map((function(e,t){return r.createElement("meta",(0,f.Z)({key:"metadata_"+t},e))}))))}function pe(e){var t=e.error,n=e.tryAgain;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(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}function me(e){var t=e.children,n=e.noFooter,i=e.wrapperClassName,l=e.pageClassName;return(0,s.t$)(),r.createElement(ae,null,r.createElement(fe,e),r.createElement(d,null),r.createElement(w,null),r.createElement($,null),r.createElement("div",{className:(0,o.Z)(s.kM.wrapper.main,i,l)},r.createElement(a.Z,{fallback:pe},t)),!n&&r.createElement(oe,null))}},5537:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7462),o=n(3366),a=n(7294),i=n(9960),l=n(9750),s=n(4996),u=n(2263),c=n(5450),d=["imageClassName","titleClassName"];function f(e){var t=(0,u.Z)().siteConfig.title,n=(0,c.LU)().navbar,f=n.title,p=n.logo,m=void 0===p?{src:""}:p,h=e.imageClassName,g=e.titleClassName,v=(0,o.Z)(e,d),b=(0,s.Z)(m.href||"/"),y={light:(0,s.Z)(m.src),dark:(0,s.Z)(m.srcDark||m.src)},w=a.createElement(l.Z,{sources:y,height:m.height,width:m.width,alt:m.alt||f||t});return a.createElement(i.Z,(0,r.Z)({to:b},v,m.target&&{target:m.target}),m.src&&(h?a.createElement("div",{className:h},w):w),null!=f&&a.createElement("b",{className:g},f))}},5525:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=n(7462),o=n(3366),a=n(7294),i=n(6010),l=n(3072),s=n(1068),u=["className","isDropdownItem"],c=["className","isDropdownItem"],d=["mobile","position"];function f(e){var t=e.className,n=e.isDropdownItem,s=void 0!==n&&n,c=(0,o.Z)(e,u),d=a.createElement(l.Z,(0,r.Z)({className:(0,i.Z)(s?"dropdown__link":"navbar__item navbar__link",t)},c));return s?a.createElement("li",null,d):d}function p(e){var t=e.className,n=(e.isDropdownItem,(0,o.Z)(e,c));return a.createElement("li",{className:"menu__list-item"},a.createElement(l.Z,(0,r.Z)({className:(0,i.Z)("menu__link",t)},n)))}function m(e){var t,n=e.mobile,i=void 0!==n&&n,l=(e.position,(0,o.Z)(e,d)),u=i?p:f;return a.createElement(u,(0,r.Z)({},l,{activeClassName:null!=(t=l.activeClassName)?t:(0,s.E)(i)}))}},6400:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7462),o=n(3366),a=n(7294),i=n(5525),l=n(5551),s=n(6010),u=n(1068),c=n(5450),d=["docId","label","docsPluginId"];function f(e){var t,n=e.docId,f=e.label,p=e.docsPluginId,m=(0,o.Z)(e,d),h=(0,l.Iw)(p),g=h.activeVersion,v=h.activeDoc,b=(0,c.J)(p).preferredVersion,y=(0,l.yW)(p),w=function(e,t){var n=e.flatMap((function(e){return e.docs})),r=n.find((function(e){return e.id===t}));if(!r){var o=n.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+o)}return r}((0,c.jj)([g,b,y].filter(Boolean)),n),k=(0,u.E)(m.mobile);return a.createElement(i.Z,(0,r.Z)({exact:!0},m,{className:(0,s.Z)(m.className,(t={},t[k]=(null==v?void 0:v.sidebar)&&v.sidebar===w.sidebar,t)),activeClassName:k,label:null!=f?f:w.id,to:w.path}))}},4792:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7462),o=n(3366),a=n(7294),i=n(5525),l=n(5551),s=n(6010),u=n(1068),c=n(5450),d=["sidebarId","label","docsPluginId"];function f(e){var t,n=e.sidebarId,f=e.label,p=e.docsPluginId,m=(0,o.Z)(e,d),h=(0,l.Iw)(p),g=h.activeVersion,v=h.activeDoc,b=(0,c.J)(p).preferredVersion,y=(0,l.yW)(p),w=function(e,t){var n=e.flatMap((function(e){if(e.sidebars)return Object.entries(e.sidebars)})).filter((function(e){return!!e})),r=n.find((function(e){return e[0]===t}));if(!r)throw new Error("DocSidebarNavbarItem: couldn't find any sidebar with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+Object.keys(n).join("\n- "));if(!r[1].link)throw new Error("DocSidebarNavbarItem: couldn't find any document for sidebar with id \""+t+'"');return r[1].link}((0,c.jj)([g,b,y].filter(Boolean)),n),k=(0,u.E)(m.mobile);return a.createElement(i.Z,(0,r.Z)({exact:!0},m,{className:(0,s.Z)(m.className,(t={},t[k]=(null==v?void 0:v.sidebar)===n,t)),activeClassName:k,label:null!=f?f:w.label,to:w.path}))}},9308:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var r=n(7462),o=n(3366),a=n(7294),i=n(5525),l=n(3154),s=n(5551),u=n(5450),c=n(5999),d=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],f=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function p(e){var t,n,p=e.mobile,m=e.docsPluginId,h=e.dropdownActiveClassDisabled,g=e.dropdownItemsBefore,v=e.dropdownItemsAfter,b=(0,o.Z)(e,d),y=(0,s.Iw)(m),w=(0,s.gB)(m),k=(0,s.yW)(m),E=(0,u.J)(m),S=E.preferredVersion,x=E.savePreferredVersionName;var C,T=(C=w.map((function(e){var t=(null==y?void 0:y.alternateDocVersions[e.name])||f(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==y?void 0:y.activeVersion)},onClick:function(){x(e.name)}}})),[].concat(g,C,v)),_=null!=(t=null!=(n=y.activeVersion)?n:S)?t:k,A=p&&T.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):_.label,P=p&&T.length>1?void 0:f(_).path;return T.length<=1?a.createElement(i.Z,(0,r.Z)({},b,{mobile:p,label:A,to:P,isActive:h?function(){return!1}:void 0})):a.createElement(l.Z,(0,r.Z)({},b,{mobile:p,label:A,to:P,items:T,isActive:h?function(){return!1}:void 0}))}},7250:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(7462),o=n(3366),a=n(7294),i=n(5525),l=n(5551),s=n(5450),u=["label","to","docsPluginId"];function c(e){var t,n=e.label,c=e.to,d=e.docsPluginId,f=(0,o.Z)(e,u),p=(0,l.zu)(d),m=(0,s.J)(d).preferredVersion,h=(0,l.yW)(d),g=null!=(t=null!=p?p:m)?t:h,v=null!=n?n:g.label,b=null!=c?c:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(g).path;return a.createElement(i.Z,(0,r.Z)({},f,{label:v,to:b}))}},3154:function(e,t,n){"use strict";n.d(t,{Z:function(){return g}});var r=n(7462),o=n(3366),a=n(7294),i=n(6010),l=n(5450),s=n(3072),u=n(2207),c=["items","position","className"],d=["items","className","position"],f=["mobile"];function p(e,t){return e.some((function(e){return function(e,t){return!!(0,l.Mg)(e.to,t)||!!(0,l.Fx)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function m(e){var t,n=e.items,l=e.position,d=e.className,f=(0,o.Z)(e,c),p=(0,a.useRef)(null),m=(0,a.useState)(!1),h=m[0],g=m[1];return(0,a.useEffect)((function(){var e=function(e){p.current&&!p.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[p]),a.createElement("div",{ref:p,className:(0,i.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===l,"dropdown--show":h})},a.createElement(s.Z,(0,r.Z)({href:f.to?void 0:"#",className:(0,i.Z)("navbar__link",d)},f,{onClick:f.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!h))}}),null!=(t=f.children)?t:f.label),a.createElement("ul",{className:"dropdown__menu"},n.map((function(e,t){return a.createElement(u.Z,(0,r.Z)({isDropdownItem:!0,onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var r=p.current.nextElementSibling;r&&r.focus()}},activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function h(e){var t,n=e.items,c=e.className,f=(e.position,(0,o.Z)(e,d)),m=(0,l.be)(),h=p(n,m),g=(0,l.uR)({initialState:function(){return!h}}),v=g.collapsed,b=g.toggleCollapsed,y=g.setCollapsed;return(0,a.useEffect)((function(){h&&y(!h)}),[m,h,y]),a.createElement("li",{className:(0,i.Z)("menu__list-item",{"menu__list-item--collapsed":v})},a.createElement(s.Z,(0,r.Z)({role:"button",className:(0,i.Z)("menu__link menu__link--sublist",c)},f,{onClick:function(e){e.preventDefault(),b()}}),null!=(t=f.children)?t:f.label),a.createElement(l.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},n.map((function(e,t){return a.createElement(u.Z,(0,r.Z)({mobile:!0,isDropdownItem:!0,onClick:f.onClick,activeClassName:"menu__link--active"},e,{key:t}))}))))}function g(e){var t=e.mobile,n=void 0!==t&&t,r=(0,o.Z)(e,f),i=n?h:m;return a.createElement(i,r)}},3072:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7462),o=n(3366),a=n(7294),i=n(9960),l=n(4996),s=n(541),u=n(3919),c=n(5450),d=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"];function f(e){var t,n=e.activeBasePath,f=e.activeBaseRegex,p=e.to,m=e.href,h=e.label,g=e.activeClassName,v=void 0===g?"":g,b=e.prependBaseUrlToHref,y=(0,o.Z)(e,d),w=(0,l.Z)(p),k=(0,l.Z)(n),E=(0,l.Z)(m,{forcePrependBaseUrl:!0}),S=h&&m&&!(0,u.Z)(m),x="dropdown__link--active"===v;return a.createElement(i.Z,(0,r.Z)({},m?{href:b?E:m}:Object.assign({isNavLink:!0,activeClassName:null!=(t=y.className)&&t.includes(v)?"":v,to:w},n||f?{isActive:function(e,t){return f?(0,c.Fx)(f,t.pathname):t.pathname.startsWith(k)}}:null),y),S?a.createElement("span",null,h,a.createElement(s.Z,x&&{width:12,height:12})):h)}},2207:function(e,t,n){"use strict";n.d(t,{Z:function(){return w}});var r=n(3366),o=n(7294),a=n(5525),i=n(3154),l=n(7462),s=["width","height"];function u(e){var t=e.width,n=void 0===t?20:t,a=e.height,i=void 0===a?20:a,u=(0,r.Z)(e,s);return o.createElement("svg",(0,l.Z)({viewBox:"0 0 20 20",width:n,height:i,"aria-hidden":"true"},u),o.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))}var c=n(2263),d=n(5450),f=n(5999),p="iconLanguage_dNtB",m=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function h(e){var t=e.mobile,n=e.dropdownItemsBefore,a=e.dropdownItemsAfter,s=(0,r.Z)(e,m),h=(0,c.Z)().i18n,g=h.currentLocale,v=h.locales,b=h.localeConfigs,y=(0,d.l5)();function w(e){return b[e].label}var k=v.map((function(e){var t="pathname://"+y.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:w(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===g?"dropdown__link--active":""}})),E=[].concat(n,k,a),S=t?(0,f.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):w(g);return o.createElement(i.Z,(0,l.Z)({},s,{mobile:t,label:o.createElement("span",null,o.createElement(u,{className:p}),o.createElement("span",null,S)),items:E}))}var g=n(1875);function v(e){return e.mobile?null:o.createElement(g.Z,null)}var b=["type"],y={default:function(){return a.Z},localeDropdown:function(){return h},search:function(){return v},dropdown:function(){return i.Z},docsVersion:function(){return n(7250).Z},docsVersionDropdown:function(){return n(9308).Z},doc:function(){return n(6400).Z},docSidebar:function(){return n(4792).Z}};function w(e){var t=e.type,n=(0,r.Z)(e,b),a=function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items),i=function(e){var t=y[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()}(a);return o.createElement(i,n)}},1068:function(e,t,n){"use strict";n.d(t,{E:function(){return r}});var r=function(e){return e?"menu__link--active":"navbar__link--active"}},1217:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(7294),o=n(5742),a=n(5450),i=n(4996);function l(e){var t=e.title,n=e.description,l=e.keywords,s=e.image,u=e.children,c=(0,a.pe)(t),d=(0,i.C)().withBaseUrl,f=s?d(s,{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}),l&&r.createElement("meta",{name:"keywords",content:Array.isArray(l)?l.join(","):l}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),u)}},9750:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(7462),o=n(3366),a=n(7294),i=n(6010),l=n(2389),s=n(5450),u={themedImage:"themedImage_W2Cr","themedImage--light":"themedImage--light_TfLj","themedImage--dark":"themedImage--dark_oUvU"},c=["sources","className","alt"];function d(e){var t=(0,l.Z)(),n=(0,s.If)().isDarkTheme,d=e.sources,f=e.className,p=e.alt,m=void 0===p?"":p,h=(0,o.Z)(e,c),g=t?n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,g.map((function(e){return a.createElement("img",(0,r.Z)({key:e,src:d[e],alt:m,className:(0,i.Z)(u.themedImage,u["themedImage--"+e],f)},h))})))}},467:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return o}});var r=n(9782);function o(e){var t=r.default.themeConfig.prism.additionalLanguages;globalThis.Prism=e,t.forEach((function(e){n(6500)("./prism-"+e)})),delete globalThis.Prism}},2448:function(e,t,n){"use strict";var r=o(n(7410));function o(e){return e&&e.__esModule?e:{default:e}}(0,o(n(467)).default)(r.default)},5450:function(e,t,n){"use strict";n.d(t,{pl:function(){return Xe},zF:function(){return Pe},SG:function(){return Ot},HX:function(){return ae},PO:function(){return Fe},D_:function(){return s},L5:function(){return z},bT:function(){return A},qu:function(){return x},Cv:function(){return qe},Cn:function(){return ze},OC:function(){return mt},z5:function(){return Ft},kM:function(){return He},os:function(){return ie},lx:function(){return Ge},Wl:function(){return L},_F:function(){return O},Fx:function(){return yt},Mg:function(){return w},hC:function(){return Ut},PZ:function(){return rt},bc:function(){return ne},Vo:function(){return re},nZ:function(){return oe},MA:function(){return nt},jj:function(){return $e},l5:function(){return g},nT:function(){return Je},uR:function(){return ke},If:function(){return It},jA:function(){return N},xz:function(){return T},fP:function(){return u},J:function(){return q},Vq:function(){return P},E6:function(){return C},b9:function(){return ft},cK:function(){return zt},Rb:function(){return ot},Ns:function(){return xt},t$:function(){return Zt},be:function(){return et},SL:function(){return ge},Ni:function(){return $t},g8:function(){return Ze},c2:function(){return fe},D9:function(){return he},pJ:function(){return Gt},RF:function(){return vt},o5:function(){return bt},s1:function(){return I},Si:function(){return st},UB:function(){return jt},LU:function(){return o},pe:function(){return le},iP:function(){return Kt}});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}var a=n(7294),i=Symbol("EmptyContext"),l=a.createContext(i);function s(e){var t=e.children,n=(0,a.useState)(null),r=n[0],o=n[1],i=(0,a.useMemo)((function(){return{expandedItem:r,setExpandedItem:o}}),[r]);return a.createElement(l.Provider,{value:i},t)}function u(){var e=(0,a.useContext)(l);if(e===i)throw new Error("This hook requires usage of <DocSidebarItemsExpandedStateProvider>");return e}var c="localStorage";function d(e){if(void 0===e&&(e=c),"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,f||(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),f=!0),null}var t}var f=!1;var p={get:function(){return null},set:function(){},del:function(){}};var m=function(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}}(e);var n=d(null==t?void 0:t.persistence);return null===n?p:{get:function(){try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:function(t){try{n.setItem(e,t)}catch(r){console.error("Docusaurus storage error, can't set "+e+"="+t,r)}},del:function(){try{n.removeItem(e)}catch(t){console.error("Docusaurus storage error, can't delete key="+e,t)}}}};var h=n(6775);function g(){var e=(0,r.Z)(),t=e.siteConfig,n=t.baseUrl,o=t.url,a=e.i18n,i=a.defaultLocale,l=a.currentLocale,s=(0,h.TH)().pathname,u=l===i?n:n.replace("/"+l+"/","/"),c=s.replace(n,"");return{createUrl:function(e){var t=e.locale;return""+(e.fullyQualified?o:"")+function(e){return e===i?""+u:""+u+e+"/"}(t)+c}}}var v=n(5551);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var w=function(e,t){var n=function(e){var t;return null===(t=!e||(null==e?void 0:e.endsWith("/"))?e:e+"/")||void 0===t?void 0:t.toLowerCase()};return n(e)===n(t)},k=!!v._r,E=Symbol("EmptyContext"),S=(0,a.createContext)(E);function x(e){var t=e.children,n=e.version;return a.createElement(S.Provider,{value:n},t)}function C(){var e=(0,a.useContext)(S);if(e===E)throw new Error("This hook requires usage of <DocsVersionProvider>");return e}function T(e){var t=C();if(e){var n=t.docs[e];if(!n)throw new Error("no version doc found by id="+e);return n}}var _=(0,a.createContext)(E);function A(e){var t=e.children,n=e.sidebar;return a.createElement(_.Provider,{value:n},t)}function P(){var e=(0,a.useContext)(_);if(e===E)throw new Error("This hook requires usage of <DocsSidebarProvider>");return e}function R(e,t){for(var n,r=y(e);!(n=r()).done;){var o=n.value;if("category"===o.type){if(t(o))return o;var a=R(o.items,t);if(a)return a}}}function L(e){if(e.href)return e.href;for(var t,n=y(e.items);!(t=n()).done;){var r=t.value;if("link"===r.type)return r.href;if("category"===r.type){var o=L(r);if(o)return o}else if("html"!==r.type)throw new Error("Unexpected category item type for "+JSON.stringify(r))}}function N(){var e=(0,h.TH)().pathname,t=P();if(!t)throw new Error("Unexpected: cant find current sidebar in context");var n=R(t,(function(t){return w(t.href,e)}));if(!n)throw new Error("Unexpected: sidebar category could not be found for pathname='"+e+"'.\nHook useCurrentSidebarCategory() should only be used on Category pages");return n}function O(e,t){var n=function(e){return void 0!==e&&w(e,t)};return"link"===e.type?n(e.href):"category"===e.type&&(n(e.href)||function(e,t){return e.some((function(e){return O(e,t)}))}(e.items,t))}function I(){var e,t=P(),n=(0,h.TH)().pathname;return!1!==(null===(e=(0,v.gA)())||void 0===e?void 0:e.pluginData.breadcrumbs)&&t?function(e){var t=e.sidebar,n=e.pathname,r=[];return function e(t){for(var o,a=y(t);!(o=a()).done;){var i=o.value;if("category"===i.type&&(w(i.href,n)||e(i.items)))return r.push(i),!0;if("link"===i.type&&w(i.href,n))return r.push(i),!0}return!1}(t),r.reverse()}({sidebar:t,pathname:n}):null}var D=function(e){return"docs-preferred-version-"+e},B={save:function(e,t,n){m(D(e),{persistence:t}).set(n)},read:function(e,t){return m(D(e),{persistence:t}).get()},clear:function(e,t){m(D(e),{persistence:t}).del()}};function M(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;var o={};return t.forEach((function(e){o[e]=function(e){var t=B.read(e,n);return r[e].versions.some((function(e){return e.name===t}))?{preferredVersionName:t}:(B.clear(e,n),{preferredVersionName:null})}(e)})),o}function F(){var e=(0,v._r)(),t=o().docs.versionPersistence,n=(0,a.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,a.useState)((function(){return function(e){var t={};return e.forEach((function(e){t[e]={preferredVersionName:null}})),t}(n)})),i=r[0],l=r[1];return(0,a.useEffect)((function(){l(M({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[i,(0,a.useMemo)((function(){return{savePreferredVersion:function(e,n){B.save(e,t,n),l((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}var j=(0,a.createContext)(null);function z(e){var t=e.children;return k?a.createElement(U,null,t):t}function U(e){var t=e.children,n=F();return a.createElement(j.Provider,{value:n},t)}var Z=n(9935);function q(e){void 0===e&&(e=Z.m);var t=(0,v.zh)(e),n=function(){var e=(0,a.useContext)(j);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}(),r=n[0],o=n[1],i=r[e].preferredVersionName;return{preferredVersion:i?t.versions.find((function(e){return e.name===i})):null,savePreferredVersionName:(0,a.useCallback)((function(t){o.savePreferredVersion(e,t)}),[o,e])}}function G(e){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},G(e)}var $=n(9611);function H(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,$.Z)(e,t)}function V(){V=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,o){var a=new RegExp(e,r);return t.set(a,o||t.get(e)),(0,$.Z)(a,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){return t[n]=e[r[n]],t}),Object.create(null))}return H(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);return n&&(n.groups=r(n,this)),n},n.prototype[Symbol.replace]=function(n,o){if("string"==typeof o){var a=t.get(this);return e[Symbol.replace].call(this,n,o.replace(/\$<([^>]+)>/g,(function(e,t){return"$"+a[t]})))}if("function"==typeof o){var i=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=G(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,i)),o.apply(this,e)}))}return e[Symbol.replace].call(this,n,o)},V.apply(this,arguments)}var W=n(7594),Q=n.n(W),K=V(/title=(["'])(.*?)\1/,{quote:1,title:2}),Y=V(/\{([\d,-]+)\}/,{range:1}),X=["js","jsBlock","jsx","python","html"],J={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},ee=["highlight-next-line","highlight-start","highlight-end"],te=function(e){void 0===e&&(e=X);var t=e.map((function(e){var t=J[e],n=t.start,r=t.end;return"(?:"+n+"\\s*("+ee.join("|")+")\\s*"+r+")"})).join("|");return new RegExp("^\\s*(?:"+t+")\\s*$")};function ne(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.match(K))||void 0===t?void 0:t.groups.title)&&void 0!==n?n:""}function re(e){var t=e.split(" ").find((function(e){return e.startsWith("language-")}));return null==t?void 0:t.replace(/language-/,"")}function oe(e,t,n){var r=e.replace(/\n$/,"");if(t&&Y.test(t)){var o=t.match(Y).groups.range;return{highlightLines:Q()(o).filter((function(e){return e>0})).map((function(e){return e-1})),code:r}}if(void 0===n)return{highlightLines:[],code:r};for(var a,i=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return te(["js","jsBlock"]);case"jsx":case"tsx":return te(["js","jsBlock","jsx"]);case"html":return te(["js","jsBlock","html"]);case"python":case"py":return te(["python"]);default:return te()}}(n),l=r.split("\n"),s="",u=0;u<l.length;){var c=l[u].match(i);if(null!==c){switch(c.slice(1).find((function(e){return void 0!==e}))){case"highlight-next-line":s+=u+",";break;case"highlight-start":a=u;break;case"highlight-end":s+=a+"-"+(u-1)+","}l.splice(u,1)}else u+=1}return{highlightLines:Q()(s),code:r=l.join("\n")}}var ae="default";function ie(e,t){return"docs-"+e+"-"+t}var le=function(e){var t=(0,r.Z)().siteConfig,n=t.title,o=t.titleDelimiter;return e&&e.trim().length?e.trim()+" "+o+" "+n:n},se=["zero","one","two","few","many","other"];function ue(e){return se.filter((function(t){return e.includes(t)}))}var ce={locale:"en",pluralForms:ue(["one","other"]),select:function(e){return 1===e?"one":"other"}};function de(){var e=(0,r.Z)().i18n.currentLocale;return(0,a.useMemo)((function(){if(!Intl.PluralRules)return console.error("Intl.PluralRules not available!\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n "),ce;try{return t=e,n=new Intl.PluralRules(t),{locale:t,pluralForms:ue(n.resolvedOptions().pluralCategories),select:function(e){return n.select(e)}}}catch(r){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n'),ce}var t,n}),[e])}function fe(){var e=de();return{selectMessage:function(t,n){return function(e,t,n){var 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+"), but the message contains "+r.length+" plural forms: "+e+" ");var o=n.select(t),a=n.pluralForms.indexOf(o);return r[Math.min(a,r.length-1)]}(n,t,e)}}}var pe="undefined"!=typeof window?a.useLayoutEffect:a.useEffect;function me(e){var t=(0,a.useRef)(e);return pe((function(){t.current=e}),[e]),(0,a.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function he(e){var t=(0,a.useRef)();return pe((function(){t.current=e})),t.current}function ge(e){var t=(0,h.TH)(),n=he(t),r=me(e);(0,a.useEffect)((function(){n&&t!==n&&r({location:t,previousLocation:n})}),[r,t,n])}var ve=n(3366),be=n(412),ye=["collapsed"],we=["lazy"];function ke(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var Ee={display:"none",overflow:"hidden",height:"0px"},Se={display:"block",overflow:"visible",height:"auto"};function xe(e,t){var n=t?Ee:Se;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function Ce(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)((function(){var e,a=t.current;function i(){var e,t,n=a.scrollHeight,o=null!==(e=null==r?void 0:r.duration)&&void 0!==e?e:function(e){var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!==(t=null==r?void 0:r.easing)&&void 0!==t?t:"ease-in-out"),height:n+"px"}}function l(){var e=i();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return xe(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame((function(){n?(l(),requestAnimationFrame((function(){a.style.height=Ee.height,a.style.overflow=Ee.overflow}))):(a.style.display="block",requestAnimationFrame((function(){l()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function Te(e){if(!be.Z.canUseDOM)return e?Ee:Se}function _e(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,l=e.onCollapseTransitionEnd,s=e.className,u=e.disableSSRStyle,c=(0,a.useRef)(null);return Ce({collapsibleRef:c,collapsed:r,animation:i}),a.createElement(n,{ref:c,style:u?void 0:Te(r),onTransitionEnd:function(e){"height"===e.propertyName&&(xe(c.current,r),null==l||l(r))},className:s},o)}function Ae(e){var t=e.collapsed,n=(0,ve.Z)(e,ye),r=(0,a.useState)(!t),o=r[0],i=r[1];(0,a.useLayoutEffect)((function(){t||i(!0)}),[t]);var l=(0,a.useState)(t),s=l[0],u=l[1];return(0,a.useLayoutEffect)((function(){o&&u(t)}),[o,t]),o?a.createElement(_e,Object.assign({},n,{collapsed:s})):null}function Pe(e){var t=e.lazy,n=(0,ve.Z)(e,we),r=t?Ae:_e;return a.createElement(r,Object.assign({},n))}var Re=n(2389),Le=n(6010),Ne="details_lb9f",Oe="isBrowser_bmU9",Ie="collapsibleContent_i85q",De=["summary","children"];function Be(e){return!!e&&("SUMMARY"===e.tagName||Be(e.parentElement))}function Me(e,t){return!!e&&(e===t||Me(e.parentElement,t))}function Fe(e){var t,n=e.summary,r=e.children,o=(0,ve.Z)(e,De),i=(0,Re.Z)(),l=(0,a.useRef)(null),s=ke({initialState:!o.open}),u=s.collapsed,c=s.setCollapsed,d=(0,a.useState)(o.open),f=d[0],p=d[1];return a.createElement("details",Object.assign({},o,{ref:l,open:f,"data-collapsed":u,className:(0,Le.Z)(Ne,(t={},t[Oe]=i,t),o.className),onMouseDown:function(e){Be(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var t=e.target;Be(t)&&Me(t,l.current)&&(e.preventDefault(),u?(c(!1),p(!0)):c(!0))}}),n,a.createElement(Pe,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){c(e),p(!e)}},a.createElement("div",{className:Ie},r)))}var je=(0,a.createContext)(null);function ze(e){var t=e.children;return a.createElement(je.Provider,{value:(0,a.useState)(null)},t)}function Ue(){var e=(0,a.useContext)(je);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function Ze(){var e=Ue()[0];if(e){var t=e.component;return function(n){return a.createElement(t,Object.assign({},e.props,n))}}return function(){}}function qe(e){var t,n=e.component,r=e.props,o=Ue()[1],i=(t=r,(0,a.useMemo)((function(){return t}),[].concat(Object.keys(t),Object.values(t))));return(0,a.useEffect)((function(){o({component:n,props:i})}),[o,n,i]),(0,a.useEffect)((function(){return function(){return o(null)}}),[o]),null}function Ge(e,t){return void 0===t&&(t=function(e,t){return e===t}),e.filter((function(n,r){return e.findIndex((function(e){return t(e,n)}))!==r}))}function $e(e){return Array.from(new Set(e))}var He={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"},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:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}},Ve=m("docusaurus.announcement.dismiss"),We=m("docusaurus.announcement.id"),Qe=function(){return"true"===Ve.get()},Ke=function(e){return Ve.set(String(e))},Ye=(0,a.createContext)(null);function Xe(e){var t=e.children,n=function(){var e=o().announcementBar,t=(0,Re.Z)(),n=(0,a.useState)((function(){return!!t&&Qe()})),r=n[0],i=n[1];(0,a.useEffect)((function(){i(Qe())}),[]);var l=(0,a.useCallback)((function(){Ke(!0),i(!0)}),[]);return(0,a.useEffect)((function(){if(e){var t=e.id,n=We.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;We.set(t),r&&Ke(!1),!r&&Qe()||i(!1)}}),[e]),(0,a.useMemo)((function(){return{isActive:!!e&&!r,close:l}}),[e,r,l])}();return a.createElement(Ye.Provider,{value:n},t)}var Je=function(){var e=(0,a.useContext)(Ye);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function et(){var e=(0,r.Z)().siteConfig.baseUrl;return(0,h.TH)().pathname.replace(e,"/")}var tt=n(5999),nt=function(){return(0,tt.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"})};function rt(e){var t={};return Object.values(e).forEach((function(e){var n,r=function(e){return e[0].toUpperCase()}(e.name);t[r]=null!==(n=t[r])&&void 0!==n?n:[],t[r].push(e)})),Object.entries(t).sort((function(e,t){var n=e[0],r=t[0];return n.localeCompare(r)})).map((function(e){return{letter:e[0],tags:e[1].sort((function(e,t){return e.name.localeCompare(t.name)}))}}))}function ot(e){!function(e){var t=(0,h.k6)().block,n=(0,a.useRef)(e);(0,a.useEffect)((function(){n.current=e}),[e]),(0,a.useEffect)((function(){return t((function(e,t){return n.current(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function at(e){var t=e.getBoundingClientRect();return t.top===t.bottom?at(e.parentNode):t}function it(e,t){var n,r=t.anchorTopOffset,o=e.find((function(e){return at(e).top>=r}));return o?function(e){return e.top>0&&e.bottom<window.innerHeight/2}(at(o))?o:null!==(n=e[e.indexOf(o)-1])&&void 0!==n?n:null:e[e.length-1]}function lt(){var e=(0,a.useRef)(0),t=o().navbar.hideOnScroll;return(0,a.useEffect)((function(){e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function st(e){var t=(0,a.useRef)(void 0),n=lt();(0,a.useEffect)((function(){if(!e)return function(){};var r=e.linkClassName,o=e.linkActiveClassName,a=e.minHeadingLevel,i=e.maxHeadingLevel;function l(){var e=function(e){return Array.from(document.getElementsByClassName(e))}(r),l=function(e){for(var t=e.minHeadingLevel,n=e.maxHeadingLevel,r=[],o=t;o<=n;o+=1)r.push("h"+o+".anchor");return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:a,maxHeadingLevel:i}),s=it(l,{anchorTopOffset:n.current}),u=e.find((function(e){return s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)}));e.forEach((function(e){!function(e,n){var r;n?(t.current&&t.current!==e&&(null===(r=t.current)||void 0===r||r.classList.remove(o)),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===u)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),function(){document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}var ut=["parentIndex"];function ct(e){var t=e.map((function(e){return Object.assign({},e,{parentIndex:-1,children:[]})})),n=Array(7).fill(-1);t.forEach((function(e,t){var r=n.slice(2,e.level);e.parentIndex=Math.max.apply(Math,r),n[e.level]=t}));var r=[];return t.forEach((function(e){var n=e.parentIndex,o=(0,ve.Z)(e,ut);n>=0?t[n].children.push(o):r.push(o)})),r}function dt(e){var t=e.toc,n=e.minHeadingLevel,r=e.maxHeadingLevel;return t.flatMap((function(e){var t=dt({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[Object.assign({},e,{children:t})]:t}))}function ft(e){var t=e.toc,n=e.minHeadingLevel,r=e.maxHeadingLevel;return(0,a.useMemo)((function(){return dt({toc:ct(t),minHeadingLevel:n,maxHeadingLevel:r})}),[t,n,r])}var pt=(0,a.createContext)(void 0);function mt(e){var t,n=e.children;return a.createElement(pt.Provider,{value:(t=(0,a.useRef)(!0),(0,a.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]))},n)}function ht(){var e=(0,a.useContext)(pt);if(null==e)throw new Error('"useScrollController" is used but no context provider was found in the React tree.');return e}var gt=function(){return be.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function vt(e,t){void 0===t&&(t=[]);var n=ht().scrollEventsEnabledRef,r=(0,a.useRef)(gt()),o=me(e);(0,a.useEffect)((function(){var e=function(){if(n.current){var e=gt();o&&o(e,r.current),r.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[o,n].concat(t))}function bt(){var e,t,n,r=ht(),o=(e=(0,a.useRef)({elem:null,top:0}),t=(0,a.useCallback)((function(t){e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,a.useCallback)((function(){var t=e.current,n=t.elem,r=t.top;if(!n)return{restored:!1};var o=n.getBoundingClientRect().top-r;return o&&window.scrollBy({left:0,top:o}),e.current={elem:null,top:0},{restored:0!==o}}),[]),(0,a.useMemo)((function(){return{save:t,restore:n}}),[n,t])),i=(0,a.useRef)(void 0),l=(0,a.useCallback)((function(e){o.save(e),r.disableScrollEvents(),i.current=function(){var e=o.restore().restored;if(i.current=void 0,e){window.addEventListener("scroll",(function e(){r.enableScrollEvents(),window.removeEventListener("scroll",e)}))}else r.enableScrollEvents()}}),[r,o]);return(0,a.useLayoutEffect)((function(){var e;null===(e=i.current)||void 0===e||e.call(i)})),{blockElementScrollPositionUntilNextRender:l}}function yt(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var wt=n(723);function kt(e){return"/"===e.path&&!0===e.exact}function Et(e){return"/"===e.path&&!1===e.exact}function St(e){if(void 0===e&&(e=wt.Z),0!==e.length){var t=e.find(kt);return t||St(e.filter(Et).flatMap((function(e){var t;return null!==(t=e.routes)&&void 0!==t?t:[]})))}}function xt(){return(0,a.useMemo)((function(){return St()}),[])}var Ct="theme",Tt=m(Ct),_t="light",At="dark",Pt=function(e){return e===At?At:_t},Rt=function(e){Tt.set(Pt(e))};function Lt(){var e=o().colorMode,t=e.defaultMode,n=e.disableSwitch,r=e.respectPrefersColorScheme,i=(0,a.useState)(function(e){return be.Z.canUseDOM?Pt(document.documentElement.getAttribute("data-theme")):Pt(e)}(t)),l=i[0],s=i[1],u=(0,a.useCallback)((function(){s(_t),Rt(_t)}),[]),c=(0,a.useCallback)((function(){s(At),Rt(At)}),[]);(0,a.useEffect)((function(){document.documentElement.setAttribute("data-theme",Pt(l))}),[l]),(0,a.useEffect)((function(){if(!n){var e=function(e){if(e.key===Ct)try{var t=Tt.get();null!==t&&s(Pt(t))}catch(n){console.error(n)}};return window.addEventListener("storage",e),function(){window.removeEventListener("storage",e)}}}),[n,s]);var d=a.useRef(!1);return(0,a.useEffect)((function(){if(!n||r){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=function(e){var t=e.matches;window.matchMedia("print").matches||d.current?d.current=window.matchMedia("print").matches:s(t?At:_t)};return e.addListener(t),function(){e.removeListener(t)}}}),[n,r]),{isDarkTheme:l===At,setLightTheme:u,setDarkTheme:c}}var Nt=a.createContext(void 0);function Ot(e){var t=e.children,n=Lt(),r=n.isDarkTheme,o=n.setLightTheme,i=n.setDarkTheme,l=(0,a.useMemo)((function(){return{isDarkTheme:r,setLightTheme:o,setDarkTheme:i}}),[r,o,i]);return a.createElement(Nt.Provider,{value:l},t)}function It(){var e=(0,a.useContext)(Nt);if(null==e)throw new Error('"useColorMode()" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.');return e}var Dt="docusaurus.tab.",Bt=(0,a.createContext)(void 0);function Mt(){var e=(0,a.useState)({}),t=e[0],n=e[1],r=(0,a.useCallback)((function(e,t){m("docusaurus.tab."+e).set(t)}),[]);return(0,a.useEffect)((function(){try{var e={};(function(e){void 0===e&&(e=c);var t=d(e);if(!t)return[];for(var n=[],r=0;r<t.length;r+=1){var o=t.key(r);null!==o&&n.push(o)}return n})().forEach((function(t){if(t.startsWith(Dt)){var n=t.substring(Dt.length);e[n]=m(t).get()}})),n(e)}catch(t){console.error(t)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var r;return Object.assign({},n,((r={})[e]=t,r))})),r(e,t)}}}function Ft(e){var t=e.children,n=Mt(),r=n.tabGroupChoices,o=n.setTabGroupChoices,i=(0,a.useMemo)((function(){return{tabGroupChoices:r,setTabGroupChoices:o}}),[r,o]);return a.createElement(Bt.Provider,{value:i},t)}function jt(){var e=(0,a.useContext)(Bt);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e}function zt(e){var t=(0,a.useState)(e),n=t[0],r=t[1],o=(0,a.useRef)(!1),i=(0,a.useRef)(0),l=(0,a.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return vt((function(t,n){if(e){var a=t.scrollY;if(a<i.current)r(!0);else if(o.current)o.current=!1;else{var l=null==n?void 0:n.scrollY,s=document.documentElement.scrollHeight-i.current,u=window.innerHeight;l&&a>=l?r(!1):a+u<s&&r(!0)}}})),ge((function(t){if(e)return t.location.hash?(o.current=!0,void r(!1)):void r(!0)})),{navbarRef:l,isNavbarVisible:n}}var Ut="navigation-with-keyboard";function Zt(){(0,a.useEffect)((function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(Ut),"mousedown"===e.type&&document.body.classList.remove(Ut)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(Ut),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}var qt={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]};function Gt(){var e=o().prism,t=It().isDarkTheme,n=e.theme||qt,r=e.darkTheme||n;return t?r:n}function $t(e){void 0===e&&(e=!0),(0,a.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e])}var Ht="desktop",Vt="mobile",Wt="ssr";function Qt(){return be.Z.canUseDOM?window.innerWidth>996?Ht:Vt:Wt}function Kt(){var e=(0,a.useState)((function(){return Qt()})),t=e[0],n=e[1];return(0,a.useEffect)((function(){function e(){n(Qt())}return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),t}},8802:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var o,a=e.split(/[#?]/)[0],i="/"===a||a===r?a:(o=a,n?function(e){return e.endsWith("/")?e:e+"/"}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));return e.replace(a,i)}},8780: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}})},6010:function(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function o(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}n.d(t,{Z:function(){return o}})},2358:function(e,t,n){"use strict";n.d(t,{lX:function(){return S},q_:function(){return P},ob:function(){return h},PP:function(){return L},Ep:function(){return m},Hp:function(){return g}});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&o(e),s=t&&o(t),u=l||s;if(e&&o(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?a(i,f):".."===p?(a(i,f),d++):d&&(a(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var 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),o=l(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},u=n(2177);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 m(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function 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,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;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",k="hashchange";function E(){try{return window.history.state||{}}catch(e){return{}}}function S(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t,n=window.history,o=(-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,a=!(-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,S=i.keyLength,x=void 0===S?6:S,C=e.basename?p(c(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return C&&(a=f(a,C)),h(a,r,n)}function _(){return Math.random().toString(36).substr(2,x)}var A=v();function P(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(T(e.state))}function L(){O(T(E()))}var N=!1;function O(e){if(N)N=!1,P();else{A.confirmTransitionTo(e,"POP",g,(function(t){t?P({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(N=!0,M(o))}(e)}))}}var I=T(E()),D=[I.key];function B(e){return C+m(e)}function M(e){n.go(e)}var F=0;function j(e){1===(F+=e)&&1===e?(window.addEventListener(w,R),a&&window.addEventListener(k,L)):0===F&&(window.removeEventListener(w,R),a&&window.removeEventListener(k,L))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:B,push:function(e,t){var r="PUSH",a=h(e,t,_(),U.location);A.confirmTransitionTo(a,r,g,(function(e){if(e){var t=B(a),i=a.key,l=a.state;if(o)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=D.indexOf(U.location.key),c=D.slice(0,u+1);c.push(a.key),D=c,P({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=h(e,t,_(),U.location);A.confirmTransitionTo(a,r,g,(function(e){if(e){var t=B(a),i=a.key,l=a.state;if(o)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=D.indexOf(U.location.key);-1!==u&&(D[u]=a.key),P({action:r,location:a})}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=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var x="hashchange",C={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 T(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function _(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function A(e){window.location.replace(T(window.location.href)+"#"+e)}function P(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?y:o,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?p(c(e.basename)):"",d=C[l],g=d.encodePath,w=d.decodePath;function k(){var e=w(_());return s&&(e=f(e,s)),h(e)}var E=v();function S(e){(0,r.Z)(z,e),z.length=t.length,E.notifyListeners(z.location,z.action)}var P=!1,R=null;function L(){var e,t,n=_(),r=g(n);if(n!==r)A(r);else{var o=k(),i=z.location;if(!P&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===m(o))return;R=null,function(e){if(P)P=!1,S();else{var t="POP";E.confirmTransitionTo(e,t,a,(function(n){n?S({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(m(t));-1===n&&(n=0);var r=D.lastIndexOf(m(e));-1===r&&(r=0);var o=n-r;o&&(P=!0,B(o))}(e)}))}}(o)}}var N=_(),O=g(N);N!==O&&A(O);var I=k(),D=[m(I)];function B(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(x,L):0===M&&window.removeEventListener(x,L)}var j=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=T(window.location.href)),n+"#"+g(s+m(e))},push:function(e,t){var n="PUSH",r=h(e,void 0,void 0,z.location);E.confirmTransitionTo(r,n,a,(function(e){if(e){var t=m(r),o=g(s+t);if(_()!==o){R=t,function(e){window.location.hash=e}(o);var a=D.lastIndexOf(m(z.location)),i=D.slice(0,a+1);i.push(t),D=i,S({action:n,location:r})}else S()}}))},replace:function(e,t){var n="REPLACE",r=h(e,void 0,void 0,z.location);E.confirmTransitionTo(r,n,a,(function(e){if(e){var t=m(r),o=g(s+t);_()!==o&&(R=t,A(o));var a=D.indexOf(m(z.location));-1!==a&&(D[a]=t),S({action:n,location:r})}}))},go:B,goBack:function(){B(-1)},goForward:function(){B(1)},block:function(e){void 0===e&&(e=!1);var t=E.setPrompt(e);return j||(F(1),j=!0),function(){return j&&(j=!1,F(-1)),t()}},listen:function(e){var t=E.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function R(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,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=R(l,0,a.length-1),g=a.map((function(e){return h(e,void 0,"string"==typeof e?f():e.key||f())})),b=m;function y(e){var t=R(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",o=h(e,t,f(),w.location);c.confirmTransitionTo(o,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,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,f(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},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:function(e,t,n){"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=p(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(a[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:function(e){"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:function(e){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6743:function(e,t,n){"use strict";n.r(t)},2497:function(e,t,n){"use strict";n.r(t)},2295:function(e,t,n){"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&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,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e: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===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},7418:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}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(o){return!1}}()?Object.assign:function(e,a){for(var i,l,s=o(e),u=1;u<arguments.length;u++){for(var c in i=Object(arguments[u]))n.call(i,c)&&(s[c]=i[c]);if(t){l=t(i);for(var d=0;d<l.length;d++)r.call(i,l[d])&&(s[l[d]]=i[l[d]])}}return s}},7594:function(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,o,a]=t;if(r&&a){r=parseInt(r),a=parseInt(a);const e=r<a?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(a+=e);for(let t=r;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},4779:function(e,t,n){var r=n(5826);e.exports=p,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,C=v||b;r.push({name:g||a++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(x)+"]+?"})}}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),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",l=t||{},s=(o||{}).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&&(a+=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)+"`");a+=(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+'"');a+=c.prefix+d}}else a+=c}return a}}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 o=(n=n||{}).strict,a=!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 m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return o||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=a?"$":o&&h?"":"(?="+m+"|$)",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=[],o=0;o<e.length;o++)r.push(p(e[o],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(a(e,n),t,n)}(e,t,n)}},7410:function(e,t,n){"use strict";n.r(t);var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(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 o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);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 o=e.classList;if(o.contains(t))return!0;if(o.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 o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var l in a)if(a.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=a[l])}var u=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],o||l);var s=t[l],u=r.util.type(s);"Object"!==u||a[i(s)]?"Array"!==u||a[i(s)]||(a[i(s)]=!0,e(s,n,l,a)):(a[i(s)]=!0,e(s,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",a),a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new l;return s(o,o.head,e),i(e,o,t,o.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},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 o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}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 m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof o)){var C,T=1;if(b){if(!(C=a(k,S,e,v))||C.index>=e.length)break;var _=C.index,A=C.index+C[0].length,P=S;for(P+=E.value.length;_>=P;)P+=(E=E.next).value.length;if(S=P-=E.value.length,E.value instanceof o)continue;for(var R=E;R!==t.tail&&(P<A||"string"==typeof R.value);R=R.next)T++,P+=R.value.length;T--,x=e.slice(S,P),C.index-=S}else if(!(C=a(k,0,x,v)))continue;_=C.index;var L=C[0],N=x.slice(0,_),O=x.slice(_+L.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(N&&(D=s(t,D,N),S+=N.length),u(t,D,T),E=s(t,D,new o(f,g?r.tokenize(L,g):L,y,L)),O&&s(t,E,O),T>1){var B={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,B),d&&B.reach>d.reach&&(d.reach=B.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,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={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(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var l="";for(var s in a.attributes)l+=" "+s+'="'+(a.attributes[s]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+l+">"+a.content+"</"+a.tag+">"},r}(),o=r;r.default=r,o.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]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},o.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.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:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.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 o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i<o.length;i++)a[o[i]]=e.languages.bash[o[i]];e.languages.shell=e.languages.bash}(o),o.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:/[{}[\];(),.:]/},o.languages.c=o.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|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.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},o.languages.c.string],char:o.languages.c.char,comment:o.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:o.languages.c}}}}),o.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 o.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"])}(o),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"))}(o),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},o={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:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.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}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.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:o.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:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.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:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.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:o.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"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.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")),o.languages.js=o.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}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\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})),a=/"(?:[^"\\\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"(?:"+o+"|"+a+")"}))),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(a),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}(o),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,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \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("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),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 o=t[n];if("code"===o.type){var a=o.content[1],i=o.content[3];if(a&&i&&"code-language"===a.type&&"code-block"===i.type&&"string"==typeof a.content){var l=a.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(o.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r],u=/language-(.+)/.exec(a);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}(o),o.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:o.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+/},o.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 o=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=f(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),o.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&o.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 o=1,a=n;a<t.length;a++){var i=t[a],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))o++;else if(r.test(l)&&0===--o)return a}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),o.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,o=r.inside["interpolation-punctuation"],a=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 o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function u(t){var n={};n["interpolation-punctuation"]=o;var a=e.tokenize(t,n);if(3===a.length){var i=[1,1];i.push.apply(i,s(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,i)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),i=0,c={},d=s(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=o,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 o=f[i],a="string"==typeof r?r:r.content,l=a.indexOf(o);if(-1!==l){++i;var s=a.substring(0,l),d=u(c[o]),p=a.substring(l+o.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}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,o=n.length;r<o;r++){var a=n[r];if("string"!=typeof a){var i=a.content;if(Array.isArray(i))if("template-string"===a.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)}))}(o),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}(o),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 o=n[r],a=e.languages.javascript[o];"RegExp"===e.util.type(a)&&(a=e.languages.javascript[o]={pattern:a});var i=a.inside||{};a.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(o),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\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:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<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 o=t[r],a=!1;if("string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(o);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)}o.content&&"string"!=typeof o.content&&l(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(o),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],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,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})}(o),o.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},o.languages.go=o.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/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.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,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(o>=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++o;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),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)}}}})}(o),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}(o),o.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"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.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:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.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:/[:;(){}]/},o.languages.objectivec=o.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 o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.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/},o.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:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.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/}),o.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 o.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}})}(o),o.languages.scss=o.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]+\}/}}}),o.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}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.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}}),o.languages.scss.atrule.inside.rest=o.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:/[{}()\[\];:.]/}}(o),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}(o),o.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:/[()]/},t.default=o},9901:function(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"},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"},bash:{title:"Bash",alias:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},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"},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"},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"},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"},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"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},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",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"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},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"},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"},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"},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"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},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"},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:function(e,t,n){const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6500:function(e,t,n){var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:function(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 o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var l={},s=e[r];if(s){function i(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,i),t(s.optional,i),t(s.modify,i)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;o(m);){for(var h in f={},m){var g=s[h];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 m=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,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(f,(function(){return r(e)})):r(e)}return l[e]=o}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},2703:function(e,t,n){"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:function(e,t,n){"use strict";var r=n(7294),o=n(7418),a=n(3840);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,m={},h={};function g(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,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 o=v.hasOwnProperty(t)?v[t]:null;(null!==o?0===o.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,o,r)&&(n=null),r||null===o?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!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 k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,C=60108,T=60114,_=60109,A=60110,P=60112,R=60113,L=60120,N=60115,O=60116,I=60121,D=60128,B=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),C=j("react.strict_mode"),T=j("react.profiler"),_=j("react.provider"),A=j("react.context"),P=j("react.forward_ref"),R=j("react.suspense"),L=j("react.suspense_list"),N=j("react.memo"),O=j("react.lazy"),I=j("react.block"),j("react.scope"),D=j("react.opaque.id"),B=j("react.debug_trace_mode"),M=j("react.offscreen"),F=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function Z(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(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 G=!1;function $(e,t){if(!e||G)return"";G=!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 o=s.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l])return"\n"+o[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{G=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function H(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=$(e.type,!1);case 11:return e=$(e.type.render,!1);case 22:return e=$(e.type._render,!1);case 1:return e=$(e.type,!0);default:return""}}function V(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 x:return"Fragment";case S:return"Portal";case T:return"Profiler";case C:return"StrictMode";case R:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case P:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case N:return V(e.type);case I:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(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 K(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 o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.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 Y(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 X(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 o({},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=W(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=W(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")?oe(e,t.type,n):t.hasOwnProperty("defaultValue")&&oe(e,t.type,W(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 oe(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=o({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 o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return o({},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:W(n)}}function ue(e,t){var n=W(t.value),r=W(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="http://www.w3.org/1999/xhtml",fe="http://www.w3.org/2000/svg";function pe(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 me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,ge,ve=(ge=function(e,t){if(e.namespaceURI!==fe||"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 ge(e,t)}))}:ge);function be(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 ye={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},we=["Webkit","ms","Moz","O"];function ke(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(""+t).trim():t+"px"}function Ee(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ye).forEach((function(e){we.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var Se=o({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 xe(e,t){if(t){if(Se[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 Ce(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 Te(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var _e=null,Ae=null,Pe=null;function Re(e){if(e=ro(e)){if("function"!=typeof _e)throw Error(i(280));var t=e.stateNode;t&&(t=ao(t),_e(e.stateNode,e.type,t))}}function Le(e){Ae?Pe?Pe.push(e):Pe=[e]:Ae=e}function Ne(){if(Ae){var e=Ae,t=Pe;if(Pe=Ae=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Oe(e,t){return e(t)}function Ie(e,t,n,r,o){return e(t,n,r,o)}function De(){}var Be=Oe,Me=!1,Fe=!1;function je(){null===Ae&&null===Pe||(De(),Ne())}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=ao(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 Ue=!1;if(d)try{var Ze={};Object.defineProperty(Ze,"passive",{get:function(){Ue=!0}}),window.addEventListener("test",Ze,Ze),window.removeEventListener("test",Ze,Ze)}catch(ge){Ue=!1}function qe(e,t,n,r,o,a,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var Ge=!1,$e=null,He=!1,Ve=null,We={onError:function(e){Ge=!0,$e=e}};function Qe(e,t,n,r,o,a,i,l,s){Ge=!1,$e=null,qe.apply(We,arguments)}function Ke(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(Ke(e)!==e)throw Error(i(188))}function Je(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ke(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return Xe(o),e;if(a===r)return Xe(o),t;a=a.sibling}throw Error(i(188))}if(n.return!==r.return)n=o,r=a;else{for(var l=!1,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){for(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)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 et(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var tt,nt,rt,ot,at=!1,it=[],lt=null,st=null,ut=null,ct=new Map,dt=new Map,ft=[],pt="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 mt(e,t,n,r,o){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:o,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":lt=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":ut=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":dt.delete(t.pointerId)}}function gt(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e=mt(t,n,r,o,a),null!==t&&(null!==(t=ro(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function vt(e){var t=no(e.target);if(null!==t){var n=Ke(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void ot(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){rt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ro(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){bt(e)&&n.delete(t)}function wt(){for(at=!1;0<it.length;){var e=it[0];if(null!==e.blockedOn){null!==(e=ro(e.blockedOn))&&tt(e);break}for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&it.shift()}null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),null!==ut&&bt(ut)&&(ut=null),ct.forEach(yt),dt.forEach(yt)}function kt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,wt)))}function Et(e){function t(t){return kt(t,e)}if(0<it.length){kt(it[0],e);for(var n=1;n<it.length;n++){var r=it[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==lt&&kt(lt,e),null!==st&&kt(st,e),null!==ut&&kt(ut,e),ct.forEach(t),dt.forEach(t),n=0;n<ft.length;n++)(r=ft[n]).blockedOn===e&&(r.blockedOn=null);for(;0<ft.length&&null===(n=ft[0]).blockedOn;)vt(n),null===n.blockedOn&&ft.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xt={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},Ct={},Tt={};function _t(e){if(Ct[e])return Ct[e];if(!xt[e])return e;var t,n=xt[e];for(t in n)if(n.hasOwnProperty(t)&&t in Tt)return Ct[e]=n[t];return e}d&&(Tt=document.createElement("div").style,"AnimationEvent"in window||(delete xt.animationend.animation,delete xt.animationiteration.animation,delete xt.animationstart.animation),"TransitionEvent"in window||delete xt.transitionend.transition);var At=_t("animationend"),Pt=_t("animationiteration"),Rt=_t("animationstart"),Lt=_t("transitionend"),Nt=new Map,Ot=new Map,It=["abort","abort",At,"animationEnd",Pt,"animationIteration",Rt,"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",Lt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1];o="on"+(o[0].toUpperCase()+o.slice(1)),Ot.set(r,t),Nt.set(r,o),u(o,[r])}}(0,a.unstable_now)();var Bt=8;function Mt(e){if(0!=(1&e))return Bt=15,1;if(0!=(2&e))return Bt=14,2;if(0!=(4&e))return Bt=13,4;var t=24&e;return 0!==t?(Bt=12,t):0!=(32&e)?(Bt=11,32):0!==(t=192&e)?(Bt=10,t):0!=(256&e)?(Bt=9,256):0!==(t=3584&e)?(Bt=8,t):0!=(4096&e)?(Bt=7,4096):0!==(t=4186112&e)?(Bt=6,t):0!==(t=62914560&e)?(Bt=5,t):67108864&e?(Bt=4,67108864):0!=(134217728&e)?(Bt=3,134217728):0!==(t=805306368&e)?(Bt=2,t):0!=(1073741824&e)?(Bt=1,1073741824):(Bt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return Bt=0;var r=0,o=0,a=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==a)r=a,o=Bt=15;else if(0!==(a=134217727&n)){var s=a&~i;0!==s?(r=Mt(s),o=Bt):0!==(l&=a)&&(r=Mt(l),o=Bt)}else 0!==(a=n&~i)?(r=Mt(a),o=Bt):0!==l&&(r=Mt(l),o=Bt);if(0===r)return 0;if(r=n&((0>(r=31-Gt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),o<=Bt)return t;Bt=o}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-Gt(t)),r|=e[n],t&=~o;return r}function jt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function zt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ut(24&~t))?zt(10,t):e;case 10:return 0===(e=Ut(192&~t))?zt(8,t):e;case 8:return 0===(e=Ut(3584&~t))&&(0===(e=Ut(4186112&~t))&&(e=512)),e;case 2:return 0===(t=Ut(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function Ut(e){return e&-e}function Zt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Gt(t)]=n}var Gt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-($t(e)/Ht|0)|0},$t=Math.log,Ht=Math.LN2;var Vt=a.unstable_UserBlockingPriority,Wt=a.unstable_runWithPriority,Qt=!0;function Kt(e,t,n,r){Me||De();var o=Xt,a=Me;Me=!0;try{Ie(o,e,t,n,r)}finally{(Me=a)||je()}}function Yt(e,t,n,r){Wt(Vt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var o;if(Qt)if((o=0==(4&t))&&0<it.length&&-1<pt.indexOf(e))e=mt(null,e,t,n,r),it.push(e);else{var a=Jt(e,t,n,r);if(null===a)o&&ht(e,r);else{if(o){if(-1<pt.indexOf(e))return e=mt(a,e,t,n,r),void it.push(e);if(function(e,t,n,r,o){switch(t){case"focusin":return lt=gt(lt,e,t,n,r,o),!0;case"dragenter":return st=gt(st,e,t,n,r,o),!0;case"mouseover":return ut=gt(ut,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return ct.set(a,gt(ct.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,dt.set(a,gt(dt.get(a)||null,e,t,n,r,o)),!0}return!1}(a,e,t,n,r))return;ht(e,r)}Dr(e,t,r,null,n)}}}function Jt(e,t,n,r){var o=Te(r);if(null!==(o=no(o))){var a=Ke(o);if(null===a)o=null;else{var i=a.tag;if(13===i){if(null!==(o=Ye(a)))return o;o=null}else if(3===i){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;o=null}else a!==o&&(o=null)}}return Dr(e,t,r,o,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,o="value"in en?en.value:en.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return nn=o.slice(e,1<t?1-t:void 0)}function on(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 ln(){return!1}function sn(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?an:ln,this.isPropagationStopped=ln,this}return o(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 un,cn,dn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(fn),mn=o({},fn,{view:0,detail:0}),hn=sn(mn),gn=o({},mn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:An,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!==dn&&(dn&&"mousemove"===e.type?(un=e.screenX-dn.screenX,cn=e.screenY-dn.screenY):cn=un=0,dn=e),un)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),vn=sn(gn),bn=sn(o({},gn,{dataTransfer:0})),yn=sn(o({},mn,{relatedTarget:0})),wn=sn(o({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),kn=o({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),En=sn(kn),Sn=sn(o({},fn,{data:0})),xn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Cn={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"},Tn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function _n(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Tn[e])&&!!t[e]}function An(){return _n}var Pn=o({},mn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=on(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Cn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:An,charCode:function(e){return"keypress"===e.type?on(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?on(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Rn=sn(Pn),Ln=sn(o({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=sn(o({},mn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:An})),On=sn(o({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=o({},gn,{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}),Dn=sn(In),Bn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var jn=d&&"TextEvent"in window&&!Fn,zn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),Un=String.fromCharCode(32),Zn=!1;function qn(e,t){switch(e){case"keyup":return-1!==Bn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var $n=!1;var Hn={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 Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Hn[e.type]:"textarea"===t}function Wn(e,t,n,r){Le(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Qn=null,Kn=null;function Yn(e){Pr(e,0)}function Xn(e){if(Y(oo(e)))return e}function Jn(e,t){if("change"===e)return t}var er=!1;if(d){var tr;if(d){var nr="oninput"in document;if(!nr){var rr=document.createElement("div");rr.setAttribute("oninput","return;"),nr="function"==typeof rr.oninput}tr=nr}else tr=!1;er=tr&&(!document.documentMode||9<document.documentMode)}function or(){Qn&&(Qn.detachEvent("onpropertychange",ar),Kn=Qn=null)}function ar(e){if("value"===e.propertyName&&Xn(Kn)){var t=[];if(Wn(t,Kn,e,Te(e)),e=Yn,Me)e(t);else{Me=!0;try{Oe(e,t)}finally{Me=!1,je()}}}}function ir(e,t,n){"focusin"===e?(or(),Kn=n,(Qn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&or()}function lr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Kn)}function sr(e,t){if("click"===e)return Xn(t)}function ur(e,t){if("input"===e||"change"===e)return Xn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},dr=Object.prototype.hasOwnProperty;function fr(e,t){if(cr(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(!dr.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function mr(e,t){var n,r=pr(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=pr(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 gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function vr(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 br=d&&"documentMode"in document&&11>=document.documentMode,yr=null,wr=null,kr=null,Er=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;Er||null==yr||yr!==X(r)||("selectionStart"in(r=yr)&&vr(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},kr&&fr(kr,r)||(kr=r,0<(r=Mr(wr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=yr)))}Dt("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),Dt("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),Dt(It,2);for(var xr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Cr=0;Cr<xr.length;Cr++)Ot.set(xr[Cr],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 Tr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),_r=new Set("cancel close invalid load scroll toggle".split(" ").concat(Tr));function Ar(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,a,l,s,u){if(Qe.apply(this,arguments),Ge){if(!Ge)throw Error(i(198));var c=$e;Ge=!1,$e=null,He||(He=!0,Ve=c)}}(r,t,void 0,e),e.currentTarget=null}function Pr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=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!==a&&o.isPropagationStopped())break e;Ar(o,l,u),a=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==a&&o.isPropagationStopped())break e;Ar(o,l,u),a=s}}}if(He)throw e=Ve,He=!1,Ve=null,e}function Rr(e,t){var n=io(t),r=e+"__bubble";n.has(r)||(Ir(t,e,2,!1),n.add(r))}var Lr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Lr]||(e[Lr]=!0,l.forEach((function(t){_r.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==r&&!t&&_r.has(e)){if("scroll"!==e)return;o|=2,a=r}var i=io(a),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(o|=4),Ir(a,e,o,t),i.add(l))}function Ir(e,t,n,r){var o=Ot.get(t);switch(void 0===o?2:o){case 0:o=Kt;break;case 1:o=Yt;break;default:o=Xt}n=o.bind(null,t,n,e),o=void 0,!Ue||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,o){var a=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===o||8===l.nodeType&&l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=no(l)))return;if(5===(s=i.tag)||6===s){r=a=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{Be(e,t,n)}finally{Fe=!1,je()}}((function(){var r=a,o=Te(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case"keypress":if(0===on(n))break e;case"keydown":case"keyup":s=Rn;break;case"focusin":u="focus",s=yn;break;case"focusout":u="blur",s=yn;break;case"beforeblur":case"afterblur":s=yn;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=vn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case At:case Pt:case Rt:s=wn;break;case Lt:s=On;break;case"scroll":s=hn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=En;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Ln}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=ze(m,f))&&c.push(Br(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,o),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)||!no(u)&&!u[eo])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?no(u):null)&&(u!==(d=Ke(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=vn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Ln,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:oo(s),p=null==u?l:oo(u),(l=new c(h,m+"leave",s,n,o)).target=d,l.relatedTarget=p,h=null,no(o)===r&&((c=new c(f,m+"enter",u,n,o)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&jr(i,l,s,c,!1),null!==u&&null!==d&&jr(i,d,u,c,!0)}if("select"===(s=(l=r?oo(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Jn;else if(Vn(l))if(er)g=ur;else{g=lr;var v=ir}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=sr);switch(g&&(g=g(e,r))?Wn(i,g,n,o):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&oe(l,"number",l.value)),v=r?oo(r):window,e){case"focusin":(Vn(v)||"true"===v.contentEditable)&&(yr=v,wr=r,kr=null);break;case"focusout":kr=wr=yr=null;break;case"mousedown":Er=!0;break;case"contextmenu":case"mouseup":case"dragend":Er=!1,Sr(i,n,o);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,o)}var b;if(Mn)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 $n?qn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(zn&&"ko"!==n.locale&&($n||"onCompositionStart"!==y?"onCompositionEnd"===y&&$n&&(b=rn()):(tn="value"in(en=o)?en.value:en.textContent,$n=!0)),0<(v=Mr(r,y)).length&&(y=new Sn(y,e,null,n,o),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Gn(n))&&(y.data=b))),(b=jn?function(e,t){switch(e){case"compositionend":return Gn(t);case"keypress":return 32!==t.which?null:(Zn=!0,Un);case"textInput":return(e=t.data)===Un&&Zn?null:e;default:return null}}(e,n):function(e,t){if($n)return"compositionend"===e||!Mn&&qn(e,t)?(e=rn(),nn=tn=en=null,$n=!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 zn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(o=new Sn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Pr(i,t)}))}function Br(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=ze(e,n))&&r.unshift(Br(e,a,o)),null!=(a=ze(e,t))&&r.push(Br(e,a,o))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function jr(e,t,n,r,o){for(var a=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,o?null!=(s=ze(n,a))&&i.unshift(Br(n,s,l)):o||null!=(s=ze(n,a))&&i.push(Br(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function zr(){}var Ur=null,Zr=null;function qr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Gr(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 $r="function"==typeof setTimeout?setTimeout:void 0,Hr="function"==typeof clearTimeout?clearTimeout:void 0;function Vr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Wr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Qr(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 Kr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Jr="__reactProps$"+Yr,eo="__reactContainer$"+Yr,to="__reactEvents$"+Yr;function no(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[eo]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Qr(e);null!==e;){if(n=e[Xr])return n;e=Qr(e)}return t}n=(e=n).parentNode}return null}function ro(e){return!(e=e[Xr]||e[eo])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function oo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function ao(e){return e[Jr]||null}function io(e){var t=e[to];return void 0===t&&(t=e[to]=new Set),t}var lo=[],so=-1;function uo(e){return{current:e}}function co(e){0>so||(e.current=lo[so],lo[so]=null,so--)}function fo(e,t){so++,lo[so]=e.current,e.current=t}var po={},mo=uo(po),ho=uo(!1),go=po;function vo(e,t){var n=e.type.contextTypes;if(!n)return po;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function bo(e){return null!=(e=e.childContextTypes)}function yo(){co(ho),co(mo)}function wo(e,t,n){if(mo.current!==po)throw Error(i(168));fo(mo,t),fo(ho,n)}function ko(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(i(108,V(t)||"Unknown",a));return o({},n,r)}function Eo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||po,go=mo.current,fo(mo,e),fo(ho,ho.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ko(e,t,go),r.__reactInternalMemoizedMergedChildContext=e,co(ho),co(mo),fo(mo,e)):co(ho),fo(ho,n)}var xo=null,Co=null,To=a.unstable_runWithPriority,_o=a.unstable_scheduleCallback,Ao=a.unstable_cancelCallback,Po=a.unstable_shouldYield,Ro=a.unstable_requestPaint,Lo=a.unstable_now,No=a.unstable_getCurrentPriorityLevel,Oo=a.unstable_ImmediatePriority,Io=a.unstable_UserBlockingPriority,Do=a.unstable_NormalPriority,Bo=a.unstable_LowPriority,Mo=a.unstable_IdlePriority,Fo={},jo=void 0!==Ro?Ro:function(){},zo=null,Uo=null,Zo=!1,qo=Lo(),Go=1e4>qo?Lo:function(){return Lo()-qo};function $o(){switch(No()){case Oo:return 99;case Io:return 98;case Do:return 97;case Bo:return 96;case Mo:return 95;default:throw Error(i(332))}}function Ho(e){switch(e){case 99:return Oo;case 98:return Io;case 97:return Do;case 96:return Bo;case 95:return Mo;default:throw Error(i(332))}}function Vo(e,t){return e=Ho(e),To(e,t)}function Wo(e,t,n){return e=Ho(e),_o(e,t,n)}function Qo(){if(null!==Uo){var e=Uo;Uo=null,Ao(e)}Ko()}function Ko(){if(!Zo&&null!==zo){Zo=!0;var e=0;try{var t=zo;Vo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),zo=null}catch(n){throw null!==zo&&(zo=zo.slice(e+1)),_o(Oo,Qo),n}finally{Zo=!1}}}var Yo=k.ReactCurrentBatchConfig;function Xo(e,t){if(e&&e.defaultProps){for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Jo=uo(null),ea=null,ta=null,na=null;function ra(){na=ta=ea=null}function oa(e){var t=Jo.current;co(Jo),e.type._context._currentValue=t}function aa(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 ia(e,t){ea=e,na=ta=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function la(e,t){if(na!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(na=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ta){if(null===ea)throw Error(i(308));ta=t,ea.dependencies={lanes:0,firstContext:t,responders:null}}else ta=ta.next=t;return e._currentValue}var sa=!1;function ua(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function ca(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 da(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function fa(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 pa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=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===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ma(e,t,n,r){var a=e.updateQueue;sa=!1;var i=a.firstBaseUpdate,l=a.lastBaseUpdate,s=a.shared.pending;if(null!==s){a.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=a.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 m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=o({},f,s);break e;case 2:sa=!0}}null!==i.callback&&(e.flags|=32,null===(s=a.effects)?a.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=a.shared.pending))break;i=s.next,s.next=null,a.lastBaseUpdate=s,a.shared.pending=null}}null===d&&(u=f),a.baseState=u,a.firstBaseUpdate=c,a.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(i(191,o));o.call(r)}}}var ga=(new r.Component).refs;function va(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ba={isMounted:function(e){return!!(e=e._reactInternals)&&Ke(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),o=ps(e),a=da(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),fa(e,a),ms(e,o,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),o=da(n,r);o.tag=2,null!=t&&(o.callback=t),fa(e,o),ms(e,r,n)}};function ya(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!fr(n,r)||!fr(o,a))}function wa(e,t,n){var r=!1,o=po,a=t.contextType;return"object"==typeof a&&null!==a?a=la(a):(o=bo(t)?go:mo.current,a=(r=null!=(r=t.contextTypes))?vo(e,o):po),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ba,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ka(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&&ba.enqueueReplaceState(t,t.state,null)}function Ea(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=ga,ua(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=la(a):(a=bo(t)?go:mo.current,o.context=vo(e,a)),ma(e,n,o,r),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(va(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&ba.enqueueReplaceState(o,o.state,null),ma(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4)}var Sa=Array.isArray;function xa(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 o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:(t=function(e){var t=r.refs;t===ga&&(t=r.refs={}),null===e?delete t[o]:t[o]=e},t._stringRef=o,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Ca(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 Ta(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 o(e,t){return(e=Hs(e,t)).index=0,e.sibling=null,e}function a(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=Ks(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=xa(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=xa(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=Ys(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=xa(e,null,t),n.return=e,n;case S:return(t=Ys(t,e.mode,n)).return=e,t}if(Sa(t)||Z(t))return(t=Ws(t,e.mode,n,null)).return=e,t;Ca(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===o?n.type===x?d(e,t,n.props.children,r,o):u(e,t,n,r):null;case S:return n.key===o?c(e,t,n,r):null}if(Sa(n)||Z(n))return null!==o?null:d(e,t,n,r,null);Ca(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,o,r.key):u(t,e,r,o);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Sa(r)||Z(r))return d(t,e=e.get(n)||null,r,o,null);Ca(t,r)}return null}function h(o,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(o,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(o,d),i=a(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(o,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(o,l[h],s))&&(i=a(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(o,d);h<l.length;h++)null!==(g=m(d,o,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=a(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(o,e)})),u}function g(o,l,s,u){var c=Z(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(o,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(o,h),l=a(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(o,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(o,b.value,u))&&(l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(o,h);!b.done;g++,b=s.next())null!==(b=m(h,o,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=a(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(o,e)})),c}return function(e,r,a,s){var u="object"==typeof a&&null!==a&&a.type===x&&null===a.key;u&&(a=a.props.children);var c="object"==typeof a&&null!==a;if(c)switch(a.$$typeof){case E:e:{for(c=a.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(a.type===x){n(e,u.sibling),(r=o(u,a.props.children)).return=e,e=r;break e}}else if(u.elementType===a.type){n(e,u.sibling),(r=o(u,a.props)).ref=xa(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===x?((r=Ws(a.props.children,e.mode,s,a.key)).return=e,e=r):((s=Vs(a.type,a.key,a.props,null,e.mode,s)).ref=xa(e,r,a),s.return=e,e=s)}return l(e);case S:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(a,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=Ks(a,e.mode,s)).return=e,e=r),l(e);if(Sa(a))return h(e,r,a,s);if(Z(a))return g(e,r,a,s);if(c&&Ca(e,a),void 0===a&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var _a=Ta(!0),Aa=Ta(!1),Pa={},Ra=uo(Pa),La=uo(Pa),Na=uo(Pa);function Oa(e){if(e===Pa)throw Error(i(174));return e}function Ia(e,t){switch(fo(Na,t),fo(La,e),fo(Ra,Pa),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:me(null,"");break;default:t=me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}co(Ra),fo(Ra,t)}function Da(){co(Ra),co(La),co(Na)}function Ba(e){Oa(Na.current);var t=Oa(Ra.current),n=me(t,e.type);t!==n&&(fo(La,e),fo(Ra,n))}function Ma(e){La.current===e&&(co(Ra),co(La))}var Fa=uo(0);function ja(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 za=null,Ua=null,Za=!1;function qa(e,t){var n=Gs(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 Ga(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 $a(e){if(Za){var t=Ua;if(t){var n=t;if(!Ga(e,t)){if(!(t=Wr(n.nextSibling))||!Ga(e,t))return e.flags=-1025&e.flags|2,Za=!1,void(za=e);qa(za,n)}za=e,Ua=Wr(t.firstChild)}else e.flags=-1025&e.flags|2,Za=!1,za=e}}function Ha(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;za=e}function Va(e){if(e!==za)return!1;if(!Za)return Ha(e),Za=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Gr(t,e.memoizedProps))for(t=Ua;t;)qa(e,t),t=Wr(t.nextSibling);if(Ha(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){Ua=Wr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ua=null}}else Ua=za?Wr(e.stateNode.nextSibling):null;return!0}function Wa(){Ua=za=null,Za=!1}var Qa=[];function Ka(){for(var e=0;e<Qa.length;e++)Qa[e]._workInProgressVersionPrimary=null;Qa.length=0}var Ya=k.ReactCurrentDispatcher,Xa=k.ReactCurrentBatchConfig,Ja=0,ei=null,ti=null,ni=null,ri=!1,oi=!1;function ai(){throw Error(i(321))}function ii(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function li(e,t,n,r,o,a){if(Ja=a,ei=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ya.current=null===e||null===e.memoizedState?Oi:Ii,e=n(r,o),oi){a=0;do{if(oi=!1,!(25>a))throw Error(i(301));a+=1,ni=ti=null,t.updateQueue=null,Ya.current=Di,e=n(r,o)}while(oi)}if(Ya.current=Ni,t=null!==ti&&null!==ti.next,Ja=0,ni=ti=ei=null,ri=!1,t)throw Error(i(300));return e}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ni?ei.memoizedState=ni=e:ni=ni.next=e,ni}function ui(){if(null===ti){var e=ei.alternate;e=null!==e?e.memoizedState:null}else e=ti.next;var t=null===ni?ei.memoizedState:ni.next;if(null!==t)ni=t,ti=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ti=e).memoizedState,baseState:ti.baseState,baseQueue:ti.baseQueue,queue:ti.queue,next:null},null===ni?ei.memoizedState=ni=e:ni=ni.next=e}return ni}function ci(e,t){return"function"==typeof t?t(e):t}function di(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ti,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var l=o.next;o.next=a.next,a.next=l}r.baseQueue=o=a,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var s=l=a=null,u=o;do{var c=u.lane;if((Ja&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,a=r):s=s.next=d,ei.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==o);null===s?a=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function fi(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{a=e(a,l.action),l=l.next}while(l!==o);cr(a,t.memoizedState)||(Mi=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var o=t._workInProgressVersionPrimary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(Ja&e)===e)&&(t._workInProgressVersionPrimary=r,Qa.push(t))),e)return n(t._source);throw Qa.push(t),Error(i(350))}function mi(e,t,n,r){var o=Ol;if(null===o)throw Error(i(349));var a=t._getVersion,l=a(t._source),s=Ya.current,u=s.useState((function(){return pi(o,t,n)})),c=u[1],d=u[0];u=ni;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=ei;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=a(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(c(e),e=ps(g),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,i=e;0<i;){var s=31-Gt(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);o.mutableReadLanes|=r&o.pendingLanes}catch(a){n((function(){throw a}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=c=Li.bind(null,ei,e),u.queue=e,u.baseQueue=null,d=pi(o,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return mi(ui(),e,t,n)}function gi(e){var t=si();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Li.bind(null,ei,e),[t.memoizedState,e]}function vi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ei.updateQueue)?(t={lastEffect:null},ei.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 bi(e){return e={current:e},si().memoizedState=e}function yi(){return ui().memoizedState}function wi(e,t,n,r){var o=si();ei.flags|=e,o.memoizedState=vi(1|t,n,void 0,void 0===r?null:r)}function ki(e,t,n,r){var o=ui();r=void 0===r?null:r;var a=void 0;if(null!==ti){var i=ti.memoizedState;if(a=i.destroy,null!==r&&ii(r,i.deps))return void vi(t,n,a,r)}ei.flags|=e,o.memoizedState=vi(1|t,n,a,r)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return ki(516,4,e,t)}function xi(e,t){return ki(4,2,e,t)}function Ci(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 Ti(e,t,n){return n=null!=n?n.concat([e]):null,ki(4,2,Ci.bind(null,t,e),n)}function _i(){}function Ai(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Pi(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ii(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ri(e,t){var n=$o();Vo(98>n?98:n,(function(){e(!0)})),Vo(97<n?97:n,(function(){var n=Xa.transition;Xa.transition=1;try{e(!1),t()}finally{Xa.transition=n}}))}function Li(e,t,n){var r=fs(),o=ps(e),a={lane:o,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?a.next=a:(a.next=i.next,i.next=a),t.pending=a,i=e.alternate,e===ei||null!==i&&i===ei)oi=ri=!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(a.eagerReducer=i,a.eagerState=s,cr(s,l))return}catch(u){}ms(e,o,r)}}var Ni={readContext:la,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},Oi={readContext:la,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:la,useEffect:Ei,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ci.bind(null,t,e),n)},useLayoutEffect:function(e,t){return wi(4,2,e,t)},useMemo:function(e,t){var n=si();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=si();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=Li.bind(null,ei,e),[r.memoizedState,e]},useRef:bi,useState:gi,useDebugValue:_i,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return Ei((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return bi(e=Ri.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=si();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},mi(r,e,t,n)},useOpaqueIdentifier:function(){if(Za){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Kr++).toString(36))),Error(i(355))})),n=gi(t)[1];return 0==(2&ei.mode)&&(ei.flags|=516,vi(5,(function(){n("r:"+(Kr++).toString(36))}),void 0,null)),t}return gi(t="r:"+(Kr++).toString(36)),t},unstable_isNewReconciler:!1},Ii={readContext:la,useCallback:Ai,useContext:la,useEffect:Si,useImperativeHandle:Ti,useLayoutEffect:xi,useMemo:Pi,useReducer:di,useRef:yi,useState:function(){return di(ci)},useDebugValue:_i,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:la,useCallback:Ai,useContext:la,useEffect:Si,useImperativeHandle:Ti,useLayoutEffect:xi,useMemo:Pi,useReducer:fi,useRef:yi,useState:function(){return fi(ci)},useDebugValue:_i,useDeferredValue:function(e){var t=fi(ci),n=t[0],r=t[1];return Si((function(){var t=Xa.transition;Xa.transition=1;try{r(e)}finally{Xa.transition=t}}),[e]),n},useTransition:function(){var e=fi(ci)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return fi(ci)[0]},unstable_isNewReconciler:!1},Bi=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?Aa(t,null,n,r):_a(t,e.child,n,r)}function ji(e,t,n,r,o){n=n.render;var a=t.ref;return ia(t,o),r=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function zi(e,t,n,r,o,a){if(null===e){var i=n.type;return"function"!=typeof i||$s(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ui(e,t,i,r,o,a))}return i=e.child,0==(o&a)&&(o=i.memoizedProps,(n=null!==(n=n.compare)?n:fr)(o,r)&&e.ref===t.ref)?al(e,t,a):(t.flags|=1,(e=Hs(i,r)).ref=t.ref,e.return=t,t.child=e)}function Ui(e,t,n,r,o,a){if(null!==e&&fr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(a&o))return t.lanes=e.lanes,al(e,t,a);0!=(16384&e.flags)&&(Mi=!0)}return Gi(e,t,n,r,a)}function Zi(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==a?a.baseLanes:n)}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,o,n),t.child}function qi(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Gi(e,t,n,r,o){var a=bo(n)?go:mo.current;return a=vo(t,a),ia(t,o),n=li(e,t,n,r,a,o),null===e||Mi?(t.flags|=1,Fi(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,al(e,t,o))}function $i(e,t,n,r,o){if(bo(n)){var a=!0;Eo(t)}else a=!1;if(ia(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),wa(t,n,r),Ea(t,n,r,o),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=la(u):u=vo(t,u=bo(n)?go:mo.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)&&ka(t,i,r,u),sa=!1;var f=t.memoizedState;i.state=f,ma(t,r,i,o),s=t.memoizedState,l!==r||f!==s||ho.current||sa?("function"==typeof c&&(va(t,n,c,r),s=t.memoizedState),(l=sa||ya(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,ca(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Xo(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=la(s):s=vo(t,s=bo(n)?go:mo.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)&&ka(t,i,r,s),sa=!1,f=t.memoizedState,i.state=f,ma(t,r,i,o);var m=t.memoizedState;l!==d||f!==m||ho.current||sa?("function"==typeof p&&(va(t,n,p,r),m=t.memoizedState),(u=sa||ya(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,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=m),i.props=r,i.state=m,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 Hi(e,t,n,r,a,o)}function Hi(e,t,n,r,o,a){qi(e,t);var i=0!=(64&t.flags);if(!r&&!i)return o&&So(t,n,!1),al(e,t,a);r=t.stateNode,Bi.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=_a(t,e.child,null,a),t.child=_a(t,null,l,a)):Fi(e,t,l,a),t.memoizedState=r.state,o&&So(t,n,!0),t.child}function Vi(e){var t=e.stateNode;t.pendingContext?wo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&wo(0,t.context,!1),Ia(e,t.containerInfo)}var Wi,Qi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,o=t.pendingProps,a=Fa.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(a|=1),fo(Fa,1&a),null===e?(void 0!==o.fallback&&$a(t),e=o.children,a=o.fallback,i?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof o.unstable_expectedLoadTime?(e=Ji(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,t.lanes=33554432,e):((n=Qs({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(o=tl(e,t,o.children,o.fallback,n),i=t.child,a=e.child.memoizedState,i.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,o):(n=el(e,t,o.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var o=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&o)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Qs(t,o,0,null),n=Ws(n,o,r,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function el(e,t,n,r){var o=e.child;return e=o.sibling,n=Hs(o,{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,o){var a=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&a)&&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=Hs(i,l),null!==e?r=Hs(e,r):(r=Ws(r,a,o,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),aa(e.return,t)}function rl(e,t,n,r,o,a){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o,lastEffect:a}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o,i.lastEffect=a)}function ol(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fa.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(fo(Fa,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ja(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),rl(t,!1,o,n,a,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ja(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}rl(t,!0,n,null,a,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function al(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Hs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Hs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Za)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 bo(t.type)&&yo(),null;case 3:return Da(),co(ho),co(mo),Ka(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Va(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Ma(t);var a=Oa(Na.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oa(Ra.current),Va(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Jr]=l,n){case"dialog":Rr("cancel",r),Rr("close",r);break;case"iframe":case"object":case"embed":Rr("load",r);break;case"video":case"audio":for(e=0;e<Tr.length;e++)Rr(Tr[e],r);break;case"source":Rr("error",r);break;case"img":case"image":case"link":Rr("error",r),Rr("load",r);break;case"details":Rr("toggle",r);break;case"input":ee(r,l),Rr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Rr("invalid",r);break;case"textarea":se(r,l),Rr("invalid",r)}for(var u in xe(n,l),e=null,l)l.hasOwnProperty(u)&&(a=l[u],"children"===u?"string"==typeof a?r.textContent!==a&&(e=["children",a]):"number"==typeof a&&r.textContent!==""+a&&(e=["children",""+a]):s.hasOwnProperty(u)&&null!=a&&"onScroll"===u&&Rr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=zr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===a.nodeType?a:a.ownerDocument,e===de&&(e=pe(n)),e===de?"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[Jr]=r,Wi(e,t),t.stateNode=e,u=Ce(n,r),n){case"dialog":Rr("cancel",e),Rr("close",e),a=r;break;case"iframe":case"object":case"embed":Rr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Tr.length;a++)Rr(Tr[a],e);a=r;break;case"source":Rr("error",e),a=r;break;case"img":case"image":case"link":Rr("error",e),Rr("load",e),a=r;break;case"details":Rr("toggle",e),a=r;break;case"input":ee(e,r),a=J(e,r),Rr("invalid",e);break;case"option":a=ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=o({},r,{value:void 0}),Rr("invalid",e);break;case"textarea":se(e,r),a=le(e,r),Rr("invalid",e);break;default:a=r}xe(n,a);var c=a;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?Ee(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ve(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Rr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(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 a.onClick&&(e.onclick=zr)}qr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oa(Na.current),Oa(Ra.current),Va(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 co(Fa),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Va(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fa.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&Zl)||bs(Ol,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Da(),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return oa(t),null;case 19:if(co(Fa),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=ja(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 fo(Fa,1&Fa.current|2),t.child}e=e.sibling}null!==r.tail&&Go()>Hl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=ja(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&&!Za)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Go()-r.renderingStartTime>Hl&&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=Go(),n.sibling=null,t=Fa.current,fo(Fa,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),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:bo(e.type)&&yo();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Da(),co(ho),co(mo),Ka(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Ma(e),null;case 13:return co(Fa),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return co(Fa),null;case 4:return Da(),null;case 10:return oa(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=H(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Wi=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}},Qi=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Oa(Ra.current);var i,l=null;switch(n){case"input":a=J(e,a),r=J(e,r),l=[];break;case"option":a=ae(e,a),r=ae(e,r),l=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),l=[];break;case"textarea":a=le(e,a),r=le(e,r),l=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=zr)}for(d in xe(n,r),n=null,a)if(!r.hasOwnProperty(d)&&a.hasOwnProperty(d)&&null!=a[d])if("style"===d){var u=a[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!=a?a[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&&Rr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=da(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Yl=r),cl(0,t)},n}function pl(e,t,n){(n=da(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return cl(0,t),r(o)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(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:Xo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Vr(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 o=e;r=o.next,0!=(4&(o=o.tag))&&0!=(1&o)&&(Ms(n,e),Bs(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:Xo(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ha(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}ha(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&qr(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&&Et(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 o=n.memoizedProps.style;o=null!=o&&o.hasOwnProperty("display")?o.display:null,r.style.display=ke("display",o)}}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(Co&&"function"==typeof Co.onCommitFiberUnmount)try{Co.onCommitFiberUnmount(xo,t)}catch(a){}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,o=r.destroy;if(r=r.tag,void 0!==o)if(0!=(4&r))Ms(t,n);else{r=t;try{o()}catch(a){zs(r,a)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){zs(t,a)}break;case 5:hl(t);break;case 4:Cl(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 kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(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&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(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?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?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=zr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function Cl(e,t){for(var n,r,o=t,a=!1;;){if(!a){a=o.return;e:for(;;){if(null===a)throw Error(i(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===o.tag||6===o.tag){e:for(var l=e,s=o,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=o.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(yl(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(a=!1)}o.sibling.return=o.return,o=o.sibling}}function Tl(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 o=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Jr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ce(e,o),t=Ce(e,r),o=0;o<a.length;o+=2){var l=a[o],s=a[o+1];"style"===l?Ee(n,s):"dangerouslySetInnerHTML"===l?ve(n,s):"children"===l?be(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!=(a=r.value)?ie(n,!!r.multiple,a,!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,Et(n.containerInfo)));case 13:return null!==t.memoizedState&&($l=Go(),bl(t.child,!0)),void _l(t);case 19:return void _l(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function _l(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=Zs.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Pl=Math.ceil,Rl=k.ReactCurrentDispatcher,Ll=k.ReactCurrentOwner,Nl=0,Ol=null,Il=null,Dl=0,Bl=0,Ml=uo(0),Fl=0,jl=null,zl=0,Ul=0,Zl=0,ql=0,Gl=null,$l=0,Hl=1/0;function Vl(){Hl=Go()+500}var Wl,Ql=null,Kl=!1,Yl=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],os=null,as=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Nl)?Go():-1!==ls?ls:ls=Go()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===$o()?1:2;if(0===ss&&(ss=zl),0!==Yo.transition){0!==us&&(us=null!==Gl?Gl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=$o(),0!=(4&Nl)&&98===e?e=zt(12,ss):e=zt(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 ms(e,t,n){if(50<as)throw as=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;qt(e,t,n),e===Ol&&(Zl|=t,4===Fl&&bs(e,Dl));var r=$o();1===t?0!=(8&Nl)&&0==(48&Nl)?ys(e):(gs(e,n),0===Nl&&(Vl(),Qo())):(0==(4&Nl)||98!==r&&99!==r||(null===os?os=new Set([e]):os.add(e)),gs(e,n)),Gl=e}function hs(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,o=e.pingedLanes,a=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Gt(l),u=1<<s,c=a[s];if(-1===c){if(0==(u&r)||0!=(u&o)){c=t,Mt(u);var d=Bt;a[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Ol?Dl:0),t=Bt,0===r)null!==n&&(n!==Fo&&Ao(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Fo&&Ao(n)}15===t?(n=ys.bind(null,e),null===zo?(zo=[n],Uo=_o(Oo,Ko)):zo.push(n),n=Fo):14===t?n=Wo(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=Wo(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Nl))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Ol?Dl:0);if(0===n)return null;var r=n,o=Nl;Nl|=16;var a=Ts();for(Ol===e&&Dl===r||(Vl(),xs(e,r));;)try{Ps();break}catch(s){Cs(e,s)}if(ra(),Rl.current=a,Nl=o,null!==Il?r=0:(Ol=null,Dl=0,r=Fl),0!=(zl&Zl))xs(e,0);else if(0!==r){if(2===r&&(Nl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(n=jt(e))&&(r=_s(e,n))),1===r)throw t=jl,xs(e,0),bs(e,n),gs(e,Go()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ns(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=$l+500-Go())){if(0!==Ft(e,0))break;if(((o=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=$r(Ns.bind(null,e),r);break}Ns(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,o=-1;0<n;){var l=31-Gt(n);a=1<<l,(l=r[l])>o&&(o=l),n&=~a}if(n=o,10<(n=(120>(n=Go()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Pl(n/1960))-n)){e.timeoutHandle=$r(Ns.bind(null,e),n);break}Ns(e);break;default:throw Error(i(329))}}return gs(e,Go()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~Zl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Gt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Nl))throw Error(i(327));if(Ds(),e===Ol&&0!=(e.expiredLanes&Dl)){var t=Dl,n=_s(e,t);0!=(zl&Zl)&&(n=_s(e,t=Ft(e,t)))}else n=_s(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Nl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(t=jt(e))&&(n=_s(e,t))),1===n)throw n=jl,xs(e,0),bs(e,t),gs(e,Go()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ns(e),gs(e,Go()),null}function ws(e,t){var n=Nl;Nl|=1;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Qo())}}function ks(e,t){var n=Nl;Nl&=-2,Nl|=8;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Qo())}}function Es(e,t){fo(Ml,Bl),Bl|=t,zl|=t}function Ss(){Bl=Ml.current,co(Ml)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Hr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&yo();break;case 3:Da(),co(ho),co(mo),Ka();break;case 5:Ma(r);break;case 4:Da();break;case 13:case 19:co(Fa);break;case 10:oa(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Il=Hs(e.current,null),Dl=Bl=zl=t,Fl=0,jl=null,ql=Zl=Ul=0}function Cs(e,t){for(;;){var n=Il;try{if(ra(),Ya.current=Ni,ri){for(var r=ei.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ri=!1}if(Ja=0,ni=ti=ei=null,oi=!1,Ll.current=null,null===n||null===n.return){Fl=1,jl=t,Il=null;break}e:{var a=e,i=n.return,l=n,s=t;if(t=Dl,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&Fa.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.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=da(-1,1);b.tag=2,fa(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=a.pingCache;if(null===y?(y=a.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=Us.bind(null,a,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(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:a=s,f.flags|=4096,t&=-t,f.lanes|=t,pa(f,fl(0,a,t));break e;case 1:a=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,pa(f,pl(f,a,t));break e}}f=f.return}while(null!==f)}Ls(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Ts(){var e=Rl.current;return Rl.current=Ni,null===e?Ni:e}function _s(e,t){var n=Nl;Nl|=16;var r=Ts();for(Ol===e&&Dl===t||xs(e,t);;)try{As();break}catch(o){Cs(e,o)}if(ra(),Nl=n,Rl.current=r,null!==Il)throw Error(i(261));return Ol=null,Dl=0,Fl}function As(){for(;null!==Il;)Rs(Il)}function Ps(){for(;null!==Il&&!Po();)Rs(Il)}function Rs(e){var t=Wl(e.alternate,e,Bl);e.memoizedProps=e.pendingProps,null===t?Ls(e):Il=t,Ll.current=null}function Ls(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Bl)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Bl)||0==(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.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(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Fl&&(Fl=5)}function Ns(e){var t=$o();return Vo(99,Os.bind(null,e,t)),null}function Os(e,t){do{Ds()}while(null!==es);if(0!=(48&Nl))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,o=r,a=e.pendingLanes&~o;e.pendingLanes=o,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=o,e.mutableReadLanes&=o,e.entangledLanes&=o,o=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<a;){var u=31-Gt(a),c=1<<u;o[u]=0,l[u]=-1,s[u]=-1,a&=~c}if(null!==os&&0==(24&r)&&os.has(e)&&os.delete(e),e===Ol&&(Il=Ol=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(o=Nl,Nl|=32,Ll.current=null,Ur=Qt,vr(l=gr())){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,a=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(T){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==a&&3!==g.nodeType||(f=d+a),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&&++m===a&&(f=d),v===u&&++h===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;Zr={focusedElem:l,selectionRange:s},Qt=!1,cs=null,ds=!1,Ql=r;do{try{Is()}catch(T){if(null===Ql)throw Error(i(330));zs(Ql,T),Ql=Ql.nextEffect}}while(null!==Ql);cs=null,Ql=r;do{try{for(l=e;null!==Ql;){var y=Ql.flags;if(16&y&&be(Ql.stateNode,""),128&y){var w=Ql.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Ql),Ql.flags&=-3;break;case 6:El(Ql),Ql.flags&=-3,Tl(Ql.alternate,Ql);break;case 1024:Ql.flags&=-1025;break;case 1028:Ql.flags&=-1025,Tl(Ql.alternate,Ql);break;case 4:Tl(Ql.alternate,Ql);break;case 8:Cl(l,s=Ql);var E=s.alternate;wl(s),null!==E&&wl(E)}Ql=Ql.nextEffect}}catch(T){if(null===Ql)throw Error(i(330));zs(Ql,T),Ql=Ql.nextEffect}}while(null!==Ql);if(k=Zr,w=gr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&vr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=mr(y,E),a=mr(y,l),s&&a&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Qt=!!Ur,Zr=Ur=null,e.current=n,Ql=r;do{try{for(y=e;null!==Ql;){var S=Ql.flags;if(36&S&&vl(y,Ql.alternate,Ql),128&S){w=void 0;var x=Ql.ref;if(null!==x){var C=Ql.stateNode;Ql.tag,w=C,"function"==typeof x?x(w):x.current=w}}Ql=Ql.nextEffect}}catch(T){if(null===Ql)throw Error(i(330));zs(Ql,T),Ql=Ql.nextEffect}}while(null!==Ql);Ql=null,jo(),Nl=o}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&&((S=Ql).sibling=null,S.stateNode=null),Ql=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?as++:(as=0,is=e):as=0,n=n.stateNode,Co&&"function"==typeof Co.onCommitFiberRoot)try{Co.onCommitFiberRoot(xo,n,void 0,64==(64&n.current.flags))}catch(T){}if(gs(e,Go()),Kl)throw Kl=!1,e=Yl,Yl=null,e;return 0!=(8&Nl)||Qo(),null}function Is(){for(;null!==Ql;){var e=Ql.alternate;ds||null===cs||(0!=(8&Ql.flags)?et(Ql,cs)&&(ds=!0):13===Ql.tag&&Al(e,Ql)&&et(Ql,cs)&&(ds=!0));var t=Ql.flags;0!=(256&t)&&gl(e,Ql),0==(512&t)||Jl||(Jl=!0,Wo(97,(function(){return Ds(),null}))),Ql=Ql.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Vo(e,Fs)}return!1}function Bs(e,t){ns.push(t,e),Jl||(Jl=!0,Wo(97,(function(){return Ds(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Wo(97,(function(){return Ds(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Nl))throw Error(i(331));var t=Nl;Nl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var o=n[r],a=n[r+1],l=o.destroy;if(o.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===a)throw Error(i(330));zs(a,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){o=n[r],a=n[r+1];try{var s=o.create;o.destroy=s()}catch(u){if(null===a)throw Error(i(330));zs(a,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 Nl=t,Qo(),!0}function js(e,t,n){fa(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&(qt(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var o=pl(n,e=ul(t,e),1);if(fa(n,o),o=fs(),null!==(n=hs(n,1)))qt(n,1,o),gs(n,o);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(a){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Dl&n)===n&&(4===Fl||3===Fl&&(62914560&Dl)===Dl&&500>Go()-$l?xs(e,0):ql|=n),gs(e,t)}function Zs(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===$o()?1:2:(0===ss&&(ss=zl),0===(t=Ut(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&(qt(e,t,n),gs(e,n))}function qs(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 Gs(e,t,n,r){return new qs(e,t,n,r)}function $s(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Hs(e,t){var n=e.alternate;return null===n?((n=Gs(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 Vs(e,t,n,r,o,a){var l=2;if(r=e,"function"==typeof e)$s(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,o,a,t);case B:l=8,o|=16;break;case C:l=8,o|=1;break;case T:return(e=Gs(12,n,t,8|o)).elementType=T,e.type=T,e.lanes=a,e;case R:return(e=Gs(13,n,t,o)).type=R,e.elementType=R,e.lanes=a,e;case L:return(e=Gs(19,n,t,o)).elementType=L,e.lanes=a,e;case M:return Qs(n,o,a,t);case F:return(e=Gs(24,n,t,o)).elementType=F,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case A:l=9;break e;case P:l=11;break e;case N:l=14;break e;case O:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Gs(l,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Ws(e,t,n,r){return(e=Gs(7,e,r,t)).lanes=n,e}function Qs(e,t,n,r){return(e=Gs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ks(e,t,n){return(e=Gs(6,e,null,t)).lanes=n,e}function Ys(e,t,n){return(t=Gs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(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=Zt(0),this.expirationTimes=Zt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zt(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function eu(e,t,n,r){var o=t.current,a=fs(),l=ps(o);e:if(n){t:{if(Ke(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(bo(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(bo(u)){n=ko(n,u,s);break e}}n=s}else n=po;return null===t.context?t.context=n:t.pendingContext=n,(t=da(a,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fa(o,t),ms(o,l,a),l}function tu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function nu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ru(e,t){nu(e,t),(e=e.alternate)&&nu(e,t)}function ou(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Gs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,ua(t),e[eo]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var o=(t=r[e])._getVersion;o=o(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,o]:n.mutableSourceEagerHydrationData.push(t,o)}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 iu(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a._internalRoot;if("function"==typeof o){var l=o;o=function(){var e=tu(i);l.call(e)}}eu(t,i,e,o)}else{if(a=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 ou(e,0,t?{hydrate:!0}:void 0)}(n,r),i=a._internalRoot,"function"==typeof o){var s=o;o=function(){var e=tu(i);s.call(e)}}ks((function(){eu(t,i,e,o)}))}return tu(i)}function lu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return Js(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||ho.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Vi(t),Wa();break;case 5:Ba(t);break;case 1:bo(t.type)&&Eo(t);break;case 4:Ia(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var o=t.type._context;fo(Jo,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(fo(Fa,1&Fa.current),null!==(t=al(e,t,n))?t.sibling:null);fo(Fa,1&Fa.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return ol(e,t,n);t.flags|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),fo(Fa,Fa.current),r)break;return null;case 23:case 24:return t.lanes=0,Zi(e,t,n)}return al(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!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,o=vo(t,mo.current),ia(t,n),o=li(null,t,r,e,o,n),t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,bo(r)){var a=!0;Eo(t)}else a=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ua(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&va(t,r,l,e),o.updater=ba,t.stateNode=o,o._reactInternals=t,Ea(t,r,e,n),t=Hi(null,t,r,!0,a,n)}else t.tag=0,Fi(null,t,o,n),t=t.child;return t;case 16:o=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=(a=o._init)(o._payload),t.type=o,a=t.tag=function(e){if("function"==typeof e)return $s(e)?1:0;if(null!=e){if((e=e.$$typeof)===P)return 11;if(e===N)return 14}return 2}(o),e=Xo(o,e),a){case 0:t=Gi(null,t,o,e,n);break e;case 1:t=$i(null,t,o,e,n);break e;case 11:t=ji(null,t,o,e,n);break e;case 14:t=zi(null,t,o,Xo(o.type,e),r,n);break e}throw Error(i(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Gi(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 1:return r=t.type,o=t.pendingProps,$i(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 3:if(Vi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,ca(e,t),ma(t,r,null,n),(r=t.memoizedState.element)===o)Wa(),t=al(e,t,n);else{if((a=(o=t.stateNode).hydrate)&&(Ua=Wr(t.stateNode.containerInfo.firstChild),za=t,a=Za=!0),a){if(null!=(e=o.mutableSourceEagerHydrationData))for(o=0;o<e.length;o+=2)(a=e[o])._workInProgressVersionPrimary=e[o+1],Qa.push(a);for(n=Aa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Wa();t=t.child}return t;case 5:return Ba(t),null===e&&$a(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,l=o.children,Gr(r,o)?l=null:null!==a&&Gr(r,a)&&(t.flags|=16),qi(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&$a(t),null;case 13:return Xi(e,t,n);case 4:return Ia(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_a(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ji(e,t,r,o=t.elementType===r?o:Xo(r,o),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,l=t.memoizedProps,a=o.value;var s=t.type._context;if(fo(Jo,s._currentValue),s._currentValue=a,null!==l)if(s=l.value,0===(a=cr(s,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,a):1073741823))){if(l.children===o.children&&!ho.current){t=al(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&a)){1===s.tag&&((c=da(-1,n&-n)).tag=2,fa(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),aa(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}Fi(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(a=t.pendingProps).children,ia(t,n),r=r(o=la(o,a.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return a=Xo(o=t.type,t.pendingProps),zi(e,t,o,a=Xo(o.type,a),r,n);case 15:return Ui(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,bo(r)?(e=!0,Eo(t)):e=!1,ia(t,n),wa(t,r,o),Ea(t,r,o,n),Hi(null,t,r,!0,e,n);case 19:return ol(e,t,n);case 23:case 24:return Zi(e,t,n)}throw Error(i(156,t.tag))},ou.prototype.render=function(e){eu(e,this._internalRoot,null,null)},ou.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;eu(null,e,null,(function(){t[eo]=null}))},tt=function(e){13===e.tag&&(ms(e,4,fs()),ru(e,4))},nt=function(e){13===e.tag&&(ms(e,67108864,fs()),ru(e,67108864))},rt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),ru(e,n)}},ot=function(e,t){return t()},_e=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 o=ao(r);if(!o)throw Error(i(90));Y(r),ne(r,o)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Oe=ws,Ie=function(e,t,n,r,o){var a=Nl;Nl|=4;try{return Vo(98,e.bind(null,t,n,r,o))}finally{0===(Nl=a)&&(Vl(),Qo())}},De=function(){0==(49&Nl)&&(function(){if(null!==os){var e=os;os=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Go())}))}Qo()}(),Ds())},Be=function(e,t){var n=Nl;Nl|=2;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Qo())}};var su={Events:[ro,oo,ao,Le,Ne,Ds,{current:!1}]},uu={findFiberByHostInstance:no,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cu={bundleType:uu.bundleType,version:uu.version,rendererPackageName:uu.rendererPackageName,rendererConfig:uu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Je(e))?null:e.stateNode},findFiberByHostInstance:uu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var du=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!du.isDisabled&&du.supportsFiber)try{xo=du.inject(cu),Co=du}catch(ge){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return iu(null,e,t,!0,n)}},3935:function(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(4448)},9590:function(e){var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(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(!a(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(!a(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(o&&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)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.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)&&!a(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:function(e,t,n){"use strict";n.d(t,{ql:function(){return J},B6:function(){return $}});var r=n(7294),o=n(5697),a=n.n(o),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),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}).apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}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]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=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},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},T=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)}),{})},_=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),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},A=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 o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var l=a[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]={}),o[n]||(o[n]={}),!r[n][u]&&(o[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var l=a[i],s=f({},r[l],o[l]);r[l]=s}return e}),[]).reverse()},P=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},R=function(e){return Array.isArray(e)?e.join(""):e},L=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}},N=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=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,"'")},D=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}),"")},B=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=B(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=D(n),a=R(t);return o?"<"+e+' data-rh="true" '+o+">"+I(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return B(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=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 m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=L(e.metaTags,y),a=L(t,v),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,o.priority),M(g.LINK,a.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=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=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},Z=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),G="undefined"!=typeof document,$=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(Z.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);$.canUseDOM=G,$.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},$.defaultProps={context:{}},$.displayName="HelmetProvider";var H=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),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===o.indexOf(s)&&o.push(s);var c=a.indexOf(s);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(c,d);var f={baseTag:H(g.BASE,n),linkTags:H(g.LINK,o),metaTags:H(g.META,a),noscriptTags:H(g.NOSCRIPT,i),scriptTags:H(g.SCRIPT,s),styleTags:H(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Q=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];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,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:P(e,"prioritizeSeoTags")});$.canUseDOM?(t=a,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){W(t,(function(){Q=null}))})):(W(t),Q=null)):j&&(o=j(a)),r(o)},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);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["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()(N(this.props,"helmetData"),N(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,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},o,((t={})[r.type]=i,t.titleAttributes=f({},a),t));case g.BODY:return f({},o,{bodyAttributes:f({},a)});case g.HTML:return f({},o,{htmlAttributes:f({},a)});default:return f({},o,((n={})[r.type]=f({},a),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,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=h(r,Y),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,a),s){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:l,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),o=f({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(K,f({},o,{context:a.value,helmetData:void 0})):r.createElement(Z.Consumer,null,(function(e){return r.createElement(K,f({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:function(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=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,m=n?Symbol.for("react.suspense_list"):60120,h=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 k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case o:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=a,t.Lazy=g,t.Memo=h,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:function(e,t,n){"use strict";e.exports=n(9921)},8356:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}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(){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(7294),s=n(5697),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 o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.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 m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.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 a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.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(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.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(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),a(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(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)}))}a(g,"propTypes",{report:s.func.isRequired}),a(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:function(e,t,n){"use strict";n.d(t,{f:function(){return i},H:function(){return l}});var r=n(6775),o=n(7462),a=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.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,o.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.Z)({},n,t,{route:e}))}})}))):null}},3727:function(e,t,n){"use strict";n.d(t,{VK:function(){return c},rU:function(){return g},OL:function(){return y}});var r=n(6775),o=n(4578),a=n(7294),i=n(2358),l=n(7462),s=n(3366),u=n(2177),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,o.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.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},m=a.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{o&&o(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!==m&&t||n,a.createElement("a",c)}));var g=m((function(e,t){var n=e.component,o=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return a.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):"",h=(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!==m?h.ref=t||v:h.innerRef=v,a.createElement(o,h)}))})),v=function(e){return e},b=a.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,C=e.innerRef,T=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=_?(0,r.LX)(n.pathname,{path:_,exact:h,sensitive:k,strict:E}):null,P=!!(y?y(A,n):A),R="function"==typeof m?m(P):m,L="function"==typeof S?S(P):S;P&&(R=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(" ")}(R,c),L=(0,l.Z)({},L,p));var N=(0,l.Z)({"aria-current":P&&o||null,className:R,style:L,to:i},T);return v!==b?N.ref=t||C:N.innerRef=C,a.createElement(g,N)}))}))},6775:function(e,t,n){"use strict";n.d(t,{l_:function(){return A},AW:function(){return N},F0:function(){return S},rs:function(){return F},s6:function(){return E},LX:function(){return L},k6:function(){return U},TH:function(){return Z},EN:function(){return j}});var r=n(4578),o=n(7294),a=n(2358),i=n(5697),l=n.n(i),s=1073741823,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};function c(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var d=o.createContext||function(e,t){var n,a,i="__create-react-context-"+function(){var e="__global_unique_id__";return u[e]=(u[e]||0)+1}()+"__",d=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=c(t.props.value),t}(0,r.Z)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):s,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);d.childContextTypes=((n={})[i]=l().object.isRequired,n);var f=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).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 o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?s:t},o.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?s:e},o.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},o.getValue=function(){return this.context[i]?this.context[i].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return f.contextTypes=((a={})[i]=l().object,a),{Provider:d,Consumer:f}},f=d,p=n(2177),m=n(7462),h=n(4779),g=n.n(h),v=(n(9864),n(3366)),b=n(8679),y=n.n(b),w=function(e){var t=f();return t.displayName=e,t},k=w("Router-History"),E=w("Router"),S=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._isMounted?n.setState({location: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(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(E.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(k.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;var x=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}(o.Component);var C={},T=0;function _(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(C[e])return C[e];var t=g().compile(e);return T<1e4&&(C[e]=t,T++),t}(e)(t,{pretty:!0})}function A(e){var t=e.computedMatch,n=e.to,r=e.push,i=void 0!==r&&r;return o.createElement(E.Consumer,null,(function(e){e||(0,p.Z)(!1);var r=e.history,l=e.staticContext,s=i?r.push:r.replace,u=(0,a.ob)(t?"string"==typeof n?_(n,t.params):(0,m.Z)({},n,{pathname:_(n.pathname,t.params)}):n);return l?(s(u),null):o.createElement(x,{onMount:function(){s(u)},onUpdate:function(e,t){var n=(0,a.ob)(t.to);(0,a.Hp)(n,(0,m.Z)({},u,{key:n.key}))||s(u)},to:n})}))}var P={},R=0;function L(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,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=P[n]||(P[n]={});if(r[e])return r[e];var o=[],a={regexp:g()(e,o,t),keys:o};return R<1e4&&(r[e]=a,R++),a}(n,{end:a,strict:l,sensitive:u}),o=r.regexp,i=r.keys,s=o.exec(e);if(!s)return null;var c=s[0],d=s.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(E.Consumer,null,(function(t){t||(0,p.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?L(n.pathname,e.props):t.match,a=(0,m.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,s=i.component,u=i.render;return Array.isArray(l)&&function(e){return 0===o.Children.count(e)}(l)&&(l=null),o.createElement(E.Provider,{value:a},a.match?l?"function"==typeof l?l(a):l:s?o.createElement(s,a):u?u(a):null:"function"==typeof l?l(a):null)}))},t}(o.Component);function O(e){return"/"===e.charAt(0)?e:"/"+e}function I(e,t){if(!e)return t;var n=O(e);return 0!==t.pathname.indexOf(n)?t:(0,m.Z)({},t,{pathname:t.pathname.substr(n.length)})}function D(e){return"string"==typeof e?e:(0,a.Ep)(e)}function B(e){return function(){(0,p.Z)(!1)}}function M(){}o.Component;var F=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(E.Consumer,null,(function(t){t||(0,p.Z)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?L(a.pathname,(0,m.Z)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);function j(e){var t="withRouter("+(e.displayName||e.name)+")",n=function(t){var n=t.wrappedComponentRef,r=(0,v.Z)(t,["wrappedComponentRef"]);return o.createElement(E.Consumer,null,(function(t){return t||(0,p.Z)(!1),o.createElement(e,(0,m.Z)({},r,t,{ref:n}))}))};return n.displayName=t,n.WrappedComponent=e,y()(n,e)}var z=o.useContext;function U(){return z(k)}function Z(){return z(E).location}},2408:function(e,t,n){"use strict";var r=n(7418),o=60103,a=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;o=d("react.element"),a=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 m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}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},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,a={},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)k.call(t,r)&&!E.hasOwnProperty(r)&&(a[r]=t[r]);var s=arguments.length-2;if(1===s)a.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===a[r]&&(a[r]=s[r]);return{$$typeof:o,type:e,key:i,ref:l,props:a,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var C=/\/+/g;function T(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 _(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 o:case a:s=!0}}if(s)return i=i(s=e),e=""===r?"."+T(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(C,"$&/")+"/"),_(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:o,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(C,"$&/")+"/")+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+T(l=e[u],u);s+=_(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+=_(l=l.value,t,n,c=r+T(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 A(e,t,n){if(null==e)return e;var r=[],o=0;return _(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function P(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 R={current:null};function L(){var e=R.current;if(null===e)throw Error(p(321));return e}var N={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=N,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var a=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)k.call(t,c)&&!E.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];a.children=u}return{$$typeof:o,type:e.type,key:i,ref:l,props:a,_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=S,t.createFactory=function(e){var t=S.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=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:P}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return L().useCallback(e,t)},t.useContext=function(e,t){return L().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return L().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return L().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return L().useLayoutEffect(e,t)},t.useMemo=function(e,t){return L().useMemo(e,t)},t.useReducer=function(e,t,n){return L().useReducer(e,t,n)},t.useRef=function(e){return L().useRef(e)},t.useState=function(e){return L().useState(e)},t.version="17.0.2"},7294:function(e,t,n){"use strict";e.exports=n(2408)},53:function(e,t){"use strict";var n,r,o,a;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)},o=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=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 m&&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 h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=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,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},o=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<C(o,t)))break e;e[r]=t,e[n]=o,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var a=2*(r+1)-1,i=e[a],l=a+1,s=e[l];if(void 0!==i&&0>C(i,n))void 0!==s&&0>C(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[a]=n,r=a);else{if(!(void 0!==s&&0>C(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function C(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],_=[],A=1,P=null,R=3,L=!1,N=!1,O=!1;function I(e){for(var t=S(_);null!==t;){if(null===t.callback)x(_);else{if(!(t.startTime<=e))break;x(_),t.sortIndex=t.expirationTime,E(T,t)}t=S(_)}}function D(e){if(O=!1,I(e),!N)if(null!==S(T))N=!0,n(B);else{var t=S(_);null!==t&&r(D,t.startTime-e)}}function B(e,n){N=!1,O&&(O=!1,o()),L=!0;var a=R;try{for(I(n),P=S(T);null!==P&&(!(P.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=P.callback;if("function"==typeof i){P.callback=null,R=P.priorityLevel;var l=i(P.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?P.callback=l:P===S(T)&&x(T),I(n)}else x(T);P=S(T)}if(null!==P)var s=!0;else{var u=S(_);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{P=null,R=a,L=!1}}var M=a;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(){N||L||(N=!0,n(B))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=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=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,a,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:A++,callback:a,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(_,e),null===S(T)&&e===S(_)&&(O?o():O=!0,r(D,i-l))):(e.sortIndex=s,E(T,e),N||L||(N=!0,n(B))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:function(e,t,n){"use strict";e.exports=n(53)},6774:function(e){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<a.length;s++){var u=a[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(o=n?n.call(r,c,d,u):void 0)||void 0===o&&c!==d)return!1}return!0}},2177:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r="Invariant failed";function o(e,t){if(!e)throw new Error(r)}},655:function(e,t,n){"use strict";n.r(t),n.d(t,{__extends:function(){return o},__assign:function(){return a},__rest:function(){return i},__decorate:function(){return l},__param:function(){return s},__metadata:function(){return u},__awaiter:function(){return c},__generator:function(){return d},__createBinding:function(){return f},__exportStar:function(){return p},__values:function(){return m},__read:function(){return h},__spread:function(){return g},__spreadArrays:function(){return v},__spreadArray:function(){return b},__await:function(){return y},__asyncGenerator:function(){return w},__asyncDelegator:function(){return k},__asyncValues:function(){return E},__makeTemplateObject:function(){return S},__importStar:function(){return C},__importDefault:function(){return T},__classPrivateFieldGet:function(){return _},__classPrivateFieldSet:function(){return A}});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 o(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 a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},a.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 o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function l(e,t,n,r){var o,a=arguments.length,i=a<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--)(o=e[l])&&(i=(a<3?o(i):a>3?o(t,n,i):o(t,n))||i);return a>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{s(r.next(e))}catch(t){a(t)}}function l(e){try{s(r.throw(e))}catch(t){a(t)}}function s(e){var t;e.done?o(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 d(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(l){a=[6,l],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}var f=Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function p(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||f(t,e,n)}function m(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 h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(l){o={error:l}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function g(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(h(arguments[t]));return e}function v(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var a=arguments[t],i=0,l=a.length;i<l;i++,o++)r[o]=a[i];return r}function b(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function y(e){return this instanceof y?(this.v=e,this):new y(e)}function w(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),a=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof y?Promise.resolve(n.value.v).then(s,u):c(a[0][2],n)}catch(r){c(a[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}function k(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,o){t[r]=e[r]?function(t){return(n=!n)?{value:y(e[r](t)),done:"return"===r}:o?o(t):t}:o}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=m(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,o){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,o,(t=e[n](t)).done,t.value)}))}}}function S(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var x=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function C(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)&&f(t,e,n);return x(t,e),t}function T(e){return e&&e.__esModule?e:{default:e}}function _(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 A(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}},7462:function(e,t,n){"use strict";function r(){return r=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},r.apply(this,arguments)}n.d(t,{Z:function(){return r}})},4578:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(9611);function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,r.Z)(e,t)}},3366:function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,{Z:function(){return r}})},9611:function(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{Z:function(){return r}})},7529:function(e){"use strict";e.exports={}},6887:function(e){"use strict";e.exports=JSON.parse('{"/blog-651":{"component":"a6aa9e1f","sidebar":"814f3328","items":[{"content":"15315605"}],"metadata":"b2b675dd"},"/blog/archive-f4c":{"component":"9e4087bc","archive":"b2f554cd"},"/blog/Bitlayer: Amplifying Bitcoin-6b2":{"component":"ccc49370","sidebar":"814f3328","content":"94da5579"},"/blog/tags-e13":{"component":"01a85c17","sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/hello-bitlayer-73d":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"15315605"}],"metadata":"79bd6113","listMetadata":"0b58a425"},"/markdown-page-be1":{"component":"1f391b9e","content":"393be207"},"/docs-9ae":{"component":"1be78505","versionMetadata":"935f2afb"},"/docs/Bitlayer Scan APIs/Accounts-4dd":{"component":"17896441","content":"068d31a7"},"/docs/Bitlayer Scan APIs/Blocks-cf1":{"component":"17896441","content":"ef566535"},"/docs/Bitlayer Scan APIs/Contracts-460":{"component":"17896441","content":"494fd248"},"/docs/Bitlayer Scan APIs/Logs-0f0":{"component":"17896441","content":"aaa1c66f"},"/docs/Bitlayer Scan APIs/Tokens-3c5":{"component":"17896441","content":"7d70e263"},"/docs/Bitlayer Scan APIs/Transactions-68b":{"component":"17896441","content":"f6c83f90"},"/docs/BitlayerArchitecture/BitlayerDesign-6b2":{"component":"17896441","content":"b2c52ba9"},"/docs/BitlayerArchitecture/LVM-6b6":{"component":"17896441","content":"91907527"},"/docs/BitlayerArchitecture/TransactionLifecycle-e7a":{"component":"17896441","content":"1cbcec10"},"/docs/BitlayerNetwork/AboutGas-f7e":{"component":"17896441","content":"f8691577"},"/docs/BitlayerNetwork/Bridges-b65":{"component":"17896441","content":"79f3b2bb"},"/docs/BitlayerNetwork/Contracts-dd5":{"component":"17896441","content":"09a35e94"},"/docs/BitlayerNetwork/Json-RPC-944":{"component":"17896441","content":"3af9b51d"},"/docs/BitlayerNetwork/Networks-2ec":{"component":"17896441","content":"5a0b0ff1"},"/docs/BitlayerNetwork/PegTokens-05d":{"component":"17896441","content":"97338e48"},"/docs/Build/Compile and Run-2f1":{"component":"17896441","content":"182ba0de"},"/docs/Build/QuickStart-e0a":{"component":"17896441","content":"fba826a7"},"/docs/category/bitlayer-architecture-5bb":{"component":"14eb3368","categoryGeneratedIndex":"1b2e8bb4"},"/docs/category/bitlayer-network-3d8":{"component":"14eb3368","categoryGeneratedIndex":"c4fdee62"},"/docs/category/bitlayer-scan-apis-911":{"component":"14eb3368","categoryGeneratedIndex":"c889d586"},"/docs/category/developer-resources-c05":{"component":"14eb3368","categoryGeneratedIndex":"7868b092"},"/docs/category/faqs-203":{"component":"14eb3368","categoryGeneratedIndex":"77aa6ee4"},"/docs/category/getting-started-066":{"component":"14eb3368","categoryGeneratedIndex":"52addc0b"},"/docs/category/introduction-15c":{"component":"14eb3368","categoryGeneratedIndex":"ecc6b621"},"/docs/DeveloperResources/Block Explorers-bb6":{"component":"17896441","content":"1f9bfb41"},"/docs/DeveloperResources/BTC Connect-60e":{"component":"17896441","content":"790d882a"},"/docs/DeveloperResources/Faucets-e07":{"component":"17896441","content":"3b705731"},"/docs/DeveloperResources/Subgraph-767":{"component":"17896441","content":"d2eb7327"},"/docs/DeveloperResources/TheGraph-46b":{"component":"17896441","content":"f220d995"},"/docs/DeveloperResources/Wallets-811":{"component":"17896441","content":"3673f061"},"/docs/FAQs/Contact Details-ce4":{"component":"17896441","content":"c8ff74a9"},"/docs/FAQs/Defillama TVL integration-24b":{"component":"17896441","content":"928ec736"},"/docs/FAQs/Frequently asked questions-f1a":{"component":"17896441","content":"6840a158"},"/docs/FAQs/WBTC-e63":{"component":"17896441","content":"c525c73d"},"/docs/Introduction/-aec":{"component":"17896441","content":"25f9780a"},"/docs/Introduction/AboutBitlayer-37a":{"component":"17896441","content":"a51f749a"},"/docs/Introduction/BitlayerVsEth-165":{"component":"17896441","content":"d1d3f8b1"},"/docs/Introduction/BitVM-be5":{"component":"17896441","content":"d5bbf5a4"},"/docs/Introduction/Roadmap-796":{"component":"17896441","content":"7ae85faa"},"/docs/Introduction/TechnicalArchitecture-b7b":{"component":"17896441","content":"17794634"},"/-deb":{"component":"c4f5d8e4","config":"5e9f5e1a"}}')}},function(e){e.O(0,[532],(function(){return t=5753,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.a99d99d4.js.LICENSE.txt b/assets/js/main.a99d99d4.js.LICENSE.txt deleted file mode 100644 index 25dc9f76..00000000 --- a/assets/js/main.a99d99d4.js.LICENSE.txt +++ /dev/null @@ -1,68 +0,0 @@ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - -/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT */ - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT <https://opensource.org/licenses/MIT> - * @author Lea Verou <https://lea.verou.me> - * @namespace - * @public - */ - -/** @license React v0.20.2 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** @license React v16.13.1 - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** @license React v17.0.2 - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** @license React v17.0.2 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/assets/js/main.e8b09af2.js b/assets/js/main.e8b09af2.js new file mode 100644 index 00000000..70315ba7 --- /dev/null +++ b/assets/js/main.e8b09af2.js @@ -0,0 +1,2 @@ +/*! For license information please see main.e8b09af2.js.LICENSE.txt */ +(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"068d31a7":[()=>Promise.all([n.e(1869),n.e(3965)]).then(n.bind(n,1923)),"@site/docs/Bitlayer Scan APIs/Accounts.mdx",1923],"0979cdad":[()=>n.e(744).then(n.t.bind(n,4462,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hello-bitlayer-8a8.json",4462],"09a35e94":[()=>n.e(2547).then(n.bind(n,1868)),"@site/docs/BitlayerNetwork/Contracts.md",1868],"11f1d9fa":[()=>n.e(7168).then(n.t.bind(n,6427,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-introduction-8cc.json",6427],"138e0e15":[()=>n.e(4921).then(n.t.bind(n,1597,19)),"@generated/@easyops-cn/docusaurus-search-local/default/__plugin.json",1597],"14eb3368":[()=>Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,4136)),"@theme/DocCategoryGeneratedIndexPage",4136],15315605:[()=>n.e(4817).then(n.bind(n,7363)),"@site/blog/2024-03-01-first-blog-post.md?truncated=true",7363],17794634:[()=>n.e(1564).then(n.bind(n,1115)),"@site/docs/Introduction/TechnicalArchitecture.md",1115],17896441:[()=>Promise.all([n.e(1869),n.e(8498),n.e(8401)]).then(n.bind(n,6011)),"@theme/DocItem",6011],"182ba0de":[()=>n.e(4842).then(n.bind(n,4840)),"@site/docs/Build/Compile and Run.md",4840],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,1283)),"@theme/SearchPage",1283],"1cbcec10":[()=>n.e(4409).then(n.bind(n,206)),"@site/docs/BitlayerArchitecture/TransactionLifecycle.md",206],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(8498),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"1f9bfb41":[()=>n.e(7358).then(n.bind(n,6113)),"@site/docs/DeveloperResources/Block Explorers.md",6113],"25003e4f":[()=>n.e(2838).then(n.t.bind(n,4351,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-archive-80c.json",4351],"25f9780a":[()=>n.e(9987).then(n.bind(n,5903)),"@site/docs/Introduction/Introduction.md",5903],"3673f061":[()=>n.e(9115).then(n.bind(n,9326)),"@site/docs/DeveloperResources/Wallets.md",9326],"36994c47":[()=>n.e(9858).then(n.t.bind(n,5516,19)),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",5516],38295533:[()=>n.e(2677).then(n.t.bind(n,3762,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-getting-started-8c0.json",3762],"393be207":[()=>n.e(4134).then(n.bind(n,6602)),"@site/src/pages/markdown-page.md",6602],"3af9b51d":[()=>n.e(4960).then(n.bind(n,6395)),"@site/docs/BitlayerNetwork/Json-RPC.md",6395],"3b705731":[()=>n.e(7745).then(n.bind(n,7681)),"@site/docs/DeveloperResources/Faucets.md",7681],"41756ce8":[()=>n.e(9616).then(n.t.bind(n,5205,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-037.json",5205],"487d435a":[()=>n.e(8379).then(n.t.bind(n,3840,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-bitlayer-architecture-678.json",3840],"494fd248":[()=>Promise.all([n.e(1869),n.e(5338)]).then(n.bind(n,3322)),"@site/docs/Bitlayer Scan APIs/Contracts.mdx",3322],"53a3e6dc":[()=>n.e(6261).then(n.t.bind(n,922,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-c06.json",922],"5a0b0ff1":[()=>n.e(1178).then(n.bind(n,8028)),"@site/docs/BitlayerNetwork/Networks.md",8028],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6586b5a6":[()=>n.e(8760).then(n.t.bind(n,8564,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-bitlayer-scan-apis-3c9.json",8564],"6840a158":[()=>n.e(8532).then(n.bind(n,152)),"@site/docs/FAQs/Frequently asked questions.md",152],"6875c492":[()=>Promise.all([n.e(1869),n.e(8498),n.e(3242),n.e(4813)]).then(n.bind(n,3069)),"@theme/BlogTagsPostsPage",3069],"790d882a":[()=>n.e(9880).then(n.bind(n,5509)),"@site/docs/DeveloperResources/BTC Connect.md",5509],"79f3b2bb":[()=>n.e(4570).then(n.bind(n,8601)),"@site/docs/BitlayerNetwork/Bridges.md",8601],"7ae85faa":[()=>n.e(6879).then(n.bind(n,5223)),"@site/docs/Introduction/Roadmap.md",5223],"7bed6d4c":[()=>n.e(4258).then(n.t.bind(n,5848,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-bitlayer-network-81a.json",5848],"7c110bd0":[()=>n.e(6877).then(n.t.bind(n,2614,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-b5f.json",2614],"7d70e263":[()=>Promise.all([n.e(1869),n.e(3047)]).then(n.bind(n,4249)),"@site/docs/Bitlayer Scan APIs/Tokens.mdx",4249],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"8b04bfe9":[()=>n.e(3079).then(n.t.bind(n,181,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-developer-resources-828.json",181],91907527:[()=>n.e(5599).then(n.bind(n,2597)),"@site/docs/BitlayerArchitecture/LVM.md",2597],"928ec736":[()=>n.e(3014).then(n.bind(n,6621)),"@site/docs/FAQs/Defillama TVL integration.md",6621],"94da5579":[()=>n.e(5675).then(n.bind(n,6513)),"@site/blog/2024-03-01-first-blog-post.md",6513],"97338e48":[()=>n.e(2044).then(n.bind(n,2805)),"@site/docs/BitlayerNetwork/PegTokens.md",2805],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],a51f749a:[()=>n.e(3775).then(n.bind(n,6766)),"@site/docs/Introduction/AboutBitlayer.md",6766],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(8498),n.e(3242),n.e(7643)]).then(n.bind(n,5124)),"@theme/BlogListPage",5124],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aaa1c66f:[()=>Promise.all([n.e(1869),n.e(8076)]).then(n.bind(n,6378)),"@site/docs/Bitlayer Scan APIs/Logs.mdx",6378],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],acecf23e:[()=>n.e(1903).then(n.t.bind(n,1912,19)),"~blog/default/blogMetadata-default.json",1912],b2c52ba9:[()=>n.e(893).then(n.bind(n,2743)),"@site/docs/BitlayerArchitecture/BitlayerDesign.md",2743],c4f5d8e4:[()=>n.e(2634).then(n.bind(n,192)),"@site/src/pages/index.js",192],c525c73d:[()=>n.e(6999).then(n.bind(n,384)),"@site/docs/FAQs/WBTC.md",384],c8dfcdb7:[()=>n.e(7120).then(n.t.bind(n,7558,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-faqs-8db.json",7558],c8ff74a9:[()=>n.e(2089).then(n.bind(n,3432)),"@site/docs/FAQs/Contact Details.md",3432],ccc49370:[()=>Promise.all([n.e(1869),n.e(8498),n.e(3242),n.e(3249)]).then(n.bind(n,3858)),"@theme/BlogPostPage",3858],d1d3f8b1:[()=>n.e(5872).then(n.bind(n,517)),"@site/docs/Introduction/BitlayerVsEth.md",517],d2eb7327:[()=>n.e(8751).then(n.bind(n,2096)),"@site/docs/DeveloperResources/Subgraph.md",2096],d5bbf5a4:[()=>n.e(238).then(n.bind(n,3353)),"@site/docs/Introduction/BitVM.md",3353],ef566535:[()=>Promise.all([n.e(1869),n.e(7204)]).then(n.bind(n,365)),"@site/docs/Bitlayer Scan APIs/Blocks.mdx",365],f220d995:[()=>n.e(5450).then(n.bind(n,8315)),"@site/docs/DeveloperResources/TheGraph.md",8315],f6c83f90:[()=>Promise.all([n.e(1869),n.e(2198)]).then(n.bind(n,9912)),"@site/docs/Bitlayer Scan APIs/Transactions.mdx",9912],f8691577:[()=>n.e(9038).then(n.bind(n,3573)),"@site/docs/BitlayerNetwork/AboutGas.md",3573],fba826a7:[()=>n.e(988).then(n.bind(n,8088)),"@site/docs/Build/QuickStart.md",8088]};var s=n(4848);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,s.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],h=(0,c.A)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;delete o.__context;const l=o.__props;return delete o.__props,(0,s.jsx)(u.W,{value:i,children:(0,s.jsx)(a,{...o,...l,...n})})}})}const p=[{path:"/blog",component:d("/blog","007"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","245"),exact:!0},{path:"/blog/Bitlayer: Amplifying Bitcoin",component:d("/blog/Bitlayer: Amplifying Bitcoin","ceb"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","4c4"),exact:!0},{path:"/blog/tags/hello-bitlayer",component:d("/blog/tags/hello-bitlayer","b08"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/search",component:d("/search","822"),exact:!0},{path:"/docs",component:d("/docs","2bc"),routes:[{path:"/docs",component:d("/docs","a06"),routes:[{path:"/docs",component:d("/docs","bf0"),routes:[{path:"/docs/Bitlayer Scan APIs/Accounts",component:d("/docs/Bitlayer Scan APIs/Accounts","051"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Blocks",component:d("/docs/Bitlayer Scan APIs/Blocks","593"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Contracts",component:d("/docs/Bitlayer Scan APIs/Contracts","920"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Logs",component:d("/docs/Bitlayer Scan APIs/Logs","66d"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Tokens",component:d("/docs/Bitlayer Scan APIs/Tokens","917"),exact:!0,sidebar:"docs"},{path:"/docs/Bitlayer Scan APIs/Transactions",component:d("/docs/Bitlayer Scan APIs/Transactions","b9d"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/BitlayerDesign",component:d("/docs/BitlayerArchitecture/BitlayerDesign","4b5"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/LVM",component:d("/docs/BitlayerArchitecture/LVM","e06"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerArchitecture/TransactionLifecycle",component:d("/docs/BitlayerArchitecture/TransactionLifecycle","362"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/AboutGas",component:d("/docs/BitlayerNetwork/AboutGas","c6e"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Bridges",component:d("/docs/BitlayerNetwork/Bridges","5fd"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Contracts",component:d("/docs/BitlayerNetwork/Contracts","69c"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Json-RPC",component:d("/docs/BitlayerNetwork/Json-RPC","4ee"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/Networks",component:d("/docs/BitlayerNetwork/Networks","563"),exact:!0,sidebar:"docs"},{path:"/docs/BitlayerNetwork/PegTokens",component:d("/docs/BitlayerNetwork/PegTokens","ecb"),exact:!0,sidebar:"docs"},{path:"/docs/Build/Compile and Run",component:d("/docs/Build/Compile and Run","ccc"),exact:!0,sidebar:"docs"},{path:"/docs/Build/QuickStart",component:d("/docs/Build/QuickStart","014"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-architecture",component:d("/docs/category/bitlayer-architecture","f26"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-network",component:d("/docs/category/bitlayer-network","89d"),exact:!0,sidebar:"docs"},{path:"/docs/category/bitlayer-scan-apis",component:d("/docs/category/bitlayer-scan-apis","35c"),exact:!0,sidebar:"docs"},{path:"/docs/category/developer-resources",component:d("/docs/category/developer-resources","17d"),exact:!0,sidebar:"docs"},{path:"/docs/category/faqs",component:d("/docs/category/faqs","a91"),exact:!0,sidebar:"docs"},{path:"/docs/category/getting-started",component:d("/docs/category/getting-started","254"),exact:!0,sidebar:"docs"},{path:"/docs/category/introduction",component:d("/docs/category/introduction","30c"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Block Explorers",component:d("/docs/DeveloperResources/Block Explorers","7d0"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/BTC Connect",component:d("/docs/DeveloperResources/BTC Connect","fd4"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Faucets",component:d("/docs/DeveloperResources/Faucets","806"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Subgraph",component:d("/docs/DeveloperResources/Subgraph","646"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/TheGraph",component:d("/docs/DeveloperResources/TheGraph","9b5"),exact:!0,sidebar:"docs"},{path:"/docs/DeveloperResources/Wallets",component:d("/docs/DeveloperResources/Wallets","77d"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Contact Details",component:d("/docs/FAQs/Contact Details","02d"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Defillama TVL integration",component:d("/docs/FAQs/Defillama TVL integration","737"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/Frequently asked questions",component:d("/docs/FAQs/Frequently asked questions","861"),exact:!0,sidebar:"docs"},{path:"/docs/FAQs/WBTC",component:d("/docs/FAQs/WBTC","e75"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/",component:d("/docs/Introduction/","278"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/AboutBitlayer",component:d("/docs/Introduction/AboutBitlayer","077"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/BitlayerVsEth",component:d("/docs/Introduction/BitlayerVsEth","318"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/BitVM",component:d("/docs/Introduction/BitVM","185"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/Roadmap",component:d("/docs/Introduction/Roadmap","52c"),exact:!0,sidebar:"docs"},{path:"/docs/Introduction/TechnicalArchitecture",component:d("/docs/Introduction/TechnicalArchitecture","944"),exact:!0,sidebar:"docs"}]}]}]},{path:"/",component:d("/","2e1"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(4625),i=n(545),s=n(8193);const l=[n(119),n(6134),n(6294),n(1043)];var c=n(8328),u=n(6347),d=n(2831),p=n(4848);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5260),m=n(4586),g=n(6025),y=n(6342),b=n(1213),v=n(2131),w=n(4090),k=n(2967),x=n(440),S=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.A)(),r=(0,v.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(h.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.A)(),{pathname:r}=(0,u.zy)();return e+(0,x.applyTrailingSlash)((0,g.A)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(h.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function _(){const{i18n:{currentLocale:e}}=(0,m.A)(),{metadata:t,image:n}=(0,y.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(b.be,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.A,{tag:k.Cy,locale:e}),(0,p.jsx)(h.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const A=new Map;var T=n(6125),L=n(6988),P=n(205);function R(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 o=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const j=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,P.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?R("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=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(j,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.qh,{location:t,render:()=>e})})}}const I=O,D="__docusaurus-base-url-issue-banner-container",B="__docusaurus-base-url-issue-banner",F="__docusaurus-base-url-issue-banner-suggestion-container";function M(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${D}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${B}" 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="${F}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${F}');\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.A)();return(0,p.jsx)(p.Fragment,{children:!s.A.canUseDOM&&(0,p.jsx)(h.A,{children:(0,p.jsx)("script",{children:M(e)})})})}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.A)(),{pathname:n}=(0,u.zy)();return t&&n===e?(0,p.jsx)(z,{}):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,m.A)(),a=(0,g.A)(e),{htmlLang:i,direction:s}=o[r];return(0,p.jsxs)(h.A,{children:[(0,p.jsx)("html",{lang:i,dir:s}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:a})]})}var q=n(7489),Q=n(2303);function V(){const e=(0,Q.A)();return(0,p.jsx)(h.A,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}const H=(0,d.v)(c.A);function W(){const e=function(e){if(A.has(e.pathname))return{...e,pathname:A.get(e.pathname)};if((0,d.u)(c.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,u.zy)());return(0,p.jsx)(I,{location:e,children:H})}function G(){return(0,p.jsx)(q.A,{children:(0,p.jsx)(L.l,{children:(0,p.jsxs)(T.x,{children:[(0,p.jsxs)(f,{children:[(0,p.jsx)(U,{}),(0,p.jsx)(_,{}),(0,p.jsx)($,{}),(0,p.jsx)(W,{})]}),(0,p.jsx)(V,{})]})})})}var K=n(4054);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Z=n(6921);const X=new Set,J=new Set,ee=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,te={prefetch:e=>{if(!(e=>!ee()&&!J.has(e)&&!X.has(e))(e))return!1;X.add(e);const t=(0,d.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(K).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Z.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!ee()&&!J.has(e))(e)&&(J.add(e),N(e))},ne=Object.freeze(te),re=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=ne;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.vd,{children:(0,p.jsx)(a.Kd,{children:(0,p.jsx)(G,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(re)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};N(window.location.pathname).then((()=>{(0,r.startTransition)(s)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"Introduction/Introduction","docs":[{"id":"Bitlayer Scan APIs/Accounts","path":"/docs/Bitlayer Scan APIs/Accounts","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Blocks","path":"/docs/Bitlayer Scan APIs/Blocks","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Contracts","path":"/docs/Bitlayer Scan APIs/Contracts","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Logs","path":"/docs/Bitlayer Scan APIs/Logs","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Tokens","path":"/docs/Bitlayer Scan APIs/Tokens","sidebar":"docs"},{"id":"Bitlayer Scan APIs/Transactions","path":"/docs/Bitlayer Scan APIs/Transactions","sidebar":"docs"},{"id":"BitlayerArchitecture/BitlayerDesign","path":"/docs/BitlayerArchitecture/BitlayerDesign","sidebar":"docs"},{"id":"BitlayerArchitecture/LVM","path":"/docs/BitlayerArchitecture/LVM","sidebar":"docs"},{"id":"BitlayerArchitecture/TransactionLifecycle","path":"/docs/BitlayerArchitecture/TransactionLifecycle","sidebar":"docs"},{"id":"BitlayerNetwork/AboutGas","path":"/docs/BitlayerNetwork/AboutGas","sidebar":"docs"},{"id":"BitlayerNetwork/Bridges","path":"/docs/BitlayerNetwork/Bridges","sidebar":"docs"},{"id":"BitlayerNetwork/Contracts","path":"/docs/BitlayerNetwork/Contracts","sidebar":"docs"},{"id":"BitlayerNetwork/Json-RPC","path":"/docs/BitlayerNetwork/Json-RPC","sidebar":"docs"},{"id":"BitlayerNetwork/Networks","path":"/docs/BitlayerNetwork/Networks","sidebar":"docs"},{"id":"BitlayerNetwork/PegTokens","path":"/docs/BitlayerNetwork/PegTokens","sidebar":"docs"},{"id":"Build/Compile and Run","path":"/docs/Build/Compile and Run","sidebar":"docs"},{"id":"Build/QuickStart","path":"/docs/Build/QuickStart","sidebar":"docs"},{"id":"DeveloperResources/Block Explorers","path":"/docs/DeveloperResources/Block Explorers","sidebar":"docs"},{"id":"DeveloperResources/BTC Connect","path":"/docs/DeveloperResources/BTC Connect","sidebar":"docs"},{"id":"DeveloperResources/Faucets","path":"/docs/DeveloperResources/Faucets","sidebar":"docs"},{"id":"DeveloperResources/Subgraph","path":"/docs/DeveloperResources/Subgraph","sidebar":"docs"},{"id":"DeveloperResources/TheGraph","path":"/docs/DeveloperResources/TheGraph","sidebar":"docs"},{"id":"DeveloperResources/Wallets","path":"/docs/DeveloperResources/Wallets","sidebar":"docs"},{"id":"FAQs/Contact Details","path":"/docs/FAQs/Contact Details","sidebar":"docs"},{"id":"FAQs/Defillama TVL integration","path":"/docs/FAQs/Defillama TVL integration","sidebar":"docs"},{"id":"FAQs/Frequently asked questions","path":"/docs/FAQs/Frequently asked questions","sidebar":"docs"},{"id":"FAQs/WBTC","path":"/docs/FAQs/WBTC","sidebar":"docs"},{"id":"Introduction/AboutBitlayer","path":"/docs/Introduction/AboutBitlayer","sidebar":"docs"},{"id":"Introduction/BitlayerVsEth","path":"/docs/Introduction/BitlayerVsEth","sidebar":"docs"},{"id":"Introduction/BitVM","path":"/docs/Introduction/BitVM","sidebar":"docs"},{"id":"Introduction/Introduction","path":"/docs/Introduction/","sidebar":"docs"},{"id":"Introduction/Roadmap","path":"/docs/Introduction/Roadmap","sidebar":"docs"},{"id":"Introduction/TechnicalArchitecture","path":"/docs/Introduction/TechnicalArchitecture","sidebar":"docs"},{"id":"/category/introduction","path":"/docs/category/introduction","sidebar":"docs"},{"id":"/category/getting-started","path":"/docs/category/getting-started","sidebar":"docs"},{"id":"/category/bitlayer-network","path":"/docs/category/bitlayer-network","sidebar":"docs"},{"id":"/category/bitlayer-architecture","path":"/docs/category/bitlayer-architecture","sidebar":"docs"},{"id":"/category/bitlayer-scan-apis","path":"/docs/category/bitlayer-scan-apis","sidebar":"docs"},{"id":"/category/developer-resources","path":"/docs/category/developer-resources","sidebar":"docs"},{"id":"/category/faqs","path":"/docs/category/faqs","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/category/introduction","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(2654);const l=JSON.parse('{"docusaurusVersion":"3.3.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.3.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.3.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.3.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.3.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.3.2"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.41.0"}}}');var c=n(4848);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(6540),o=n(8193),a=n(5260),i=n(440),s=n(5476),l=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(m,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(s.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const h=e=>(0,c.jsx)(f,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),s=n(6654),l=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,u.h)(),x=(0,c.A)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const C=(0,s.A)(E),_=E?.replace("pathname://","");let A=void 0!==_?(T=_,y&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;A&&C&&(A=(0,a.applyTrailingSlash)(A,{trailingSlash:v,baseUrl:w}));const L=(0,r.useRef)(!1),P=n?o.k2:o.N_,R=l.A.canUseIntersectionObserver,j=(0,r.useRef)(),N=()=>{L.current||null==A||(window.docusaurus.preload(A),L.current=!0)};(0,r.useEffect)((()=>(!R&&C&&null!=A&&window.docusaurus.prefetch(A),()=>{R&&j.current&&j.current.disconnect()})),[j,A,R,C]);const O=A?.startsWith("#")??!1,I=!b.target||"_self"===b.target,D=!A||!C||!I||O;return g||!O&&D||x.collectLink(A),b.id&&x.collectAnchor(b.id),D?(0,d.jsx)("a",{ref:S,href:A,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(P,{...b,onMouseEnter:N,onTouchStart:N,innerRef:e=>{S.current=e,R&&e&&C&&(j.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(j.current.unobserve(e),j.current.disconnect(),null!=A&&window.docusaurus.prefetch(A))}))})),j.current.observe(e))},to:A,...n&&{isActive:m,activeClassName:h}})}const f=r.forwardRef(p)},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>l});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>s,h:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.A)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.z)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(3102);function a(){const e=r.useContext(o.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>m,vT:()=>p,Gy:()=>u,HW:()=>g,ht:()=>d,r7:()=>h,jh:()=>f});var r=n(6347),o=n(4586),a=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>{try{return function(e,t,n){void 0===t&&(t=a.W),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return s(t)}function m(e){const t=d(e),{pathname:n}=(0,r.zy)();return l(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(4876),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8215),o=n(1312),a=n(6342),i=n(8774),s=n(3427);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},5476:(e,t,n)=>{"use strict";n.d(t,{A:()=>Dt});var r=n(6540),o=n(8215),a=n(7489),i=n(1213),s=n(6347),l=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,l.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(m,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_knG7"};function _(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.Mj)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:A.announcementBarPlaceholder}),(0,u.jsx)(_,{className:A.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var L=n(2069),P=n(3104);var R=n(9532),j=n(5600);const N=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,L.M)(),t=(0,j.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(N.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(N);if(!e)throw new R.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,j.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:I(a)})),[o,a,t])}function B(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=D();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),M=n(2303);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,M.A)(),s=(0,l.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const Q=r.memo(q),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function H(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,u.jsx)(Q,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(3465);function G(){return(0,u.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,L.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(G,{}),(0,u.jsx)(H,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.A)(r),p=(0,X.A)(t),f=(0,X.A)(o,{forcePrependBaseUrl:!0}),h=a&&o&&!(0,J.A)(o),m=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,h&&(0,u.jsx)(te.A,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(Z.A,{href:l?f:o,...c,...m}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...m})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),se=n(9169),le=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.A)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ge,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.A)(),{pathname:t}=(0,s.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[c,d,h]),(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ge,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var he=n(2131);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_nlXk";var ye=n(1088),be=n(53),ve=n(5597),we=n(4070),ke=n(5891),xe=n(2384),Se=n(9913),Ee=n(4471),Ce=n(7674),_e=n(6841),Ae=n(3810);const Te='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',Le='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>',Pe='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 5H3h14zm0 5H3h14zm0 5H3h14z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',Re='<svg width="20" height="20" viewBox="0 0 20 20"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3v4c0 2-2 4-4 4H2"></path><path d="M8 17l-6-6 6-6"></path></g></svg>',je='<svg width="40" height="40" viewBox="0 0 20 20" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"></path></svg>',Ne='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v42M20 27H8.3"></path></g></svg>',Oe='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v21M20 27H8.3"></path></g></svg>',Ie={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function De(e){let{document:t,type:n,page:r,metadata:o,tokens:a,isInterOfTree:i,isLastOfTree:s}=e;const l=n===Se.i.Title,c=n===Se.i.Keywords,u=l||c,d=n===Se.i.Heading,p=[];i?p.push(Ne):s&&p.push(Oe);const f=p.map((e=>`<span class="${Ie.hitTree}">${e}</span>`)),h=`<span class="${Ie.hitIcon}">${u?Te:d?Le:Pe}</span>`,m=[`<span class="${Ie.hitTitle}">${c?(0,_e.Z)(t.s,a):(0,Ae.C)(t.t,(0,Ce.g)(o,"t"),a)}</span>`];if(!i&&!s&&ye.tb){const e=r?r.b?.concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;m.push(`<span class="${Ie.hitPath}">${(0,Ee.$)(e??[])}</span>`)}else u||m.push(`<span class="${Ie.hitPath}">${(0,_e.Z)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),a)}</span>`);const g=`<span class="${Ie.hitAction}">${Re}</span>`;return[...f,h,`<span class="${Ie.hitWrapper}">`,...m,"</span>",g].join("")}function Be(){return`<span class="${Ie.noResults}"><span class="${Ie.noResultsIcon}">${je}</span><span>${(0,l.T)({id:"theme.SearchBar.noResultsText",message:"No results"})}</span></span>`}var Fe=n(2849),Me=n(3385);async function ze(){const e=await Promise.all([n.e(489),n.e(5741)]).then(n.t.bind(n,489,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const $e="_highlight";const Ue=function(e){let{handleSearchBarToggle:t}=e;const n=(0,M.A)(),{siteConfig:{baseUrl:o},i18n:{currentLocale:a}}=(0,le.A)(),i=(0,we.vT)();let c=o;try{const{preferredVersion:e}=(0,ve.g1)(i?.pluginId??ye.UB);e&&!e.isLast&&(c=e.path+"/")}catch(B){if(ye.I$&&!(B instanceof R.dV))throw B}const d=(0,s.W6)(),p=(0,s.zy)(),f=(0,r.useRef)(null),h=(0,r.useRef)(new Map),m=(0,r.useRef)(!1),[g,y]=(0,r.useState)(!1),[b,v]=(0,r.useState)(!1),[w,k]=(0,r.useState)(""),x=(0,r.useRef)(null),S=(0,r.useRef)(""),[E,C]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(ye.Hg))return;let e="";if(p.pathname.startsWith(c)){const t=p.pathname.substring(c.length);let n;for(const e of ye.Hg){const r="string"==typeof e?e:e.path;if(t===r||t.startsWith(`${r}/`)){n=r;break}}n&&(e=n)}S.current!==e&&(h.current.delete(e),S.current=e),C(e)}),[p.pathname,c]);const _=!!ye.O6&&Array.isArray(ye.Hg)&&""===E,A=(0,r.useCallback)((async()=>{if(_||h.current.get(E))return;h.current.set(E,"loading"),x.current?.autocomplete.destroy(),y(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,ke.Z)(c,E),ze()]);if(x.current=n(f.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,be.A)(Ie.searchBar,{[Ie.searchBarLeft]:"left"===ye.ZG}),noPrefix:!0,dropdownMenu:Ie.dropdownMenu,input:Ie.input,hint:Ie.hint,suggestions:Ie.suggestions,suggestion:Ie.suggestion,cursor:Ie.cursor,dataset:Ie.dataset,empty:Ie.empty}},[{source:(0,xe.m)(e,t,ye.AT),templates:{suggestion:De,empty:Be,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&(!E||!ye.dz))return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),i=new URLSearchParams;let s;if(i.set("q",t),E){const e=E&&Array.isArray(ye.Hg)?ye.Hg.find((e=>"string"==typeof e?e===E:e.path===E)):E,t=e?(0,Me.p)(e,a).label:E;s=ye.dz&&n?(0,l.T)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:t}):(0,l.T)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:t})}else s=(0,l.T)({id:"theme.SearchBar.seeAll",message:"See all results"});if(!E||!Array.isArray(ye.Hg)||ye.dz&&n||i.set("ctx",E),c!==o){if(!c.startsWith(o))throw new Error(`Version url '${c}' does not start with base url '${o}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);i.set("version",c.substring(o.length))}const u=`${o}search?${i.toString()}`;return r.href=u,r.textContent=s,r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),x.current?.autocomplete.close(),d.push(u))})),r})({query:t,isEmpty:n}),i=document.createElement("div");return i.className=Ie.hitFooter,i.appendChild(r),i}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:o}=t;f.current?.blur();let a=n;if(ye.CU&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append($e,t);a+=`?${e.toString()}`}r&&(a+=r),d.push(a)})).on("autocomplete:closed",(()=>{f.current?.blur()})),h.current.set(E,"done"),y(!1),m.current){const e=f.current;e.value&&x.current?.autocomplete.open(),e.focus()}}),[_,E,c,o,d]);(0,r.useEffect)((()=>{if(!ye.CU)return;const e=n?new URLSearchParams(p.search).getAll($e):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new ye.CU(t);n.unmark(),0!==e.length&&n.mark(e),k(e.join(" ")),x.current?.autocomplete.setVal(e.join(" "))}))}),[n,p.search,p.pathname]);const[T,L]=(0,r.useState)(!1),P=(0,r.useCallback)((()=>{m.current=!0,A(),L(!0),t?.(!0)}),[t,A]),j=(0,r.useCallback)((()=>{L(!1),t?.(!1)}),[t]),N=(0,r.useCallback)((()=>{A()}),[A]),O=(0,r.useCallback)((e=>{k(e.target.value),e.target.value&&v(!0)}),[]),I=!!n&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!ye.WW)return;const e=e=>{!(I?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),f.current?.focus(),P())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[I,P]);const D=(0,r.useCallback)((()=>{const e=new URLSearchParams(p.search);e.delete($e);const t=e.toString(),n=p.pathname+(""!=t?`?${t}`:"")+p.hash;n!=p.pathname+p.search+p.hash&&d.push(n),k(""),x.current?.autocomplete.setVal("")}),[p.pathname,p.search,p.hash,d]);return(0,u.jsxs)("div",{className:(0,be.A)("navbar__search",Ie.searchBarContainer,{[Ie.searchIndexLoading]:g&&b,[Ie.focused]:T}),hidden:_,children:[(0,u.jsx)("input",{placeholder:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:N,onFocus:P,onBlur:j,onChange:O,ref:f,value:w}),(0,u.jsx)(Fe.A,{className:Ie.searchBarLoadingRing}),ye.WW&&ye.pk&&(""!==w?(0,u.jsx)("button",{className:Ie.searchClearButton,onClick:D,children:"\u2715"}):n&&(0,u.jsxs)("div",{className:Ie.searchHintContainer,children:[(0,u.jsx)("kbd",{className:Ie.searchHint,children:I?"\u2318":"ctrl"}),(0,u.jsx)("kbd",{className:Ie.searchHint,children:"K"})]}))]})},qe={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Qe(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.A)(n,qe.navbarSearchContainer),children:t})}var Ve=n(4142);const He=e=>e.docs.find((t=>t.id===e.mainDocId));const We={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.A)(),p=(0,he.o)(),{search:f,hash:h}=(0,s.zy)(),m=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(me,{className:ge}),g]}),items:m})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Qe,{className:n,children:(0,u.jsx)(Ue,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,Ve.QB)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,Ve.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,Ve.Vd)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:h}=(0,ve.g1)(n),m=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??He(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...a],g=(0,Ve.Vd)(n)[0],y=t&&m.length>1?(0,l.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&m.length>1?void 0:He(g).path;return m.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:y,to:b,items:m,isActive:r?()=>!1:void 0})}};function Ge(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=We[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Ke(){const e=(0,L.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ge,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ye(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ze(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ye,{onClick:()=>t.hide()}),t.content]})}function Xe(){const e=(0,L.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(B,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Ke,{}),secondaryMenu:(0,u.jsx)(Ze,{})}):null}const Je={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function et(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function tt(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,L.M)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,P.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-a.current,c=window.innerHeight;s&&i>=s?n(!1):i+c<l&&n(!0)})),(0,c.$)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[Je.navbarHideable,!d&&Je.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(et,{onClick:i.toggle}),(0,u.jsx)(Xe,{})]})}var nt=n(440);const rt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function ot(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function at(e){let{error:t}=e;const n=(0,nt.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:rt.errorBoundaryError,children:n})}class it extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const st="right";function lt(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function ct(){const{toggle:e,shown:t}=(0,L.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(lt,{})})}const ut={colorModeToggle:"colorModeToggle_DEke"};function dt(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(it,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Ge,{...e})},t)))})}function pt(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ft(){const e=(0,L.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??st)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(pt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(ct,{}),(0,u.jsx)(G,{}),(0,u.jsx)(dt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(dt,{items:r}),(0,u.jsx)(H,{className:ut.colorModeToggle}),!o&&(0,u.jsx)(Qe,{children:(0,u.jsx)(Ue,{})})]})})}function ht(){return(0,u.jsx)(tt,{children:(0,u.jsx)(ft,{})})}function mt(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,X.A)(n),l=(0,X.A)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function gt(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(mt,{item:t})},t.href??t.to)}function yt(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(gt,{item:e},t)))})]})}function bt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(yt,{column:e},t)))})}function vt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function wt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(mt,{item:t})}function kt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(wt,{item:e}),t.length!==n+1&&(0,u.jsx)(vt,{})]},n)))})})}function xt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(bt,{columns:t}):(0,u.jsx)(kt,{links:t})}var St=n(1122);const Et={footerLogoLink:"footerLogoLink_BH7S"};function Ct(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.h)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(St.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function _t(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:Et.footerLogoLink,target:t.target,children:(0,u.jsx)(Ct,{logo:t})}):(0,u.jsx)(Ct,{logo:t})}function At(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Tt(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function Lt(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(Tt,{style:o,links:n&&n.length>0&&(0,u.jsx)(xt,{links:n}),logo:r&&(0,u.jsx)(_t,{logo:r}),copyright:t&&(0,u.jsx)(At,{copyright:t})})}const Pt=r.memo(Lt),Rt=(0,R.fM)([F.a,k.oq,P.Tv,ve.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(j.y_,{children:(0,u.jsx)(L.e,{children:(0,u.jsx)(O,{children:t})})})}]);function jt(e){let{children:t}=e;return(0,u.jsx)(Rt,{children:t})}var Nt=n(1107);function Ot(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Nt.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(ot,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(at,{error:t})})]})})})}const It={mainWrapper:"mainWrapper_z2l0"};function Dt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,y.J)(),(0,u.jsxs)(jt,{children:[(0,u.jsx)(i.be,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(ht,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(g.G.wrapper.main,It.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(Ot,{...e}),children:t})}),!n&&(0,u.jsx)(Pt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),s=n(1122),l=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.A)(t.src),dark:(0,o.A)(t.srcDark||t.src)},i=(0,l.jsx)(s.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:s}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.A)(s?.href||"/"),h=n?"":t,m=s?.alt??h;return(0,l.jsxs)(r.A,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:m,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),o=n(5066),a=n(2303),i=n(5293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,a.A)(),{colorMode:u}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(6540),o=n(8193),a=n(205),i=n(3109),s=n(4848);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function h(e){if(!o.A.canUseDOM)return e?u:d}function m(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(m,{...n,collapsed:l}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:m;return(0,s.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>m,oq:()=>h});var r=n(6540),o=n(2303),a=n(9466),i=n(9532),s=n(6342),l=n(4848);const c=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>g});var r=n(6540),o=n(8193),a=n(9532),i=n(9466),s=n(6342),l=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),[o,a]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&m(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(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||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(4070),a=n(7065),i=n(6342),s=n(4142),l=n(9532),c=n(9466),u=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function m(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,u.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return s.C5?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new l.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>c});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),o=n(5600),a=n(4581),i=n(7485),s=n(6342),l=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>l,y_:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Be)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},4142:(e,t,n)=>{"use strict";n.d(t,{$S:()=>m,B5:()=>_,C5:()=>p,Nr:()=>h,OF:()=>x,QB:()=>C,Vd:()=>S,Y:()=>w,cC:()=>f,d1:()=>A,fW:()=>E,w8:()=>b});var r=n(6540),o=n(6347),a=n(2831),i=n(4070),s=n(5597),l=n(2252),c=n(6588),u=n(1682),d=n(9169);const p=!!i.Gy;function f(e){const t=(0,l.r)();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){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=h(t);if(e)return e}}(e):void 0:e.href}function m(){const{pathname:e}=(0,o.zy)(),t=(0,c.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.ys)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function x(){const e=(0,c.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,s.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,u.s)([t,n,o].filter(Boolean))),[t,n,o])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function C(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.s)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,l.r)(),i=t.routes,s=i.find((e=>(0,o.B6)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.v)(i),sidebarName:c,sidebarItems:u}}function A(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!h(e)))}},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>l});var r=n(6540),o=n(6347),a=n(9532);function i(e){!function(e){const t=(0,o.W6)(),n=(0,a._q)(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,o.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function l(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},1682:(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 o(e){return Array.from(new Set(e))}n.d(t,{X:()=>r,s:()=>o})},1213:(e,t,n)=>{"use strict";n.d(t,{e3:()=>p,be:()=>u,Jx:()=>f});var r=n(6540),o=n(5066),a=n(5260),i=n(6803),s=n(6025),l=n(4586);var c=n(4848);function u(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const u=function(e){const{siteConfig:t}=(0,l.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.h)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.A,{children:[t&&(0,c.jsx)("title",{children:u}),t&&(0,c.jsx)("meta",{property:"og:title",content:u}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),s=(0,o.A)(i,t);return(0,c.jsxs)(d.Provider,{value:s,children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("html",{className:s})}),n]})}function f(e){let{children:t}=e;const n=(0,i.A)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,o.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>s,_q:()=>i,dV:()=>l,fM:()=>u});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.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 c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>h,gk:()=>m});var r=n(6540),o=n(8193),a=n(2303),i=n(205),s=n(9532),l=n(4848);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new s.dV("ScrollControllerProvider");return e}const p=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),o=(0,r.useRef)(p()),a=(0,s._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function h(){const e=d(),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),o=(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,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:o}}function m(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},9466:(e,t,n)=>{"use strict";n.d(t,{Dv:()=>u,Wf:()=>c});var r=n(6540);const o="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function i(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 l={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=i(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function u(e,t){const n=(0,r.useRef)((()=>null===e?l:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.A)(),{pathname:l}=(0,o.zy)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2566);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),s="/"===i||i===r?i:(l=i,n?o(l):a(l));var l;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return o.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return o.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return o.removeTrailingSlash}});var a=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return a.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return a.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return a.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return a.removePrefix}});var i=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},2849:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n(6540);var r=n(53);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var a=n(4848);function i(e){let{className:t}=e;return(0,a.jsxs)("div",{className:(0,r.A)(o.loadingRing,t),children:[(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{})]})}},5891:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(8291),o=n.n(r),a=n(1088);const i=new Map;function s(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${a.IH.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:o().Index.load(r)}})),s=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(s)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},2384:(e,t,n)=>{"use strict";n.d(t,{m:()=>c});var r=n(8291),o=n.n(r);var a=n(1088);function i(e){return s(e).concat(s(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:o().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?o().Query.wildcard.TRAILING:o().Query.wildcard.NONE})))})))}var l=n(9913);function c(e,t,n){return function(r,s){const c=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return o()[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,a.BH);if(0===c.length)return void s([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,o){if(0===r.length)return void n.push(o);const a=r[0];if(/\p{Unified_Ideograph}/u.test(a)){const n=function(e,t){const n=[];return function e(r,o){let a=0,i=!1;for(const s of t)if(r.substr(0,s.length)===s){const t={missed:o.missed,term:o.term.concat({value:s})};r.length>s.length?e(r.substr(s.length),t):n.push(t),i=!0}else for(let t=s.length-1;t>a;t-=1){const l=s.substr(0,t);if(r.substr(0,t)===l){a=t;const s={missed:o.missed,term:o.term.concat({value:l,trailing:!0})};r.length>t?e(r.substr(t),s):n.push(s),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:o.missed+1,term:o.term}):o.term.length>0&&n.push(o))}(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))}(a,t);for(const t of n){const n=o.concat(...t);e(r.slice(1),n)}}else{const t=o.concat({value:a});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:o().Query.presence.REQUIRED,wildcard:o().Query.wildcard.LEADING|o().Query.wildcard.TRAILING})))}];for(const o of n)o[o.length-1].maybeTyping=!0;const r=[];for(const i of a.BH)if("en"===i)a.sx||r.unshift(o().stopWordFilter);else{const e=o()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let s;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);s=[];const t=[];for(const r of n){const n=e(r);s.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else s=n.slice();const l=[];for(const o of s)if(o.length>2)for(let e=o.length-1;e>=0;e-=1)l.push(o.slice(0,e).concat(o.slice(e+1)));return i(n).concat(i(l))}(c,t),d=[];e:for(const{term:t,tokens:o}of u)for(const{documents:r,index:a,type:i}of e)if(d.push(...a.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!d.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-d.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:i!==l.i.Title&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:o,score:t.score}}))),d.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type!==l.i.Heading&&t.type!==l.i.Content&&t.type!==l.i.Description||!t.page?t.index:e.findIndex((e=>e.document===t.page)),o=n.type!==l.i.Heading&&n.type!==l.i.Content&&n.type!==l.i.Description||!n.page?n.index:e.findIndex((e=>e.document===n.page));if(-1===r&&(r=t.index),-1===o&&(o=n.index),r===o){const e=(0===n.type?1:0)-(0===t.type?1:0);return 0===e?t.index-n.index:e}return r-o}))}(d),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.slice(0,n).some((e=>(e.type===l.i.Keywords?e.page:e.document)===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(d),s(d)}}},4471:(e,t,n)=>{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{$:()=>r})},3103:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{Z:()=>r})},7674:(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.d(t,{g:()=>r})},6841:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(3103);function o(e,t,n){const a=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&a.push(o(e.substr(0,n),t)),a.push(`<mark>${(0,r.Z)(e.substr(n,i.length))}</mark>`);const s=n+i.length;s<e.length&&a.push(o(e.substr(s),t));break}}return 0===a.length?n?`<mark>${(0,r.Z)(e)}</mark>`:(0,r.Z)(e):a.join("")}},3810:(e,t,n)=>{"use strict";n.d(t,{C:()=>l});var r=n(3103),o=n(6841);const a=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const o=r.match(a);if(!o){t.push(r);break}o.index>0&&t.push(r.substring(0,o.index)),t.push(o[0]),n+=o.index+o[0].length,r=e.substring(n)}return t}var s=n(1088);function l(e,t,n,a){void 0===a&&(a=s.rG);const{chunkIndex:l,chunks:c}=function(e,t,n){const a=[];let s=0,l=0,c=-1;for(;s<t.length;){const[u,d]=t[s];if(s+=1,!(u<l)){if(u>l){const t=i(e.substring(l,u)).map((e=>({html:(0,r.Z)(e),textLength:e.length})));for(const e of t)a.push(e)}-1===c&&(c=a.length),l=u+d,a.push({html:(0,o.Z)(e.substring(u,l),n,!0),textLength:d})}}if(l<e.length){const t=i(e.substring(l)).map((e=>({html:(0,r.Z)(e),textLength:e.length})));for(const e of t)a.push(e)}return{chunkIndex:c,chunks:a}}(e,t,n),u=c.slice(0,l),d=c[l],p=[d.html],f=c.slice(l+1);let h=d.textLength,m=0,g=0,y=!1,b=!1;for(;h<a;)if((m<=g||0===f.length)&&u.length>0){const e=u.pop();h+e.textLength<=a?(p.unshift(e.html),m+=e.textLength,h+=e.textLength):(y=!0,u.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=a?(p.push(e.html),g+=e.textLength,h+=e.textLength):(b=!0,f.length=0)}}return(y||u.length>0)&&p.unshift("\u2026"),(b||f.length>0)&&p.push("\u2026"),p.join("")}},3385:(e,t,n)=>{"use strict";function r(e,t){if("string"==typeof e)return{label:e,path:e};{const{label:n,path:r}=e;return"string"==typeof n?{label:n,path:r}:Object.prototype.hasOwnProperty.call(n,t)?{label:n[t],path:r}:{label:r,path:r}}}n.d(t,{p:()=>r})},1088:(e,t,n)=>{"use strict";n.d(t,{CU:()=>a,UB:()=>f,tb:()=>c,O6:()=>g,I$:()=>h,BH:()=>r,sx:()=>o,ZG:()=>p,WW:()=>u,pk:()=>d,Hg:()=>m,IH:()=>i,rG:()=>l,AT:()=>s,dz:()=>y});n(8291);const r=["en"],o=!1,a=null,i="search-index{dir}.json?_=83817c57",s=8,l=50,c=!1,u=!0,d=!0,p="right",f=void 0,h=!0,m=null,g=!1,y=!1},9913:(e,t,n)=>{"use strict";var r;n.d(t,{i:()=>r}),function(e){e[e.Title=0]="Title",e[e.Heading=1]="Heading",e[e.Description=2]="Description",e[e.Keywords=3]="Keywords",e[e.Content=4]="Content"}(r||(r={}))},53:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},9231:(e,t,n)=>{"use strict";n.d(t,{zR:()=>S,TM:()=>L,yJ:()=>m,sC:()=>R,AO:()=>h,Fu:()=>g});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;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("/")||[],s=e&&o(e),l=t&&o(t),c=s||l;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const l=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=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(1561);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(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 f(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,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;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 v(e,t){t(window.confirm(e))}var w="popstate",k="hashchange";function x(){try{return window.history.state||{}}catch(e){return{}}}function S(e){void 0===e&&(e={}),b||(0,c.A)(!1);var t,n=window.history,o=(-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,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,s=i.forceRefresh,l=void 0!==s&&s,d=i.getUserConfirmation,g=void 0===d?v:d,S=i.keyLength,E=void 0===S?6:S,C=e.basename?f(u(e.basename)):"";function _(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return C&&(a=p(a,C)),m(a,r,n)}function A(){return Math.random().toString(36).substr(2,E)}var T=y();function L(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(_(e.state))}function R(){N(_(x()))}var j=!1;function N(e){if(j)j=!1,L();else{T.confirmTransitionTo(e,"POP",g,(function(t){t?L({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(j=!0,B(o))}(e)}))}}var O=_(x()),I=[O.key];function D(e){return C+h(e)}function B(e){n.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?(window.addEventListener(w,P),a&&window.addEventListener(k,R)):0===F&&(window.removeEventListener(w,P),a&&window.removeEventListener(k,R))}var z=!1;var $={length:n.length,action:"POP",location:O,createHref:D,push:function(e,t){var r="PUSH",a=m(e,t,A(),$.location);T.confirmTransitionTo(a,r,g,(function(e){if(e){var t=D(a),i=a.key,s=a.state;if(o)if(n.pushState({key:i,state:s},null,t),l)window.location.href=t;else{var c=I.indexOf($.location.key),u=I.slice(0,c+1);u.push(a.key),I=u,L({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,A(),$.location);T.confirmTransitionTo(a,r,g,(function(e){if(e){var t=D(a),i=a.key,s=a.state;if(o)if(n.replaceState({key:i,state:s},null,t),l)window.location.replace(t);else{var c=I.indexOf($.location.key);-1!==c&&(I[c]=a.key),L({action:r,location:a})}else window.location.replace(t)}}))},go:B,goBack:function(){B(-1)},goForward:function(){B(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=T.appendListener(e);return M(1),function(){M(-1),t()}}};return $}var E="hashchange",C={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:u},slash:{encodePath:u,decodePath:u}};function _(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function A(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function T(e){window.location.replace(_(window.location.href)+"#"+e)}function L(e){void 0===e&&(e={}),b||(0,c.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?v:o,i=n.hashType,s=void 0===i?"slash":i,l=e.basename?f(u(e.basename)):"",d=C[s],g=d.encodePath,w=d.decodePath;function k(){var e=w(A());return l&&(e=p(e,l)),m(e)}var x=y();function S(e){(0,r.A)(z,e),z.length=t.length,x.notifyListeners(z.location,z.action)}var L=!1,P=null;function R(){var e,t,n=A(),r=g(n);if(n!==r)T(r);else{var o=k(),i=z.location;if(!L&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===h(o))return;P=null,function(e){if(L)L=!1,S();else{var t="POP";x.confirmTransitionTo(e,t,a,(function(n){n?S({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(h(t));-1===n&&(n=0);var r=I.lastIndexOf(h(e));-1===r&&(r=0);var o=n-r;o&&(L=!0,D(o))}(e)}))}}(o)}}var j=A(),N=g(j);j!==N&&T(N);var O=k(),I=[h(O)];function D(e){t.go(e)}var B=0;function F(e){1===(B+=e)&&1===e?window.addEventListener(E,R):0===B&&window.removeEventListener(E,R)}var M=!1;var z={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=_(window.location.href)),n+"#"+g(l+h(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,z.location);x.confirmTransitionTo(r,n,a,(function(e){if(e){var t=h(r),o=g(l+t);if(A()!==o){P=t,function(e){window.location.hash=e}(o);var a=I.lastIndexOf(h(z.location)),i=I.slice(0,a+1);i.push(t),I=i,S({action:n,location:r})}else S()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,z.location);x.confirmTransitionTo(r,n,a,(function(e){if(e){var t=h(r),o=g(l+t);A()!==o&&(P=t,T(o));var a=I.indexOf(h(z.location));-1!==a&&(I[a]=t),S({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=x.setPrompt(e);return M||(F(1),M=!0),function(){return M&&(M=!1,F(-1)),t()}},listen:function(e){var t=x.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 R(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,s=void 0===i?0:i,l=t.keyLength,c=void 0===l?6:l,u=y();function d(e){(0,r.A)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var f=P(s,0,a.length-1),g=a.map((function(e){return m(e,void 0,"string"==typeof e?p():e.key||p())})),b=h;function v(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[f],index:f,entries:g,createHref:b,push:function(e,t){var r="PUSH",o=m(e,t,p(),w.location);u.confirmTransitionTo(o,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,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},4146:(e,t,n)=>{"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),m=l(n),g=0;g<i.length;++g){var y=i[g];if(!(a[y]||r&&r[y]||m&&m[y]||s&&s[y])){var b=p(n,y);try{c(t,y,b)}catch(v){}}}}return t}},311:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},8291:(e,t,n)=>{var r,o;!function(){var a,i,s,l,c,u,d,p,f,h,m,g,y,b,v,w,k,x,S,E,C,_,A,T,L,P,R,j,N,O,I=function(e){var t=new I.Builder;return t.pipeline.add(I.trimmer,I.stopWordFilter,I.stemmer),t.searchPipeline.add(I.stemmer),e.call(t,t),t.build()};I.version="2.3.9",I.utils={},I.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),I.utils.asString=function(e){return null==e?"":e.toString()},I.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 o=n[r],a=e[o];if(Array.isArray(a))t[o]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[o]=a}}return t},I.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},I.FieldRef.joiner="/",I.FieldRef.fromString=function(e){var t=e.indexOf(I.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new I.FieldRef(r,n,e)},I.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+I.FieldRef.joiner+this.docRef),this._stringValue},I.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},I.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},I.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},I.Set.prototype.contains=function(e){return!!this.elements[e]},I.Set.prototype.intersect=function(e){var t,n,r,o=[];if(e===I.Set.complete)return this;if(e===I.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var i=r[a];i in n.elements&&o.push(i)}return new I.Set(o)},I.Set.prototype.union=function(e){return e===I.Set.complete?I.Set.complete:e===I.Set.empty?this:new I.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},I.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var o=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(o))},I.Token=function(e,t){this.str=e||"",this.metadata=t||{}},I.Token.prototype.toString=function(){return this.str},I.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},I.Token.prototype.clone=function(e){return e=e||function(e){return e},new I.Token(e(this.str,this.metadata),this.metadata)},I.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new I.Token(I.utils.asString(e).toLowerCase(),I.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,o=[],a=0,i=0;a<=r;a++){var s=a-i;if(n.charAt(a).match(I.tokenizer.separator)||a==r){if(s>0){var l=I.utils.clone(t)||{};l.position=[i,s],l.index=o.length,o.push(new I.Token(n.slice(i,a),l))}i=a+1}}return o},I.tokenizer.separator=/[\s\-]+/,I.Pipeline=function(){this._stack=[]},I.Pipeline.registeredFunctions=Object.create(null),I.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&I.utils.warn("Overwriting existing registered function: "+t),e.label=t,I.Pipeline.registeredFunctions[e.label]=e},I.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||I.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},I.Pipeline.load=function(e){var t=new I.Pipeline;return e.forEach((function(e){var n=I.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},I.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){I.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},I.Pipeline.prototype.after=function(e,t){I.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)},I.Pipeline.prototype.before=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},I.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},I.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],o=[],a=0;a<e.length;a++){var i=r(e[a],a,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var s=0;s<i.length;s++)o.push(i[s]);else o.push(i)}e=o}return e},I.Pipeline.prototype.runString=function(e,t){var n=new I.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},I.Pipeline.prototype.reset=function(){this._stack=[]},I.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return I.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},I.Vector=function(e){this._magnitude=0,this.elements=e||[]},I.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,o=Math.floor(r/2),a=this.elements[2*o];r>1&&(a<e&&(t=o),a>e&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:a<e?2*(o+1):void 0},I.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},I.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)},I.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)},I.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,o=n.length,a=r.length,i=0,s=0,l=0,c=0;l<o&&c<a;)(i=n[l])<(s=r[c])?l+=2:i>s?c+=2:i==s&&(t+=n[l+1]*r[c+1],l+=2,c+=2);return t},I.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},I.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},I.Vector.prototype.toJSON=function(){return this.elements},I.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"},s={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(c="[^aeiou][^aeiouy]*")+")?"+(u=(l="[aeiouy]")+"[aeiou]*")+c+"("+u+")?$",p="^("+c+")?"+u+c+u+c,f="^("+c+")?"+l,h=new RegExp("^("+c+")?"+u+c),m=new RegExp(p),g=new RegExp(d),y=new RegExp(f),b=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,k=/^(.+?)(ed|ing)$/,x=/.$/,S=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),C=new RegExp("^"+c+l+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,A=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,T=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,R=/^(.+?)e$/,j=/ll$/,N=new RegExp("^"+c+l+"[^aeiouwxy]$"),O=function(e){var t,n,r,o,a,l,c;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=v,(o=b).test(e)?e=e.replace(o,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=k,(o=w).test(e)){var u=o.exec(e);(o=h).test(u[1])&&(o=x,e=e.replace(o,""))}else a.test(e)&&(t=(u=a.exec(e))[1],(a=y).test(t)&&(l=E,c=C,(a=S).test(e=t)?e+="e":l.test(e)?(o=x,e=e.replace(o,"")):c.test(e)&&(e+="e")));return(o=_).test(e)&&(e=(t=(u=o.exec(e))[1])+"i"),(o=A).test(e)&&(t=(u=o.exec(e))[1],n=u[2],(o=h).test(t)&&(e=t+i[n])),(o=T).test(e)&&(t=(u=o.exec(e))[1],n=u[2],(o=h).test(t)&&(e=t+s[n])),a=P,(o=L).test(e)?(t=(u=o.exec(e))[1],(o=m).test(t)&&(e=t)):a.test(e)&&(t=(u=a.exec(e))[1]+u[2],(a=m).test(t)&&(e=t)),(o=R).test(e)&&(t=(u=o.exec(e))[1],a=g,l=N,((o=m).test(t)||a.test(t)&&!l.test(t))&&(e=t)),a=m,(o=j).test(e)&&a.test(e)&&(o=x,e=e.replace(o,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(O)}),I.Pipeline.registerFunction(I.stemmer,"stemmer"),I.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}},I.stopWordFilter=I.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"]),I.Pipeline.registerFunction(I.stopWordFilter,"stopWordFilter"),I.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},I.Pipeline.registerFunction(I.trimmer,"trimmer"),I.TokenSet=function(){this.final=!1,this.edges={},this.id=I.TokenSet._nextId,I.TokenSet._nextId+=1},I.TokenSet._nextId=1,I.TokenSet.fromArray=function(e){for(var t=new I.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},I.TokenSet.fromClause=function(e){return"editDistance"in e?I.TokenSet.fromFuzzyString(e.term,e.editDistance):I.TokenSet.fromString(e.term)},I.TokenSet.fromFuzzyString=function(e,t){for(var n=new I.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var o=r.pop();if(o.str.length>0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new I.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new I.TokenSet;o.node.edges["*"]=s}if(0==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new I.TokenSet;o.node.edges["*"]=l}1==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var c,u=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?c=o.node.edges[d]:(c=new I.TokenSet,o.node.edges[d]=c),1==o.str.length&&(c.final=!0),r.push({node:c,editsRemaining:o.editsRemaining-1,str:u+o.str.slice(2)})}}}return n},I.TokenSet.fromString=function(e){for(var t=new I.TokenSet,n=t,r=0,o=e.length;r<o;r++){var a=e[r],i=r==o-1;if("*"==a)t.edges[a]=t,t.final=i;else{var s=new I.TokenSet;s.final=i,t.edges[a]=s,t=s}}return n},I.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),o=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<o;a++){var i=r[a];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},I.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 o=t[r];e=e+o+this.edges[o].id}return e},I.TokenSet.prototype.intersect=function(e){for(var t=new I.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var o=Object.keys(n.qNode.edges),a=o.length,i=Object.keys(n.node.edges),s=i.length,l=0;l<a;l++)for(var c=o[l],u=0;u<s;u++){var d=i[u];if(d==c||"*"==c){var p=n.node.edges[d],f=n.qNode.edges[c],h=p.final&&f.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new I.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:f,output:m,node:p})}}}return t},I.TokenSet.Builder=function(){this.previousWord="",this.root=new I.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},I.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 o=new I.TokenSet,a=e[r];t.edges[a]=o,this.uncheckedNodes.push({parent:t,char:a,child:o}),t=o}t.final=!0,this.previousWord=e},I.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},I.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()}},I.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},I.Index.prototype.search=function(e){return this.query((function(t){new I.QueryParser(e,t).parse()}))},I.Index.prototype.query=function(e){for(var t=new I.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),s=0;s<this.fields.length;s++)r[this.fields[s]]=new I.Vector;e.call(t,t);for(s=0;s<t.clauses.length;s++){var l=t.clauses[s],c=null,u=I.Set.empty;c=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<c.length;d++){var p=c[d];l.term=p;var f=I.TokenSet.fromClause(l),h=this.tokenSet.intersect(f).toArray();if(0===h.length&&l.presence===I.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){a[R=l.fields[m]]=I.Set.empty}break}for(var g=0;g<h.length;g++){var y=h[g],b=this.invertedIndex[y],v=b._index;for(m=0;m<l.fields.length;m++){var w=b[R=l.fields[m]],k=Object.keys(w),x=y+"/"+R,S=new I.Set(k);if(l.presence==I.Query.presence.REQUIRED&&(u=u.union(S),void 0===a[R]&&(a[R]=I.Set.complete)),l.presence!=I.Query.presence.PROHIBITED){if(r[R].upsert(v,l.boost,(function(e,t){return e+t})),!o[x]){for(var E=0;E<k.length;E++){var C,_=k[E],A=new I.FieldRef(_,R),T=w[_];void 0===(C=n[A])?n[A]=new I.MatchData(y,R,T):C.add(y,R,T)}o[x]=!0}}else void 0===i[R]&&(i[R]=I.Set.empty),i[R]=i[R].union(S)}}}if(l.presence===I.Query.presence.REQUIRED)for(m=0;m<l.fields.length;m++){a[R=l.fields[m]]=a[R].intersect(u)}}var L=I.Set.complete,P=I.Set.empty;for(s=0;s<this.fields.length;s++){var R;a[R=this.fields[s]]&&(L=L.intersect(a[R])),i[R]&&(P=P.union(i[R]))}var j=Object.keys(n),N=[],O=Object.create(null);if(t.isNegated()){j=Object.keys(this.fieldVectors);for(s=0;s<j.length;s++){A=j[s];var D=I.FieldRef.fromString(A);n[A]=new I.MatchData}}for(s=0;s<j.length;s++){var B=(D=I.FieldRef.fromString(j[s])).docRef;if(L.contains(B)&&!P.contains(B)){var F,M=this.fieldVectors[D],z=r[D.fieldName].similarity(M);if(void 0!==(F=O[B]))F.score+=z,F.matchData.combine(n[D]);else{var $={ref:B,score:z,matchData:n[D]};O[B]=$,N.push($)}}}return N.sort((function(e,t){return t.score-e.score}))},I.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:I.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},I.Index.load=function(e){var t={},n={},r=e.fieldVectors,o=Object.create(null),a=e.invertedIndex,i=new I.TokenSet.Builder,s=I.Pipeline.load(e.pipeline);e.version!=I.version&&I.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+I.version+"' does not match serialized index '"+e.version+"'");for(var l=0;l<r.length;l++){var c=(d=r[l])[0],u=d[1];n[c]=new I.Vector(u)}for(l=0;l<a.length;l++){var d,p=(d=a[l])[0],f=d[1];i.insert(p),o[p]=f}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=o,t.tokenSet=i.root,t.pipeline=s,new I.Index(t)},I.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=I.tokenizer,this.pipeline=new I.Pipeline,this.searchPipeline=new I.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},I.Builder.prototype.ref=function(e){this._ref=e},I.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},I.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},I.Builder.prototype.k1=function(e){this._k1=e},I.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 o=0;o<r.length;o++){var a=r[o],i=this._fields[a].extractor,s=i?i(e):e[a],l=this.tokenizer(s,{fields:[a]}),c=this.pipeline.run(l),u=new I.FieldRef(n,a),d=Object.create(null);this.fieldTermFrequencies[u]=d,this.fieldLengths[u]=0,this.fieldLengths[u]+=c.length;for(var p=0;p<c.length;p++){var f=c[p];if(null==d[f]&&(d[f]=0),d[f]+=1,null==this.invertedIndex[f]){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[f]=h}null==this.invertedIndex[f][a][n]&&(this.invertedIndex[f][a][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var y=this.metadataWhitelist[g],b=f.metadata[y];null==this.invertedIndex[f][a][n][y]&&(this.invertedIndex[f][a][n][y]=[]),this.invertedIndex[f][a][n][y].push(b)}}}},I.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},o=0;o<t;o++){var a=I.FieldRef.fromString(e[o]),i=a.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[a]}var s=Object.keys(this._fields);for(o=0;o<s.length;o++){var l=s[o];n[l]=n[l]/r[l]}this.averageFieldLength=n},I.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),o=0;o<n;o++){for(var a=I.FieldRef.fromString(t[o]),i=a.fieldName,s=this.fieldLengths[a],l=new I.Vector,c=this.fieldTermFrequencies[a],u=Object.keys(c),d=u.length,p=this._fields[i].boost||1,f=this._documents[a.docRef].boost||1,h=0;h<d;h++){var m,g,y,b=u[h],v=c[b],w=this.invertedIndex[b]._index;void 0===r[b]?(m=I.idf(this.invertedIndex[b],this.documentCount),r[b]=m):m=r[b],g=m*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(s/this.averageFieldLength[i]))+v),g*=p,g*=f,y=Math.round(1e3*g)/1e3,l.insert(w,y)}e[a]=l}this.fieldVectors=e},I.Builder.prototype.createTokenSet=function(){this.tokenSet=I.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},I.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new I.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},I.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},I.MatchData=function(e,t,n){for(var r=Object.create(null),o=Object.keys(n||{}),a=0;a<o.length;a++){var i=o[a];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},I.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],o=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<o.length;a++){var i=o[a],s=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var l=0;l<s.length;l++){var c=s[l];null==this.metadata[r][i][c]?this.metadata[r][i][c]=e.metadata[r][i][c]:this.metadata[r][i][c]=this.metadata[r][i][c].concat(e.metadata[r][i][c])}}}},I.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),o=0;o<r.length;o++){var a=r[o];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},I.Query=function(e){this.clauses=[],this.allFields=e},I.Query.wildcard=new String("*"),I.Query.wildcard.NONE=0,I.Query.wildcard.LEADING=1,I.Query.wildcard.TRAILING=2,I.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},I.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=I.Query.wildcard.NONE),e.wildcard&I.Query.wildcard.LEADING&&e.term.charAt(0)!=I.Query.wildcard&&(e.term="*"+e.term),e.wildcard&I.Query.wildcard.TRAILING&&e.term.slice(-1)!=I.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=I.Query.presence.OPTIONAL),this.clauses.push(e),this},I.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=I.Query.presence.PROHIBITED)return!1;return!0},I.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,I.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},I.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},I.QueryParseError.prototype=new Error,I.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},I.QueryLexer.prototype.run=function(){for(var e=I.QueryLexer.lexText;e;)e=e(this)},I.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("")},I.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},I.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},I.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return I.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},I.QueryLexer.prototype.width=function(){return this.pos-this.start},I.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},I.QueryLexer.prototype.backup=function(){this.pos-=1},I.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=I.QueryLexer.EOS&&this.backup()},I.QueryLexer.prototype.more=function(){return this.pos<this.length},I.QueryLexer.EOS="EOS",I.QueryLexer.FIELD="FIELD",I.QueryLexer.TERM="TERM",I.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",I.QueryLexer.BOOST="BOOST",I.QueryLexer.PRESENCE="PRESENCE",I.QueryLexer.lexField=function(e){return e.backup(),e.emit(I.QueryLexer.FIELD),e.ignore(),I.QueryLexer.lexText},I.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(I.QueryLexer.TERM)),e.ignore(),e.more())return I.QueryLexer.lexText},I.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.EDIT_DISTANCE),I.QueryLexer.lexText},I.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.BOOST),I.QueryLexer.lexText},I.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(I.QueryLexer.TERM)},I.QueryLexer.termSeparator=I.tokenizer.separator,I.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==I.QueryLexer.EOS)return I.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return I.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if(t.match(I.QueryLexer.termSeparator))return I.QueryLexer.lexTerm}else e.escapeCharacter()}},I.QueryParser=function(e,t){this.lexer=new I.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},I.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=I.QueryParser.parseClause;e;)e=e(this);return this.query},I.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},I.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},I.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},I.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case I.QueryLexer.PRESENCE:return I.QueryParser.parsePresence;case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.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 I.QueryParseError(n,t.start,t.end)}},I.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=I.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=I.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new I.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new I.QueryParseError(n,t.start,t.end)}switch(r.type){case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new I.QueryParseError(n,r.start,r.end)}}},I.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 I.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new I.QueryParseError(r,t.start,t.end)}if(o.type===I.QueryLexer.TERM)return I.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}},I.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 I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new I.QueryParseError(r,n.start,n.end)}else e.nextClause()}},I.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 I.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},I.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 I.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return I})?r.call(t,n,t,e):r)||(e.exports=o)}()},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},5302:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,s="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var h=e[i],m=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=m&&null!=h&&h!==m,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||u,C=y||b;r.push({name:g||a++,prefix:m||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:C?c(C):w?".*":"[^"+l(E)+"]+?"})}}return i<e.length&&(s+=e.substr(i)),s&&r.push(s),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",s=t||{},l=(o||{}).pretty?i:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=s[u.name];if(null==p){if(u.optional){u.partial&&(a+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');a+=u.prefix+d}}else a+=u}return a}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",s=0;s<e.length;s++){var c=e[s];if("string"==typeof c)i+=l(c);else{var p=l(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var h=l(n.delimiter||"/"),m=i.slice(-h.length)===h;return o||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=a?"$":o&&m?"":"(?="+h+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(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 u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(f(e[o],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(a(e,n),t,n)}(e,t,n)}},6969: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"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l<s.length&&!(o>=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++o;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof c?s.splice.apply(s,[l,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8692},3157:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),h=u;o(h);){for(var m in p={},h){var g=l[m];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in u))for(var b in f(y))if(b in u){p[y]=!0;break}for(var v in h=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=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 s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<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 i=new Set,s={};function l(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[: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]*$/,f={},h={};function m(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new m(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){g[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var o=g.hasOwnProperty(t)?g[t]:null;(null!==o?0!==o.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,o,r)&&(n=null),r||null===o?function(e){return!!d.call(h,e)||!d.call(f,e)&&(p.test(e)?h[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!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(y,b);g[t]=new m(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(y,b);g[t]=new m(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(y,b);g[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),_=Symbol.for("react.provider"),A=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),R=Symbol.for("react.memo"),j=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var N=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function I(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var D,B=Object.assign;function F(e){if(void 0===D)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);D=t&&t[1]||""}return"\n"+D+e}var M=!1;function z(e,t){if(!e||M)return"";M=!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(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"==typeof c.stack){for(var o=c.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,s=a.length-1;1<=i&&0<=s&&o[i]!==a[s];)s--;for(;1<=i&&0<=s;i--,s--)if(o[i]!==a[s]){if(1!==i||1!==s)do{if(i--,0>--s||o[i]!==a[s]){var l="\n"+o[i].replace(" at new "," at ");return e.displayName&&l.includes("<anonymous>")&&(l=l.replace("<anonymous>",e.displayName)),l}}while(1<=i&&0<=s);break}}}finally{M=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=z(e.type,!1);case 11:return e=z(e.type.render,!1);case 1:return e=z(e.type,!0);default:return""}}function U(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 S:return"Fragment";case x:return"Portal";case C:return"Profiler";case E:return"StrictMode";case L:return"Suspense";case P:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case R:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case j:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function Q(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function V(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function H(e){e._valueTracker||(e._valueTracker=function(e){var t=V(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 o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.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 W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=V(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function G(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 K(e,t){var n=t.checked;return B({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Q(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 Z(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Z(e,t);var n=Q(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")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,Q(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(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 ee(e,t,n){"number"===t&&G(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Q(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return B({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Q(n)}}function ae(e,t){var n=Q(t.value),r=Q(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 ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function se(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 le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?se(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,de=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.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 ue(e,t)}))}:ue);function pe(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 fe={animationIterationCount:!0,aspectRatio:!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},he=["Webkit","ms","Moz","O"];function me(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=me(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(fe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=B({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 be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function ve(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}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function Ce(e){if(e=wo(e)){if("function"!=typeof xe)throw Error(a(280));var t=e.stateNode;t&&(t=xo(t),xe(e.stateNode,e.type,t))}}function _e(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Ae(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Te(e,t){return e(t)}function Le(){}var Pe=!1;function Re(e,t,n){if(Pe)return e(t,n);Pe=!0;try{return Te(e,t,n)}finally{Pe=!1,(null!==Se||null!==Ee)&&(Le(),Ae())}}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=xo(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(a(231,t,typeof n));return n}var Ne=!1;if(u)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Ne=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ue){Ne=!1}function Ie(e,t,n,r,o,a,i,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var De=!1,Be=null,Fe=!1,Me=null,ze={onError:function(e){De=!0,Be=e}};function $e(e,t,n,r,o,a,i,s,l){De=!1,Be=null,Ie.apply(ze,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(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 Qe(e){if(Ue(e)!==e)throw Error(a(188))}function Ve(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return Qe(o),e;if(i===r)return Qe(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?He(e):null}function He(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=He(e);if(null!==t)return t;e=e.sibling}return null}var We=o.unstable_scheduleCallback,Ge=o.unstable_cancelCallback,Ke=o.unstable_shouldYield,Ye=o.unstable_requestPaint,Ze=o.unstable_now,Xe=o.unstable_getCurrentPriorityLevel,Je=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(st(e)/lt|0)|0},st=Math.log,lt=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var s=i&~o;0!==s?r=dt(s):0!==(a&=i)&&(r=dt(a))}else 0!==(i=n&~o)?r=dt(i):0!==a&&(r=dt(a));if(0===r)return 0;if(0!==t&&t!==r&&!(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&4194240&a))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-it(t)),r|=e[n],t&=~o;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function mt(){var e=ct;return!(4194240&(ct<<=1))&&(ct=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var kt,xt,St,Et,Ct,_t=!1,At=[],Tt=null,Lt=null,Pt=null,Rt=new Map,jt=new Map,Nt=[],Ot="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 It(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":Lt=null;break;case"mouseover":case"mouseout":Pt=null;break;case"pointerover":case"pointerout":Rt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":jt.delete(t.pointerId)}}function Dt(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&(null!==(t=wo(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Bt(e){var t=vo(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void Ct(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(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=wo(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function Mt(e,t,n){Ft(e)&&n.delete(t)}function zt(){_t=!1,null!==Tt&&Ft(Tt)&&(Tt=null),null!==Lt&&Ft(Lt)&&(Lt=null),null!==Pt&&Ft(Pt)&&(Pt=null),Rt.forEach(Mt),jt.forEach(Mt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,_t||(_t=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,zt)))}function Ut(e){function t(t){return $t(t,e)}if(0<At.length){$t(At[0],e);for(var n=1;n<At.length;n++){var r=At[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Tt&&$t(Tt,e),null!==Lt&&$t(Lt,e),null!==Pt&&$t(Pt,e),Rt.forEach(t),jt.forEach(t),n=0;n<Nt.length;n++)(r=Nt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Nt.length&&null===(n=Nt[0]).blockedOn;)Bt(n),null===n.blockedOn&&Nt.shift()}var qt=w.ReactCurrentBatchConfig,Qt=!0;function Vt(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=1,Wt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Ht(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=4,Wt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Wt(e,t,n,r){if(Qt){var o=Kt(e,t,n,r);if(null===o)Qr(e,t,r,Gt,n),It(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return Tt=Dt(Tt,e,t,n,r,o),!0;case"dragenter":return Lt=Dt(Lt,e,t,n,r,o),!0;case"mouseover":return Pt=Dt(Pt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return Rt.set(a,Dt(Rt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,jt.set(a,Dt(jt.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(It(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&&kt(a),null===(a=Kt(e,t,n,r))&&Qr(e,t,r,Gt,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Qr(e,t,r,null,n)}}var Gt=null;function Kt(e,t,n,r){if(Gt=null,null!==(e=vo(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Gt=e,null}function Yt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Zt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,o="value"in Zt?Zt.value:Zt.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return Jt=o.slice(e,1<t?1-t:void 0)}function tn(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 nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return B(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=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,sn,ln,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=on(cn),dn=B({},cn,{view:0,detail:0}),pn=on(dn),fn=B({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,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!==ln&&(ln&&"mousemove"===e.type?(an=e.screenX-ln.screenX,sn=e.screenY-ln.screenY):sn=an=0,ln=e),an)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),hn=on(fn),mn=on(B({},fn,{dataTransfer:0})),gn=on(B({},dn,{relatedTarget:0})),yn=on(B({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=B({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=on(bn),wn=on(B({},cn,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={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 En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Cn(){return En}var _n=B({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),An=on(_n),Tn=on(B({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=on(B({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Pn=on(B({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=B({},fn,{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}),jn=on(Rn),Nn=[9,13,27,32],On=u&&"CompositionEvent"in window,In=null;u&&"documentMode"in document&&(In=document.documentMode);var Dn=u&&"TextEvent"in window&&!In,Bn=u&&(!On||In&&8<In&&11>=In),Fn=String.fromCharCode(32),Mn=!1;function zn(e,t){switch(e){case"keyup":return-1!==Nn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!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 Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Vn(e,t,n,r){_e(r),0<(t=Hr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Hn=null,Wn=null;function Gn(e){Fr(e,0)}function Kn(e){if(W(ko(e)))return e}function Yn(e,t){if("change"===e)return t}var Zn=!1;if(u){var Xn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Hn&&(Hn.detachEvent("onpropertychange",nr),Wn=Hn=null)}function nr(e){if("value"===e.propertyName&&Kn(Wn)){var t=[];Vn(t,Wn,e,ke(e)),Re(Gn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Wn=n,(Hn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Wn)}function ar(e,t){if("click"===e)return Kn(t)}function ir(e,t){if("input"===e||"change"===e)return Kn(t)}var sr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function lr(e,t){if(sr(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++){var o=n[r];if(!d.call(t,o)||!sr(e[o],t[o]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(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=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=G();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=G((e=t.contentWindow).document)}return t}function fr(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)}function hr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=ur(n,a);var i=ur(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var mr=u&&"documentMode"in document&&11>=document.documentMode,gr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==gr||gr!==G(r)||("selectionStart"in(r=gr)&&fr(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},br&&lr(br,r)||(br=r,0<(r=Hr(yr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function Cr(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}u&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var _r=Cr("animationend"),Ar=Cr("animationiteration"),Tr=Cr("animationstart"),Lr=Cr("transitionend"),Pr=new Map,Rr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function jr(e,t){Pr.set(e,t),l(t,[e])}for(var Nr=0;Nr<Rr.length;Nr++){var Or=Rr[Nr];jr(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}jr(_r,"onAnimationEnd"),jr(Ar,"onAnimationIteration"),jr(Tr,"onAnimationStart"),jr("dblclick","onDoubleClick"),jr("focusin","onFocus"),jr("focusout","onBlur"),jr(Lr,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ir="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ir));function Br(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,s,l,c){if($e.apply(this,arguments),De){if(!De)throw Error(a(198));var u=Be;De=!1,Be=null,Fe||(Fe=!0,Me=u)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var s=r[i],l=s.instance,c=s.currentTarget;if(s=s.listener,l!==a&&o.isPropagationStopped())break e;Br(o,s,c),a=l}else for(i=0;i<r.length;i++){if(l=(s=r[i]).instance,c=s.currentTarget,s=s.listener,l!==a&&o.isPropagationStopped())break e;Br(o,s,c),a=l}}}if(Fe)throw e=Me,Fe=!1,Me=null,e}function Mr(e,t){var n=t[go];void 0===n&&(n=t[go]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function zr(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||zr(t,!1,e),zr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,zr("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Yt(t)){case 1:var o=Vt;break;case 4:o=Ht;break;default:o=Wt}n=o.bind(null,t,n,e),o=void 0,!Ne||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Qr(e,t,n,r,o){var a=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var s=r.stateNode.containerInfo;if(s===o||8===s.nodeType&&s.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var l=i.tag;if((3===l||4===l)&&((l=i.stateNode.containerInfo)===o||8===l.nodeType&&l.parentNode===o))return;i=i.return}for(;null!==s;){if(null===(i=vo(s)))return;if(5===(l=i.tag)||6===l){r=a=i;continue e}s=s.parentNode}}r=r.return}Re((function(){var r=a,o=ke(n),i=[];e:{var s=Pr.get(e);if(void 0!==s){var l=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":l=An;break;case"focusin":c="focus",l=gn;break;case"focusout":c="blur",l=gn;break;case"beforeblur":case"afterblur":l=gn;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":l=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=mn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=Ln;break;case _r:case Ar:case Tr:l=yn;break;case Lr:l=Pn;break;case"scroll":l=pn;break;case"wheel":l=jn;break;case"copy":case"cut":case"paste":l=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=Tn}var u=!!(4&t),d=!u&&"scroll"===e,p=u?null!==s?s+"Capture":null:s;u=[];for(var f,h=r;null!==h;){var m=(f=h).stateNode;if(5===f.tag&&null!==m&&(f=m,null!==p&&(null!=(m=je(h,p))&&u.push(Vr(h,m,f)))),d)break;h=h.return}0<u.length&&(s=new l(s,c,null,n,o),i.push({event:s,listeners:u}))}}if(!(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||n===we||!(c=n.relatedTarget||n.fromElement)||!vo(c)&&!c[mo])&&(l||s)&&(s=o.window===o?o:(s=o.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(c=(c=n.relatedTarget||n.toElement)?vo(c):null)&&(c!==(d=Ue(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(l=null,c=r),l!==c)){if(u=hn,m="onMouseLeave",p="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(u=Tn,m="onPointerLeave",p="onPointerEnter",h="pointer"),d=null==l?s:ko(l),f=null==c?s:ko(c),(s=new u(m,h+"leave",l,n,o)).target=d,s.relatedTarget=f,m=null,vo(o)===r&&((u=new u(p,h+"enter",c,n,o)).target=f,u.relatedTarget=d,m=u),d=m,l&&c)e:{for(p=c,h=0,f=u=l;f;f=Wr(f))h++;for(f=0,m=p;m;m=Wr(m))f++;for(;0<h-f;)u=Wr(u),h--;for(;0<f-h;)p=Wr(p),f--;for(;h--;){if(u===p||null!==p&&u===p.alternate)break e;u=Wr(u),p=Wr(p)}u=null}else u=null;null!==l&&Gr(i,s,l,u,!1),null!==c&&null!==d&&Gr(i,d,c,u,!0)}if("select"===(l=(s=r?ko(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var g=Yn;else if(Qn(s))if(Zn)g=ir;else{g=or;var y=rr}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(g=ar);switch(g&&(g=g(e,r))?Vn(i,g,n,o):(y&&y(e,s,r),"focusout"===e&&(y=s._wrapperState)&&y.controlled&&"number"===s.type&&ee(s,"number",s.value)),y=r?ko(r):window,e){case"focusin":(Qn(y)||"true"===y.contentEditable)&&(gr=y,yr=r,br=null);break;case"focusout":br=yr=gr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,o);break;case"selectionchange":if(mr)break;case"keydown":case"keyup":wr(i,n,o)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?zn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Bn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Zt=o)?Zt.value:Zt.textContent,Un=!0)),0<(y=Hr(r,v)).length&&(v=new wn(v,e,null,n,o),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(Mn=!0,Fn);case"textInput":return(e=t.data)===Fn&&Mn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&zn(e,t)?(e=en(),Jt=Xt=Zt=null,Un=!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=Hr(r,"onBeforeInput")).length&&(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Fr(i,t)}))}function Vr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Hr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=je(e,n))&&r.unshift(Vr(e,a,o)),null!=(a=je(e,t))&&r.push(Vr(e,a,o))),e=e.return}return r}function Wr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Gr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var s=n,l=s.alternate,c=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==c&&(s=c,o?null!=(l=je(n,a))&&i.unshift(Vr(n,l,s)):o||null!=(l=je(n,a))&&i.push(Vr(n,l,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Kr=/\r\n?/g,Yr=/\u0000|\uFFFD/g;function Zr(e){return("string"==typeof e?e:""+e).replace(Kr,"\n").replace(Yr,"")}function Xr(e,t,n){if(t=Zr(t),Zr(e)!==t&&n)throw Error(a(425))}function Jr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(so)}:ro;function so(e){setTimeout((function(){throw e}))}function lo(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);Ut(t)}function co(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function uo(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 po=Math.random().toString(36).slice(2),fo="__reactFiber$"+po,ho="__reactProps$"+po,mo="__reactContainer$"+po,go="__reactEvents$"+po,yo="__reactListeners$"+po,bo="__reactHandles$"+po;function vo(e){var t=e[fo];if(t)return t;for(var n=e.parentNode;n;){if(t=n[mo]||n[fo]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=uo(e);null!==e;){if(n=e[fo])return n;e=uo(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[fo]||e[mo])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ko(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function xo(e){return e[ho]||null}var So=[],Eo=-1;function Co(e){return{current:e}}function _o(e){0>Eo||(e.current=So[Eo],So[Eo]=null,Eo--)}function Ao(e,t){Eo++,So[Eo]=e.current,e.current=t}var To={},Lo=Co(To),Po=Co(!1),Ro=To;function jo(e,t){var n=e.type.contextTypes;if(!n)return To;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function No(e){return null!=(e=e.childContextTypes)}function Oo(){_o(Po),_o(Lo)}function Io(e,t,n){if(Lo.current!==To)throw Error(a(168));Ao(Lo,t),Ao(Po,n)}function Do(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,q(e)||"Unknown",o));return B({},n,r)}function Bo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||To,Ro=Lo.current,Ao(Lo,e),Ao(Po,Po.current),!0}function Fo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Do(e,t,Ro),r.__reactInternalMemoizedMergedChildContext=e,_o(Po),_o(Lo),Ao(Lo,e)):_o(Po),Ao(Po,n)}var Mo=null,zo=!1,$o=!1;function Uo(e){null===Mo?Mo=[e]:Mo.push(e)}function qo(){if(!$o&&null!==Mo){$o=!0;var e=0,t=vt;try{var n=Mo;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Mo=null,zo=!1}catch(o){throw null!==Mo&&(Mo=Mo.slice(e+1)),We(Je,qo),o}finally{vt=t,$o=!1}}return null}var Qo=[],Vo=0,Ho=null,Wo=0,Go=[],Ko=0,Yo=null,Zo=1,Xo="";function Jo(e,t){Qo[Vo++]=Wo,Qo[Vo++]=Ho,Ho=e,Wo=t}function ea(e,t,n){Go[Ko++]=Zo,Go[Ko++]=Xo,Go[Ko++]=Yo,Yo=e;var r=Zo;e=Xo;var o=32-it(r)-1;r&=~(1<<o),n+=1;var a=32-it(t)+o;if(30<a){var i=o-o%5;a=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Zo=1<<32-it(t)+o|n<<o|r,Xo=a+e}else Zo=1<<a|n<<o|r,Xo=e}function ta(e){null!==e.return&&(Jo(e,1),ea(e,1,0))}function na(e){for(;e===Ho;)Ho=Qo[--Vo],Qo[Vo]=null,Wo=Qo[--Vo],Qo[Vo]=null;for(;e===Yo;)Yo=Go[--Ko],Go[Ko]=null,Xo=Go[--Ko],Go[Ko]=null,Zo=Go[--Ko],Go[Ko]=null}var ra=null,oa=null,aa=!1,ia=null;function sa(e,t){var n=Rc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function la(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,ra=e,oa=co(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Yo?{id:Zo,overflow:Xo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Rc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function ca(e){return!(!(1&e.mode)||128&e.flags)}function ua(e){if(aa){var t=oa;if(t){var n=t;if(!la(e,t)){if(ca(e))throw Error(a(418));t=co(n.nextSibling);var r=ra;t&&la(e,t)?sa(r,n):(e.flags=-4097&e.flags|2,aa=!1,ra=e)}}else{if(ca(e))throw Error(a(418));e.flags=-4097&e.flags|2,aa=!1,ra=e}}}function da(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ra=e}function pa(e){if(e!==ra)return!1;if(!aa)return da(e),aa=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oa)){if(ca(e))throw fa(),Error(a(418));for(;t;)sa(e,t),t=co(t.nextSibling)}if(da(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=co(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?co(e.stateNode.nextSibling):null;return!0}function fa(){for(var e=oa;e;)e=co(e.nextSibling)}function ha(){oa=ra=null,aa=!1}function ma(e){null===ia?ia=[e]:ia.push(e)}var ga=w.ReactCurrentBatchConfig;function ya(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(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function ba(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function va(e){return(0,e._init)(e._payload)}function wa(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}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 o(e,t){return(e=Nc(e,t)).index=0,e.sibling=null,e}function i(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):(t.flags|=1048576,n)}function s(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Bc(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function c(e,t,n,r){var a=n.type;return a===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===j&&va(a)===t.type)?((r=o(t,n.props)).ref=ya(e,t,n),r.return=e,r):((r=Oc(n.type,n.key,n.props,null,e.mode,r)).ref=ya(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fc(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Ic(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Bc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Oc(t.type,t.key,t.props,null,e.mode,n)).ref=ya(e,null,t),n.return=e,n;case x:return(t=Fc(t,e.mode,n)).return=e,t;case j:return p(e,(0,t._init)(t._payload),n)}if(te(t)||I(t))return(t=Ic(t,e.mode,n,null)).return=e,t;ba(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===o?c(e,t,n,r):null;case x:return n.key===o?u(e,t,n,r):null;case j:return f(e,t,(o=n._init)(n._payload),r)}if(te(n)||I(n))return null!==o?null:d(e,t,n,r,null);ba(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case x:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case j:return h(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||I(r))return d(t,e=e.get(n)||null,r,o,null);ba(t,r)}return null}function m(o,a,s,l){for(var c=null,u=null,d=a,m=a=0,g=null;null!==d&&m<s.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var y=f(o,d,s[m],l);if(null===y){null===d&&(d=g);break}e&&d&&null===y.alternate&&t(o,d),a=i(y,a,m),null===u?c=y:u.sibling=y,u=y,d=g}if(m===s.length)return n(o,d),aa&&Jo(o,m),c;if(null===d){for(;m<s.length;m++)null!==(d=p(o,s[m],l))&&(a=i(d,a,m),null===u?c=d:u.sibling=d,u=d);return aa&&Jo(o,m),c}for(d=r(o,d);m<s.length;m++)null!==(g=h(d,o,m,s[m],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),a=i(g,a,m),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(o,e)})),aa&&Jo(o,m),c}function g(o,s,l,c){var u=I(l);if("function"!=typeof u)throw Error(a(150));if(null==(l=u.call(l)))throw Error(a(151));for(var d=u=null,m=s,g=s=0,y=null,b=l.next();null!==m&&!b.done;g++,b=l.next()){m.index>g?(y=m,m=null):y=m.sibling;var v=f(o,m,b.value,c);if(null===v){null===m&&(m=y);break}e&&m&&null===v.alternate&&t(o,m),s=i(v,s,g),null===d?u=v:d.sibling=v,d=v,m=y}if(b.done)return n(o,m),aa&&Jo(o,g),u;if(null===m){for(;!b.done;g++,b=l.next())null!==(b=p(o,b.value,c))&&(s=i(b,s,g),null===d?u=b:d.sibling=b,d=b);return aa&&Jo(o,g),u}for(m=r(o,m);!b.done;g++,b=l.next())null!==(b=h(m,o,g,b.value,c))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),s=i(b,s,g),null===d?u=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(o,e)})),aa&&Jo(o,g),u}return function e(r,a,i,l){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var c=i.key,u=a;null!==u;){if(u.key===c){if((c=i.type)===S){if(7===u.tag){n(r,u.sibling),(a=o(u,i.props.children)).return=r,r=a;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===j&&va(c)===u.type){n(r,u.sibling),(a=o(u,i.props)).ref=ya(r,u,i),a.return=r,r=a;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===S?((a=Ic(i.props.children,r.mode,l,i.key)).return=r,r=a):((l=Oc(i.type,i.key,i.props,null,r.mode,l)).ref=ya(r,a,i),l.return=r,r=l)}return s(r);case x:e:{for(u=i.key;null!==a;){if(a.key===u){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=Fc(i,r.mode,l)).return=r,r=a}return s(r);case j:return e(r,a,(u=i._init)(i._payload),l)}if(te(i))return m(r,a,i,l);if(I(i))return g(r,a,i,l);ba(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Bc(i,r.mode,l)).return=r,r=a),s(r)):n(r,a)}}var ka=wa(!0),xa=wa(!1),Sa=Co(null),Ea=null,Ca=null,_a=null;function Aa(){_a=Ca=Ea=null}function Ta(e){var t=Sa.current;_o(Sa),e._currentValue=t}function La(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Pa(e,t){Ea=e,_a=Ca=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vs=!0),e.firstContext=null)}function Ra(e){var t=e._currentValue;if(_a!==e)if(e={context:e,memoizedValue:t,next:null},null===Ca){if(null===Ea)throw Error(a(308));Ca=e,Ea.dependencies={lanes:0,firstContext:e}}else Ca=Ca.next=e;return t}var ja=null;function Na(e){null===ja?ja=[e]:ja.push(e)}function Oa(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Na(t)):(n.next=o.next,o.next=n),t.interleaved=n,Ia(e,r)}function Ia(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}var Da=!1;function Ba(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fa(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 Ma(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function za(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Tl){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Ia(e,n)}return null===(o=r.interleaved)?(t.next=t,Na(r)):(t.next=o.next,o.next=t),r.interleaved=t,Ia(e,n)}function $a(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Ua(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=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===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qa(e,t,n,r){var o=e.updateQueue;Da=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var l=s,c=l.next;l.next=null,null===i?a=c:i.next=c,i=l;var u=e.alternate;null!==u&&((s=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===s?u.firstBaseUpdate=c:s.next=c,u.lastBaseUpdate=l))}if(null!==a){var d=o.baseState;for(i=0,u=c=l=null,s=a;;){var p=s.lane,f=s.eventTime;if((r&p)===p){null!==u&&(u=u.next={eventTime:f,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var h=e,m=s;switch(p=t,f=n,m.tag){case 1:if("function"==typeof(h=m.payload)){d=h.call(f,d,p);break e}d=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=m.payload)?h.call(f,d,p):h))break e;d=B({},d,p);break e;case 2:Da=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(p=o.effects)?o.effects=[s]:p.push(s))}else f={eventTime:f,lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===u?(c=u=f,l=d):u=u.next=f,i|=p;if(null===(s=s.next)){if(null===(s=o.shared.pending))break;s=(p=s).next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}if(null===u&&(l=d),o.baseState=l,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Dl|=i,e.lanes=i,e.memoizedState=d}}function Qa(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var Va={},Ha=Co(Va),Wa=Co(Va),Ga=Co(Va);function Ka(e){if(e===Va)throw Error(a(174));return e}function Ya(e,t){switch(Ao(Ga,t),Ao(Wa,e),Ao(Ha,Va),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}_o(Ha),Ao(Ha,t)}function Za(){_o(Ha),_o(Wa),_o(Ga)}function Xa(e){Ka(Ga.current);var t=Ka(Ha.current),n=le(t,e.type);t!==n&&(Ao(Wa,e),Ao(Ha,n))}function Ja(e){Wa.current===e&&(_o(Ha),_o(Wa))}var ei=Co(0);function ti(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(128&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 ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var oi=w.ReactCurrentDispatcher,ai=w.ReactCurrentBatchConfig,ii=0,si=null,li=null,ci=null,ui=!1,di=!1,pi=0,fi=0;function hi(){throw Error(a(321))}function mi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sr(e[n],t[n]))return!1;return!0}function gi(e,t,n,r,o,i){if(ii=i,si=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,oi.current=null===e||null===e.memoizedState?Ji:es,e=n(r,o),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(a(301));i+=1,ci=li=null,t.updateQueue=null,oi.current=ts,e=n(r,o)}while(di)}if(oi.current=Xi,t=null!==li&&null!==li.next,ii=0,ci=li=si=null,ui=!1,t)throw Error(a(300));return e}function yi(){var e=0!==pi;return pi=0,e}function bi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ci?si.memoizedState=ci=e:ci=ci.next=e,ci}function vi(){if(null===li){var e=si.alternate;e=null!==e?e.memoizedState:null}else e=li.next;var t=null===ci?si.memoizedState:ci.next;if(null!==t)ci=t,li=e;else{if(null===e)throw Error(a(310));e={memoizedState:(li=e).memoizedState,baseState:li.baseState,baseQueue:li.baseQueue,queue:li.queue,next:null},null===ci?si.memoizedState=ci=e:ci=ci.next=e}return ci}function wi(e,t){return"function"==typeof t?t(e):t}function ki(e){var t=vi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=li,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var l=s=null,c=null,u=i;do{var d=u.lane;if((ii&d)===d)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var p={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(l=c=p,s=r):c=c.next=p,si.lanes|=d,Dl|=d}u=u.next}while(null!==u&&u!==i);null===c?s=r:c.next=l,sr(r,t.memoizedState)||(vs=!0),t.memoizedState=r,t.baseState=s,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,si.lanes|=i,Dl|=i,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function xi(e){var t=vi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);sr(i,t.memoizedState)||(vs=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Si(){}function Ei(e,t){var n=si,r=vi(),o=t(),i=!sr(r.memoizedState,o);if(i&&(r.memoizedState=o,vs=!0),r=r.queue,Di(Ai.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ci&&1&ci.memoizedState.tag){if(n.flags|=2048,Ri(9,_i.bind(null,n,r,o,t),void 0,null),null===Ll)throw Error(a(349));30&ii||Ci(n,t,o)}return o}function Ci(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=si.updateQueue)?(t={lastEffect:null,stores:null},si.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function _i(e,t,n,r){t.value=n,t.getSnapshot=r,Ti(t)&&Li(e)}function Ai(e,t,n){return n((function(){Ti(t)&&Li(e)}))}function Ti(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sr(e,n)}catch(r){return!0}}function Li(e){var t=Ia(e,1);null!==t&&nc(t,e,1,-1)}function Pi(e){var t=bi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Gi.bind(null,si,e),[t.memoizedState,e]}function Ri(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=si.updateQueue)?(t={lastEffect:null,stores:null},si.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 ji(){return vi().memoizedState}function Ni(e,t,n,r){var o=bi();si.flags|=e,o.memoizedState=Ri(1|t,n,void 0,void 0===r?null:r)}function Oi(e,t,n,r){var o=vi();r=void 0===r?null:r;var a=void 0;if(null!==li){var i=li.memoizedState;if(a=i.destroy,null!==r&&mi(r,i.deps))return void(o.memoizedState=Ri(t,n,a,r))}si.flags|=e,o.memoizedState=Ri(1|t,n,a,r)}function Ii(e,t){return Ni(8390656,8,e,t)}function Di(e,t){return Oi(2048,8,e,t)}function Bi(e,t){return Oi(4,2,e,t)}function Fi(e,t){return Oi(4,4,e,t)}function Mi(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 zi(e,t,n){return n=null!=n?n.concat([e]):null,Oi(4,4,Mi.bind(null,t,e),n)}function $i(){}function Ui(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&mi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function qi(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&mi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Qi(e,t,n){return 21&ii?(sr(n,t)||(n=mt(),si.lanes|=n,Dl|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vs=!0),e.memoizedState=n)}function Vi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=ai.transition;ai.transition={};try{e(!1),t()}finally{vt=n,ai.transition=r}}function Hi(){return vi().memoizedState}function Wi(e,t,n){var r=tc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ki(e))Yi(t,n);else if(null!==(n=Oa(e,t,n,r))){nc(n,e,r,ec()),Zi(n,t,r)}}function Gi(e,t,n){var r=tc(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ki(e))Yi(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,s=a(i,n);if(o.hasEagerState=!0,o.eagerState=s,sr(s,i)){var l=t.interleaved;return null===l?(o.next=o,Na(t)):(o.next=l.next,l.next=o),void(t.interleaved=o)}}catch(c){}null!==(n=Oa(e,t,o,r))&&(nc(n,e,r,o=ec()),Zi(n,t,r))}}function Ki(e){var t=e.alternate;return e===si||null!==t&&t===si}function Yi(e,t){di=ui=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Zi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:Ra,useCallback:hi,useContext:hi,useEffect:hi,useImperativeHandle:hi,useInsertionEffect:hi,useLayoutEffect:hi,useMemo:hi,useReducer:hi,useRef:hi,useState:hi,useDebugValue:hi,useDeferredValue:hi,useTransition:hi,useMutableSource:hi,useSyncExternalStore:hi,useId:hi,unstable_isNewReconciler:!1},Ji={readContext:Ra,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:Ra,useEffect:Ii,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Ni(4194308,4,Mi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ni(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ni(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wi.bind(null,si,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Pi,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Pi(!1),t=e[0];return e=Vi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=si,o=bi();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===Ll)throw Error(a(349));30&ii||Ci(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Ii(Ai.bind(null,r,i,e),[e]),r.flags|=2048,Ri(9,_i.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=Ll.identifierPrefix;if(aa){var n=Xo;t=":"+t+"R"+(n=(Zo&~(1<<32-it(Zo)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},es={readContext:Ra,useCallback:Ui,useContext:Ra,useEffect:Di,useImperativeHandle:zi,useInsertionEffect:Bi,useLayoutEffect:Fi,useMemo:qi,useReducer:ki,useRef:ji,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){return Qi(vi(),li.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Hi,unstable_isNewReconciler:!1},ts={readContext:Ra,useCallback:Ui,useContext:Ra,useEffect:Di,useImperativeHandle:zi,useInsertionEffect:Bi,useLayoutEffect:Fi,useMemo:qi,useReducer:xi,useRef:ji,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===li?t.memoizedState=e:Qi(t,li.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Hi,unstable_isNewReconciler:!1};function ns(e,t){if(e&&e.defaultProps){for(var n in t=B({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rs(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:B({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var os={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=Ma(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=za(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=Ma(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=za(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ec(),r=tc(e),o=Ma(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=za(e,o,r))&&(nc(t,e,r,n),$a(t,e,r))}};function as(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!lr(n,r)||!lr(o,a))}function is(e,t,n){var r=!1,o=To,a=t.contextType;return"object"==typeof a&&null!==a?a=Ra(a):(o=No(t)?Ro:Lo.current,a=(r=null!=(r=t.contextTypes))?jo(e,o):To),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=os,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ss(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&&os.enqueueReplaceState(t,t.state,null)}function ls(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Ba(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=Ra(a):(a=No(t)?Ro:Lo.current,o.context=jo(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(rs(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&os.enqueueReplaceState(o,o.state,null),qa(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function cs(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o,digest:null}}function us(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function ds(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var ps="function"==typeof WeakMap?WeakMap:Map;function fs(e,t,n){(n=Ma(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ql||(Ql=!0,Vl=r),ds(0,t)},n}function hs(e,t,n){(n=Ma(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){ds(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){ds(0,t),"function"!=typeof r&&(null===Hl?Hl=new Set([this]):Hl.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function ms(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ps;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Cc.bind(null,e,t,n),t.then(e,e))}function gs(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function ys(e,t,n,r,o){return 1&e.mode?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Ma(-1,1)).tag=2,za(n,t,1))),n.lanes|=1),e)}var bs=w.ReactCurrentOwner,vs=!1;function ws(e,t,n,r){t.child=null===e?xa(t,null,n,r):ka(t,e.child,n,r)}function ks(e,t,n,r,o){n=n.render;var a=t.ref;return Pa(t,o),r=gi(e,t,n,r,a,o),n=yi(),null===e||vs?(aa&&n&&ta(t),t.flags|=1,ws(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Qs(e,t,o))}function xs(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||jc(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Oc(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Ss(e,t,a,r,o))}if(a=e.child,!(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(i,r)&&e.ref===t.ref)return Qs(e,t,o)}return t.flags|=1,(e=Nc(a,r)).ref=t.ref,e.return=t,t.child=e}function Ss(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(lr(a,r)&&e.ref===t.ref){if(vs=!1,t.pendingProps=r=a,!(e.lanes&o))return t.lanes=e.lanes,Qs(e,t,o);131072&e.flags&&(vs=!0)}}return _s(e,t,n,r,o)}function Es(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ao(Nl,jl),jl|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Ao(Nl,jl),jl|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ao(Nl,jl),jl|=n;else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Ao(Nl,jl),jl|=r;return ws(e,t,o,n),t.child}function Cs(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function _s(e,t,n,r,o){var a=No(n)?Ro:Lo.current;return a=jo(t,a),Pa(t,o),n=gi(e,t,n,r,a,o),r=yi(),null===e||vs?(aa&&r&&ta(t),t.flags|=1,ws(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Qs(e,t,o))}function As(e,t,n,r,o){if(No(n)){var a=!0;Bo(t)}else a=!1;if(Pa(t,o),null===t.stateNode)qs(e,t),is(t,n,r),ls(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=Ra(c):c=jo(t,c=No(n)?Ro:Lo.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==c)&&ss(t,i,r,c),Da=!1;var p=t.memoizedState;i.state=p,qa(t,r,i,o),l=t.memoizedState,s!==r||p!==l||Po.current||Da?("function"==typeof u&&(rs(t,n,u,r),l=t.memoizedState),(s=Da||as(t,n,s,r,p,l,c))?(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|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=c,r=s):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Fa(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:ns(t.type,s),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(l=n.contextType)&&null!==l?l=Ra(l):l=jo(t,l=No(n)?Ro:Lo.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==d||p!==l)&&ss(t,i,r,l),Da=!1,p=t.memoizedState,i.state=p,qa(t,r,i,o);var h=t.memoizedState;s!==d||p!==h||Po.current||Da?("function"==typeof f&&(rs(t,n,f,r),h=t.memoizedState),(c=Da||as(t,n,c,r,p,h,l)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,l),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,l)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=l,r=c):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Ts(e,t,n,r,a,o)}function Ts(e,t,n,r,o,a){Cs(e,t);var i=!!(128&t.flags);if(!r&&!i)return o&&Fo(t,n,!1),Qs(e,t,a);r=t.stateNode,bs.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ka(t,e.child,null,a),t.child=ka(t,null,s,a)):ws(e,t,s,a),t.memoizedState=r.state,o&&Fo(t,n,!0),t.child}function Ls(e){var t=e.stateNode;t.pendingContext?Io(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Io(0,t.context,!1),Ya(e,t.containerInfo)}function Ps(e,t,n,r,o){return ha(),ma(o),t.flags|=256,ws(e,t,n,r),t.child}var Rs,js,Ns,Os,Is={dehydrated:null,treeContext:null,retryLane:0};function Ds(e){return{baseLanes:e,cachePool:null,transitions:null}}function Bs(e,t,n){var r,o=t.pendingProps,i=ei.current,s=!1,l=!!(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Ao(ei,1&i),null===e)return ua(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=o.children,e=o.fallback,s?(o=t.mode,s=t.child,l={mode:"hidden",children:l},1&o||null===s?s=Dc(l,o,0,null):(s.childLanes=0,s.pendingProps=l),e=Ic(e,o,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Ds(n),t.memoizedState=Is,e):Fs(t,l));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,s){if(n)return 256&t.flags?(t.flags&=-257,Ms(e,t,s,r=us(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Dc({mode:"visible",children:r.children},o,0,null),(i=Ic(i,o,s,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ka(t,e.child,null,s),t.child.memoizedState=Ds(s),t.memoizedState=Is,i);if(!(1&t.mode))return Ms(e,t,s,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var l=r.dgst;return r=l,Ms(e,t,s,r=us(i=Error(a(419)),r,void 0))}if(l=!!(s&e.childLanes),vs||l){if(null!==(r=Ll)){switch(s&-s){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=o&(r.suspendedLanes|s)?0:o)&&o!==i.retryLane&&(i.retryLane=o,Ia(e,o),nc(r,e,o,-1))}return mc(),Ms(e,t,s,r=us(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Ac.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=co(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Go[Ko++]=Zo,Go[Ko++]=Xo,Go[Ko++]=Yo,Zo=e.id,Xo=e.overflow,Yo=t),t=Fs(t,r.children),t.flags|=4096,t)}(e,t,l,o,r,i,n);if(s){s=o.fallback,l=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:o.children};return 1&l||t.child===i?(o=Nc(i,c)).subtreeFlags=14680064&i.subtreeFlags:((o=t.child).childLanes=0,o.pendingProps=c,t.deletions=null),null!==r?s=Nc(r,s):(s=Ic(s,l,n,null)).flags|=2,s.return=t,o.return=t,o.sibling=s,t.child=o,o=s,s=t.child,l=null===(l=e.child.memoizedState)?Ds(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},s.memoizedState=l,s.childLanes=e.childLanes&~n,t.memoizedState=Is,o}return e=(s=e.child).sibling,o=Nc(s,{mode:"visible",children:o.children}),!(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Fs(e,t){return(t=Dc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Ms(e,t,n,r){return null!==r&&ma(r),ka(t,e.child,null,n),(e=Fs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function zs(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),La(e.return,t,n)}function $s(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Us(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(ws(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&zs(e,n,t);else if(19===e.tag)zs(e,n,t);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(Ao(ei,r),1&t.mode)switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),$s(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ti(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}$s(t,!0,n,null,a);break;case"together":$s(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function qs(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Qs(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Dl|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Nc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Nc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vs(e,t){if(!aa)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 Hs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ws(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Hs(t),null;case 1:case 17:return No(t.type)&&Oo(),Hs(t),null;case 3:return r=t.stateNode,Za(),_o(Po),_o(Lo),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(pa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==ia&&(ic(ia),ia=null))),js(e,t),Hs(t),null;case 5:Ja(t);var o=Ka(Ga.current);if(n=t.type,null!==e&&null!=t.stateNode)Ns(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Hs(t),null}if(e=Ka(Ha.current),pa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fo]=t,r[ho]=i,e=!!(1&t.mode),n){case"dialog":Mr("cancel",r),Mr("close",r);break;case"iframe":case"object":case"embed":Mr("load",r);break;case"video":case"audio":for(o=0;o<Ir.length;o++)Mr(Ir[o],r);break;case"source":Mr("error",r);break;case"img":case"image":case"link":Mr("error",r),Mr("load",r);break;case"details":Mr("toggle",r);break;case"input":Y(r,i),Mr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Mr("invalid",r);break;case"textarea":oe(r,i),Mr("invalid",r)}for(var l in be(n,i),o=null,i)if(i.hasOwnProperty(l)){var c=i[l];"children"===l?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),o=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),o=["children",""+c]):s.hasOwnProperty(l)&&null!=c&&"onScroll"===l&&Mr("scroll",r)}switch(n){case"input":H(r),J(r,i,!0);break;case"textarea":H(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[fo]=t,e[ho]=r,Rs(e,t,!1,!1),t.stateNode=e;e:{switch(l=ve(n,r),n){case"dialog":Mr("cancel",e),Mr("close",e),o=r;break;case"iframe":case"object":case"embed":Mr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Ir.length;o++)Mr(Ir[o],e);o=r;break;case"source":Mr("error",e),o=r;break;case"img":case"image":case"link":Mr("error",e),Mr("load",e),o=r;break;case"details":Mr("toggle",e),o=r;break;case"input":Y(e,r),o=K(e,r),Mr("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=B({},r,{value:void 0}),Mr("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),Mr("invalid",e)}for(i in be(n,o),c=o)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?ge(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&de(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&pe(e,u):"number"==typeof u&&pe(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(s.hasOwnProperty(i)?null!=u&&"onScroll"===i&&Mr("scroll",e):null!=u&&v(e,i,u,l))}switch(n){case"input":H(e),J(e,r,!1);break;case"textarea":H(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Q(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Hs(t),null;case 6:if(e&&null!=t.stateNode)Os(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=Ka(Ga.current),Ka(Ha.current),pa(t)){if(r=t.stateNode,n=t.memoizedProps,r[fo]=t,(i=r.nodeValue!==n)&&null!==(e=ra))switch(e.tag){case 3:Xr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[fo]=t,t.stateNode=r}return Hs(t),null;case 13:if(_o(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(aa&&null!==oa&&1&t.mode&&!(128&t.flags))fa(),ha(),t.flags|=98560,i=!1;else if(i=pa(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[fo]=t}else ha(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Hs(t),i=!1}else null!==ia&&(ic(ia),ia=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Ol&&(Ol=3):mc())),null!==t.updateQueue&&(t.flags|=4),Hs(t),null);case 4:return Za(),js(e,t),null===e&&Ur(t.stateNode.containerInfo),Hs(t),null;case 10:return Ta(t.type._context),Hs(t),null;case 19:if(_o(ei),null===(i=t.memoizedState))return Hs(t),null;if(r=!!(128&t.flags),null===(l=i.rendering))if(r)Vs(i,!1);else{if(0!==Ol||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(l=ti(e))){for(t.flags|=128,Vs(i,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(l=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=l.childLanes,i.lanes=l.lanes,i.child=l.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=l.memoizedProps,i.memoizedState=l.memoizedState,i.updateQueue=l.updateQueue,i.type=l.type,e=l.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ao(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ze()>Ul&&(t.flags|=128,r=!0,Vs(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vs(i,!0),null===i.tail&&"hidden"===i.tailMode&&!l.alternate&&!aa)return Hs(t),null}else 2*Ze()-i.renderingStartTime>Ul&&1073741824!==n&&(t.flags|=128,r=!0,Vs(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=i.last)?n.sibling=l:t.child=l,i.last=l)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,n=ei.current,Ao(ei,r?1&n|2:1&n),t):(Hs(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&jl)&&(Hs(t),6&t.subtreeFlags&&(t.flags|=8192)):Hs(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Gs(e,t){switch(na(t),t.tag){case 1:return No(t.type)&&Oo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Za(),_o(Po),_o(Lo),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Ja(t),null;case 13:if(_o(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ha()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return _o(ei),null;case 4:return Za(),null;case 10:return Ta(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}Rs=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}},js=function(){},Ns=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Ka(Ha.current);var a,i=null;switch(n){case"input":o=K(e,o),r=K(e,r),i=[];break;case"select":o=B({},o,{value:void 0}),r=B({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var l=o[u];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(s.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(l=null!=o?o[u]:void 0,r.hasOwnProperty(u)&&c!==l&&(null!=c||null!=l))if("style"===u)if(l){for(a in l)!l.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in c)c.hasOwnProperty(a)&&l[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,l=l?l.__html:void 0,null!=c&&l!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(s.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&Mr("scroll",e),i||l===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Os=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ks=!1,Ys=!1,Zs="function"==typeof WeakSet?WeakSet:Set,Xs=null;function Js(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function el(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var tl=!1;function nl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&el(t,n,a)}o=o.next}while(o!==r)}}function rl(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ol(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function al(e){var t=e.alternate;null!==t&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fo],delete t[ho],delete t[go],delete t[yo],delete t[bo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function il(e){return 5===e.tag||3===e.tag||4===e.tag}function sl(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||il(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ll(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,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=Jr));else if(4!==r&&null!==(e=e.child))for(ll(e,t,n),e=e.sibling;null!==e;)ll(e,t,n),e=e.sibling}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}var ul=null,dl=!1;function pl(e,t,n){for(n=n.child;null!==n;)fl(e,t,n),n=n.sibling}function fl(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(s){}switch(n.tag){case 5:Ys||Js(n,t);case 6:var r=ul,o=dl;ul=null,pl(e,t,n),dl=o,null!==(ul=r)&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):ul.removeChild(n.stateNode));break;case 18:null!==ul&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?lo(e.parentNode,n):1===e.nodeType&&lo(e,n),Ut(e)):lo(ul,n.stateNode));break;case 4:r=ul,o=dl,ul=n.stateNode.containerInfo,dl=!0,pl(e,t,n),ul=r,dl=o;break;case 0:case 11:case 14:case 15:if(!Ys&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(2&a||4&a)&&el(n,t,i),o=o.next}while(o!==r)}pl(e,t,n);break;case 1:if(!Ys&&(Js(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Ec(n,t,s)}pl(e,t,n);break;case 21:pl(e,t,n);break;case 22:1&n.mode?(Ys=(r=Ys)||null!==n.memoizedState,pl(e,t,n),Ys=r):pl(e,t,n);break;default:pl(e,t,n)}}function hl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zs),t.forEach((function(t){var r=Tc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ml(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var i=e,s=t,l=s;e:for(;null!==l;){switch(l.tag){case 5:ul=l.stateNode,dl=!1;break e;case 3:case 4:ul=l.stateNode.containerInfo,dl=!0;break e}l=l.return}if(null===ul)throw Error(a(160));fl(i,s,o),ul=null,dl=!1;var c=o.alternate;null!==c&&(c.return=null),o.return=null}catch(u){Ec(o,t,u)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gl(t,e),t=t.sibling}function gl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ml(t,e),yl(e),4&r){try{nl(3,e,e.return),rl(3,e)}catch(g){Ec(e,e.return,g)}try{nl(5,e,e.return)}catch(g){Ec(e,e.return,g)}}break;case 1:ml(t,e),yl(e),512&r&&null!==n&&Js(n,n.return);break;case 5:if(ml(t,e),yl(e),512&r&&null!==n&&Js(n,n.return),32&e.flags){var o=e.stateNode;try{pe(o,"")}catch(g){Ec(e,e.return,g)}}if(4&r&&null!=(o=e.stateNode)){var i=e.memoizedProps,s=null!==n?n.memoizedProps:i,l=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===l&&"radio"===i.type&&null!=i.name&&Z(o,i),ve(l,s);var u=ve(l,i);for(s=0;s<c.length;s+=2){var d=c[s],p=c[s+1];"style"===d?ge(o,p):"dangerouslySetInnerHTML"===d?de(o,p):"children"===d?pe(o,p):v(o,d,p,u)}switch(l){case"input":X(o,i);break;case"textarea":ae(o,i);break;case"select":var f=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(o,!!i.multiple,h,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[ho]=i}catch(g){Ec(e,e.return,g)}}break;case 6:if(ml(t,e),yl(e),4&r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(g){Ec(e,e.return,g)}}break;case 3:if(ml(t,e),yl(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(g){Ec(e,e.return,g)}break;case 4:default:ml(t,e),yl(e);break;case 13:ml(t,e),yl(e),8192&(o=e.child).flags&&(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&&null!==o.alternate.memoizedState||($l=Ze())),4&r&&hl(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Ys=(u=Ys)||d,ml(t,e),Ys=u):ml(t,e),yl(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!d&&1&e.mode)for(Xs=e,d=e.child;null!==d;){for(p=Xs=d;null!==Xs;){switch(h=(f=Xs).child,f.tag){case 0:case 11:case 14:case 15:nl(4,f,f.return);break;case 1:Js(f,f.return);var m=f.stateNode;if("function"==typeof m.componentWillUnmount){r=f,n=f.return;try{t=r,m.props=t.memoizedProps,m.state=t.memoizedState,m.componentWillUnmount()}catch(g){Ec(r,n,g)}}break;case 5:Js(f,f.return);break;case 22:if(null!==f.memoizedState){kl(p);continue}}null!==h?(h.return=f,Xs=h):kl(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{o=p.stateNode,u?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(l=p.stateNode,s=null!=(c=p.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,l.style.display=me("display",s))}catch(g){Ec(e,e.return,g)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=u?"":p.memoizedProps}catch(g){Ec(e,e.return,g)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:ml(t,e),yl(e),4&r&&hl(e);case 21:}}function yl(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(il(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(pe(o,""),r.flags&=-33),cl(e,sl(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;ll(e,sl(e),i);break;default:throw Error(a(161))}}catch(s){Ec(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bl(e,t,n){Xs=e,vl(e,t,n)}function vl(e,t,n){for(var r=!!(1&e.mode);null!==Xs;){var o=Xs,a=o.child;if(22===o.tag&&r){var i=null!==o.memoizedState||Ks;if(!i){var s=o.alternate,l=null!==s&&null!==s.memoizedState||Ys;s=Ks;var c=Ys;if(Ks=i,(Ys=l)&&!c)for(Xs=o;null!==Xs;)l=(i=Xs).child,22===i.tag&&null!==i.memoizedState?xl(o):null!==l?(l.return=i,Xs=l):xl(o);for(;null!==a;)Xs=a,vl(a,t,n),a=a.sibling;Xs=o,Ks=s,Ys=c}wl(e)}else 8772&o.subtreeFlags&&null!==a?(a.return=o,Xs=a):wl(e)}}function wl(e){for(;null!==Xs;){var t=Xs;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Ys||rl(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Ys)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:ns(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Qa(t,i,r);break;case 3:var s=t.updateQueue;if(null!==s){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Qa(t,s,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var d=u.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(a(163))}Ys||512&t.flags&&ol(t)}catch(f){Ec(t,t.return,f)}}if(t===e){Xs=null;break}if(null!==(n=t.sibling)){n.return=t.return,Xs=n;break}Xs=t.return}}function kl(e){for(;null!==Xs;){var t=Xs;if(t===e){Xs=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Xs=n;break}Xs=t.return}}function xl(e){for(;null!==Xs;){var t=Xs;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rl(4,t)}catch(l){Ec(t,n,l)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(l){Ec(t,o,l)}}var a=t.return;try{ol(t)}catch(l){Ec(t,a,l)}break;case 5:var i=t.return;try{ol(t)}catch(l){Ec(t,i,l)}}}catch(l){Ec(t,t.return,l)}if(t===e){Xs=null;break}var s=t.sibling;if(null!==s){s.return=t.return,Xs=s;break}Xs=t.return}}var Sl,El=Math.ceil,Cl=w.ReactCurrentDispatcher,_l=w.ReactCurrentOwner,Al=w.ReactCurrentBatchConfig,Tl=0,Ll=null,Pl=null,Rl=0,jl=0,Nl=Co(0),Ol=0,Il=null,Dl=0,Bl=0,Fl=0,Ml=null,zl=null,$l=0,Ul=1/0,ql=null,Ql=!1,Vl=null,Hl=null,Wl=!1,Gl=null,Kl=0,Yl=0,Zl=null,Xl=-1,Jl=0;function ec(){return 6&Tl?Ze():-1!==Xl?Xl:Xl=Ze()}function tc(e){return 1&e.mode?2&Tl&&0!==Rl?Rl&-Rl:null!==ga.transition?(0===Jl&&(Jl=mt()),Jl):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Yt(e.type):1}function nc(e,t,n,r){if(50<Yl)throw Yl=0,Zl=null,Error(a(185));yt(e,n,r),2&Tl&&e===Ll||(e===Ll&&(!(2&Tl)&&(Bl|=n),4===Ol&&sc(e,Rl)),rc(e,r),1===n&&0===Tl&&!(1&t.mode)&&(Ul=Ze()+500,zo&&qo()))}function rc(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0<a;){var i=31-it(a),s=1<<i,l=o[i];-1===l?s&n&&!(s&r)||(o[i]=ft(s,t)):l<=t&&(e.expiredLanes|=s),a&=~s}}(e,t);var r=pt(e,e===Ll?Rl:0);if(0===r)null!==n&&Ge(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ge(n),1===t)0===e.tag?function(e){zo=!0,Uo(e)}(lc.bind(null,e)):Uo(lc.bind(null,e)),io((function(){!(6&Tl)&&qo()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Lc(n,oc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function oc(e,t){if(Xl=-1,Jl=0,6&Tl)throw Error(a(327));var n=e.callbackNode;if(xc()&&e.callbackNode!==n)return null;var r=pt(e,e===Ll?Rl:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=gc(e,r);else{t=r;var o=Tl;Tl|=2;var i=hc();for(Ll===e&&Rl===t||(ql=null,Ul=Ze()+500,pc(e,t));;)try{bc();break}catch(l){fc(e,l)}Aa(),Cl.current=i,Tl=o,null!==Pl?t=0:(Ll=null,Rl=0,t=Ol)}if(0!==t){if(2===t&&(0!==(o=ht(e))&&(r=o,t=ac(e,o))),1===t)throw n=Il,pc(e,0),sc(e,r),rc(e,Ze()),n;if(6===t)sc(e,r);else{if(o=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!sr(a(),o))return!1}catch(s){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)||(t=gc(e,r),2===t&&(i=ht(e),0!==i&&(r=i,t=ac(e,i))),1!==t)))throw n=Il,pc(e,0),sc(e,r),rc(e,Ze()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:kc(e,zl,ql);break;case 3:if(sc(e,r),(130023424&r)===r&&10<(t=$l+500-Ze())){if(0!==pt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){ec(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(kc.bind(null,e,zl,ql),t);break}kc(e,zl,ql);break;case 4:if(sc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var s=31-it(r);i=1<<s,(s=t[s])>o&&(o=s),r&=~i}if(r=o,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*El(r/1960))-r)){e.timeoutHandle=ro(kc.bind(null,e,zl,ql),r);break}kc(e,zl,ql);break;default:throw Error(a(329))}}}return rc(e,Ze()),e.callbackNode===n?oc.bind(null,e):null}function ac(e,t){var n=Ml;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=gc(e,t))&&(t=zl,zl=n,null!==t&&ic(t)),e}function ic(e){null===zl?zl=e:zl.push.apply(zl,e)}function sc(e,t){for(t&=~Fl,t&=~Bl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function lc(e){if(6&Tl)throw Error(a(327));xc();var t=pt(e,0);if(!(1&t))return rc(e,Ze()),null;var n=gc(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=ac(e,r))}if(1===n)throw n=Il,pc(e,0),sc(e,t),rc(e,Ze()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,kc(e,zl,ql),rc(e,Ze()),null}function cc(e,t){var n=Tl;Tl|=1;try{return e(t)}finally{0===(Tl=n)&&(Ul=Ze()+500,zo&&qo())}}function uc(e){null!==Gl&&0===Gl.tag&&!(6&Tl)&&xc();var t=Tl;Tl|=1;var n=Al.transition,r=vt;try{if(Al.transition=null,vt=1,e)return e()}finally{vt=r,Al.transition=n,!(6&(Tl=t))&&qo()}}function dc(){jl=Nl.current,_o(Nl)}function pc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==Pl)for(n=Pl.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Oo();break;case 3:Za(),_o(Po),_o(Lo),ri();break;case 5:Ja(r);break;case 4:Za();break;case 13:case 19:_o(ei);break;case 10:Ta(r.type._context);break;case 22:case 23:dc()}n=n.return}if(Ll=e,Pl=e=Nc(e.current,null),Rl=jl=t,Ol=0,Il=null,Fl=Bl=Dl=0,zl=Ml=null,null!==ja){for(t=0;t<ja.length;t++)if(null!==(r=(n=ja[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}ja=null}return e}function fc(e,t){for(;;){var n=Pl;try{if(Aa(),oi.current=Xi,ui){for(var r=si.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ui=!1}if(ii=0,ci=li=si=null,di=!1,pi=0,_l.current=null,null===n||null===n.return){Ol=1,Il=t,Pl=null;break}e:{var i=e,s=n.return,l=n,c=t;if(t=Rl,l.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,d=l,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var h=gs(s);if(null!==h){h.flags&=-257,ys(h,s,l,0,t),1&h.mode&&ms(i,u,t),c=u;var m=(t=h).updateQueue;if(null===m){var g=new Set;g.add(c),t.updateQueue=g}else m.add(c);break e}if(!(1&t)){ms(i,u,t),mc();break e}c=Error(a(426))}else if(aa&&1&l.mode){var y=gs(s);if(null!==y){!(65536&y.flags)&&(y.flags|=256),ys(y,s,l,0,t),ma(cs(c,l));break e}}i=c=cs(c,l),4!==Ol&&(Ol=2),null===Ml?Ml=[i]:Ml.push(i),i=s;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Ua(i,fs(0,c,t));break e;case 1:l=c;var b=i.type,v=i.stateNode;if(!(128&i.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==Hl&&Hl.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Ua(i,hs(i,l,t));break e}}i=i.return}while(null!==i)}wc(n)}catch(w){t=w,Pl===n&&null!==n&&(Pl=n=n.return);continue}break}}function hc(){var e=Cl.current;return Cl.current=Xi,null===e?Xi:e}function mc(){0!==Ol&&3!==Ol&&2!==Ol||(Ol=4),null===Ll||!(268435455&Dl)&&!(268435455&Bl)||sc(Ll,Rl)}function gc(e,t){var n=Tl;Tl|=2;var r=hc();for(Ll===e&&Rl===t||(ql=null,pc(e,t));;)try{yc();break}catch(o){fc(e,o)}if(Aa(),Tl=n,Cl.current=r,null!==Pl)throw Error(a(261));return Ll=null,Rl=0,Ol}function yc(){for(;null!==Pl;)vc(Pl)}function bc(){for(;null!==Pl&&!Ke();)vc(Pl)}function vc(e){var t=Sl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?wc(e):Pl=t,_l.current=null}function wc(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Gs(n,t)))return n.flags&=32767,void(Pl=n);if(null===e)return Ol=6,void(Pl=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Ws(n,t,jl)))return void(Pl=n);if(null!==(t=t.sibling))return void(Pl=t);Pl=t=e}while(null!==t);0===Ol&&(Ol=5)}function kc(e,t,n){var r=vt,o=Al.transition;try{Al.transition=null,vt=1,function(e,t,n,r){do{xc()}while(null!==Gl);if(6&Tl)throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-it(n),a=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~a}}(e,i),e===Ll&&(Pl=Ll=null,Rl=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Wl||(Wl=!0,Lc(tt,(function(){return xc(),null}))),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=Al.transition,Al.transition=null;var s=vt;vt=1;var l=Tl;Tl|=4,_l.current=null,function(e,t){if(eo=Qt,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var s=0,l=-1,c=-1,u=0,d=0,p=e,f=null;t:for(;;){for(var h;p!==n||0!==o&&3!==p.nodeType||(l=s+o),p!==i||0!==r&&3!==p.nodeType||(c=s+r),3===p.nodeType&&(s+=p.nodeValue.length),null!==(h=p.firstChild);)f=p,p=h;for(;;){if(p===e)break t;if(f===n&&++u===o&&(l=s),f===i&&++d===r&&(c=s),null!==(h=p.nextSibling))break;f=(p=f).parentNode}p=h}n=-1===l||-1===c?null:{start:l,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Qt=!1,Xs=t;null!==Xs;)if(e=(t=Xs).child,1028&t.subtreeFlags&&null!==e)e.return=t,Xs=e;else for(;null!==Xs;){t=Xs;try{var m=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==m){var g=m.memoizedProps,y=m.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:ns(t.type,g),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(k){Ec(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Xs=e;break}Xs=t.return}m=tl,tl=!1}(e,n),gl(n,e),hr(to),Qt=!!eo,to=eo=null,e.current=n,bl(n,e,o),Ye(),Tl=l,vt=s,Al.transition=i}else e.current=n;if(Wl&&(Wl=!1,Gl=e,Kl=o),i=e.pendingLanes,0===i&&(Hl=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),rc(e,Ze()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Ql)throw Ql=!1,e=Vl,Vl=null,e;!!(1&Kl)&&0!==e.tag&&xc(),i=e.pendingLanes,1&i?e===Zl?Yl++:(Yl=0,Zl=e):Yl=0,qo()}(e,t,n,r)}finally{Al.transition=o,vt=r}return null}function xc(){if(null!==Gl){var e=wt(Kl),t=Al.transition,n=vt;try{if(Al.transition=null,vt=16>e?16:e,null===Gl)var r=!1;else{if(e=Gl,Gl=null,Kl=0,6&Tl)throw Error(a(331));var o=Tl;for(Tl|=4,Xs=e.current;null!==Xs;){var i=Xs,s=i.child;if(16&Xs.flags){var l=i.deletions;if(null!==l){for(var c=0;c<l.length;c++){var u=l[c];for(Xs=u;null!==Xs;){var d=Xs;switch(d.tag){case 0:case 11:case 15:nl(8,d,i)}var p=d.child;if(null!==p)p.return=d,Xs=p;else for(;null!==Xs;){var f=(d=Xs).sibling,h=d.return;if(al(d),d===u){Xs=null;break}if(null!==f){f.return=h,Xs=f;break}Xs=h}}}var m=i.alternate;if(null!==m){var g=m.child;if(null!==g){m.child=null;do{var y=g.sibling;g.sibling=null,g=y}while(null!==g)}}Xs=i}}if(2064&i.subtreeFlags&&null!==s)s.return=i,Xs=s;else e:for(;null!==Xs;){if(2048&(i=Xs).flags)switch(i.tag){case 0:case 11:case 15:nl(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Xs=b;break e}Xs=i.return}}var v=e.current;for(Xs=v;null!==Xs;){var w=(s=Xs).child;if(2064&s.subtreeFlags&&null!==w)w.return=s,Xs=w;else e:for(s=v;null!==Xs;){if(2048&(l=Xs).flags)try{switch(l.tag){case 0:case 11:case 15:rl(9,l)}}catch(x){Ec(l,l.return,x)}if(l===s){Xs=null;break e}var k=l.sibling;if(null!==k){k.return=l.return,Xs=k;break e}Xs=l.return}}if(Tl=o,qo(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(x){}r=!0}return r}finally{vt=n,Al.transition=t}}return!1}function Sc(e,t,n){e=za(e,t=fs(0,t=cs(n,t),1),1),t=ec(),null!==e&&(yt(e,1,t),rc(e,t))}function Ec(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Hl||!Hl.has(r))){t=za(t,e=hs(t,e=cs(n,e),1),1),e=ec(),null!==t&&(yt(t,1,e),rc(t,e));break}}t=t.return}}function Cc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ec(),e.pingedLanes|=e.suspendedLanes&n,Ll===e&&(Rl&n)===n&&(4===Ol||3===Ol&&(130023424&Rl)===Rl&&500>Ze()-$l?pc(e,0):Fl|=n),rc(e,t)}function _c(e,t){0===t&&(1&e.mode?(t=ut,!(130023424&(ut<<=1))&&(ut=4194304)):t=1);var n=ec();null!==(e=Ia(e,t))&&(yt(e,t,n),rc(e,n))}function Ac(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),_c(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),_c(e,n)}function Lc(e,t){return We(e,t)}function Pc(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.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Rc(e,t,n,r){return new Pc(e,t,n,r)}function jc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Nc(e,t){var n=e.alternate;return null===n?((n=Rc(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.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,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 Oc(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)jc(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case S:return Ic(n.children,o,i,t);case E:s=8,o|=8;break;case C:return(e=Rc(12,n,t,2|o)).elementType=C,e.lanes=i,e;case L:return(e=Rc(13,n,t,o)).elementType=L,e.lanes=i,e;case P:return(e=Rc(19,n,t,o)).elementType=P,e.lanes=i,e;case N:return Dc(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:s=10;break e;case A:s=9;break e;case T:s=11;break e;case R:s=14;break e;case j:s=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Rc(s,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Ic(e,t,n,r){return(e=Rc(7,e,r,t)).lanes=n,e}function Dc(e,t,n,r){return(e=Rc(22,e,r,t)).elementType=N,e.lanes=n,e.stateNode={isHidden:!1},e}function Bc(e,t,n){return(e=Rc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=Rc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Mc(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function zc(e,t,n,r,o,a,i,s,l){return e=new Mc(e,t,n,s,l),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Rc(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ba(a),e}function $c(e){if(!e)return To;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(No(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(No(n))return Do(e,n,t)}return t}function Uc(e,t,n,r,o,a,i,s,l){return(e=zc(n,r,!0,e,0,a,0,s,l)).context=$c(null),n=e.current,(a=Ma(r=ec(),o=tc(n))).callback=null!=t?t:null,za(n,a,o),e.current.lanes=o,yt(e,o,r),rc(e,r),e}function qc(e,t,n,r){var o=t.current,a=ec(),i=tc(o);return n=$c(n),null===t.context?t.context=n:t.pendingContext=n,(t=Ma(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=za(o,t,i))&&(nc(e,o,i,a),$a(e,o,i)),i}function Qc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Hc(e,t){Vc(e,t),(e=e.alternate)&&Vc(e,t)}Sl=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Po.current)vs=!0;else{if(!(e.lanes&n||128&t.flags))return vs=!1,function(e,t,n){switch(t.tag){case 3:Ls(t),ha();break;case 5:Xa(t);break;case 1:No(t.type)&&Bo(t);break;case 4:Ya(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Ao(Sa,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ao(ei,1&ei.current),t.flags|=128,null):n&t.child.childLanes?Bs(e,t,n):(Ao(ei,1&ei.current),null!==(e=Qs(e,t,n))?e.sibling:null);Ao(ei,1&ei.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Us(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),Ao(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,Es(e,t,n)}return Qs(e,t,n)}(e,t,n);vs=!!(131072&e.flags)}else vs=!1,aa&&1048576&t.flags&&ea(t,Wo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;qs(e,t),e=t.pendingProps;var o=jo(t,Lo.current);Pa(t,n),o=gi(null,t,r,e,o,n);var i=yi();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,No(r)?(i=!0,Bo(t)):i=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Ba(t),o.updater=os,t.stateNode=o,o._reactInternals=t,ls(t,r,e,n),t=Ts(null,t,r,!0,i,n)):(t.tag=0,aa&&i&&ta(t),ws(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(qs(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return jc(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===R)return 14}return 2}(r),e=ns(r,e),o){case 0:t=_s(null,t,r,e,n);break e;case 1:t=As(null,t,r,e,n);break e;case 11:t=ks(null,t,r,e,n);break e;case 14:t=xs(null,t,r,ns(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,_s(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 1:return r=t.type,o=t.pendingProps,As(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 3:e:{if(Ls(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,Fa(e,t),qa(t,r,null,n);var s=t.memoizedState;if(r=s.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ps(e,t,r,n,o=cs(Error(a(423)),t));break e}if(r!==o){t=Ps(e,t,r,n,o=cs(Error(a(424)),t));break e}for(oa=co(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=xa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ha(),r===o){t=Qs(e,t,n);break e}ws(e,t,r,n)}t=t.child}return t;case 5:return Xa(t),null===e&&ua(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,no(r,o)?s=null:null!==i&&no(r,i)&&(t.flags|=32),Cs(e,t),ws(e,t,s,n),t.child;case 6:return null===e&&ua(t),null;case 13:return Bs(e,t,n);case 4:return Ya(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ka(t,null,r,n):ws(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ks(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 7:return ws(e,t,t.pendingProps,n),t.child;case 8:case 12:return ws(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,s=o.value,Ao(Sa,r._currentValue),r._currentValue=s,null!==i)if(sr(i.value,s)){if(i.children===o.children&&!Po.current){t=Qs(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var l=i.dependencies;if(null!==l){s=i.child;for(var c=l.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=Ma(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var d=(u=u.shared).pending;null===d?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),La(i.return,n,t),l.lanes|=n;break}c=c.next}}else if(10===i.tag)s=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(s=i.return))throw Error(a(341));s.lanes|=n,null!==(l=s.alternate)&&(l.lanes|=n),La(s,n,t),s=i.sibling}else s=i.child;if(null!==s)s.return=i;else for(s=i;null!==s;){if(s===t){s=null;break}if(null!==(i=s.sibling)){i.return=s.return,s=i;break}s=s.return}i=s}ws(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Pa(t,n),r=r(o=Ra(o)),t.flags|=1,ws(e,t,r,n),t.child;case 14:return o=ns(r=t.type,t.pendingProps),xs(e,t,r,o=ns(r.type,o),n);case 15:return Ss(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ns(r,o),qs(e,t),t.tag=1,No(r)?(e=!0,Bo(t)):e=!1,Pa(t,n),is(t,r,o),ls(t,r,o,n),Ts(null,t,r,!0,e,n);case 19:return Us(e,t,n);case 22:return Es(e,t,n)}throw Error(a(156,t.tag))};var Wc="function"==typeof reportError?reportError:function(e){console.error(e)};function Gc(e){this._internalRoot=e}function Kc(e){this._internalRoot=e}function Yc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xc(){}function Jc(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var s=o;o=function(){var e=Qc(i);s.call(e)}}qc(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Qc(i);a.call(e)}}var i=Uc(t,r,e,0,null,!1,0,"",Xc);return e._reactRootContainer=i,e[mo]=i.current,Ur(8===e.nodeType?e.parentNode:e),uc(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var s=r;r=function(){var e=Qc(l);s.call(e)}}var l=zc(e,0,!1,null,0,!1,0,"",Xc);return e._reactRootContainer=l,e[mo]=l.current,Ur(8===e.nodeType?e.parentNode:e),uc((function(){qc(t,l,n,r)})),l}(n,t,e,o,r);return Qc(i)}Kc.prototype.render=Gc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));qc(e,t,null,null)},Kc.prototype.unmount=Gc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;uc((function(){qc(null,e,null,null)})),t[mo]=null}},Kc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Nt.length&&0!==t&&t<Nt[n].priority;n++);Nt.splice(n,0,e),0===n&&Bt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),rc(t,Ze()),!(6&Tl)&&(Ul=Ze()+500,qo()))}break;case 13:uc((function(){var t=Ia(e,1);if(null!==t){var n=ec();nc(t,e,1,n)}})),Hc(e,1)}},xt=function(e){if(13===e.tag){var t=Ia(e,134217728);if(null!==t)nc(t,e,134217728,ec());Hc(e,134217728)}},St=function(e){if(13===e.tag){var t=tc(e),n=Ia(e,t);if(null!==n)nc(n,e,t,ec());Hc(e,t)}},Et=function(){return vt},Ct=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(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 o=xo(r);if(!o)throw Error(a(90));W(r),X(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Te=cc,Le=uc;var eu={usingClientEntryPoint:!1,Events:[wo,ko,xo,_e,Ae,cc]},tu={findFiberByHostInstance:vo,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nu={bundleType:tu.bundleType,version:tu.version,rendererPackageName:tu.rendererPackageName,rendererConfig:tu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ve(e))?null:e.stateNode},findFiberByHostInstance:tu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ru=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ru.isDisabled&&ru.supportsFiber)try{ot=ru.inject(nu),at=ru}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=eu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yc(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Yc(e))throw Error(a(299));var n=!1,r="",o=Wc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=zc(e,1,!1,null,0,n,0,r,o),e[mo]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Gc(t)},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(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return e=null===(e=Ve(t))?null:e.stateNode},t.flushSync=function(e){return uc(e)},t.hydrate=function(e,t,n){if(!Zc(t))throw Error(a(200));return Jc(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Yc(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,o=!1,i="",s=Wc;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(s=n.onRecoverableError)),t=Uc(t,null,e,1,null!=n?n:null,o,0,i,s),e[mo]=t.current,Ur(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Kc(t)},t.render=function(e,t,n){if(!Zc(t))throw Error(a(200));return Jc(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zc(e))throw Error(a(40));return!!e._reactRootContainer&&(uc((function(){Jc(null,null,e,!1,(function(){e._reactRootContainer=null,e[mo]=null}))})),!0)},t.unstable_batchedUpdates=cc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zc(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return Jc(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},5338:(e,t,n)=>{"use strict";var r=n(961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},961:(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(2551)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(!a(e[l],i[l]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(e[l]!==i[l])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((s=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(i,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],i[c[l]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>V});var r=n(6540),o=n(5556),a=n.n(o),i=n(115),s=n.n(i),l=n(311),c=n.n(l),u=n(2833),d=n.n(u);function p(){return p=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},p.apply(this,arguments)}function f(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,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}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)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={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]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=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=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},_=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},A=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),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},T=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 o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var s=a[i],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var s=a[i],l=p({},r[s],o[s]);r[s]=l}return e}),[]).reverse()},L=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},R=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}},j=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},N=[g.NOSCRIPT,g.SCRIPT,g.STYLE],O=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,"'")},I=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}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},B=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=D(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=I(n),a=P(t);return o?"<"+e+' data-rh="true" '+o+">"+O(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return B(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===N.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},M=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=R(e.metaTags,v),a=R(t,y),i=R(n,b);return{priorityMethods:{toComponent:function(){return[].concat(B(g.META,o.priority),B(g.LINK,a.priority),B(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);f=h.priorityMethods,u=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,u,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,p,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:l,titleAttributes:c},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=M({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),Q="undefined"!=typeof document,V=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);V.canUseDOM=Q,V.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},V.defaultProps={context:{}},V.displayName="HelmetProvider";var H=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),s=0;s<i.length;s+=1){var l=i[s],c=t[l]||"";n.getAttribute(l)!==c&&n.setAttribute(l,c),-1===o.indexOf(l)&&o.push(l);var u=a.indexOf(l);-1!==u&&a.splice(u,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},G=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;W(g.BODY,e.bodyAttributes),W(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),W(g.TITLE,t)}(u,d);var p={baseTag:H(g.BASE,n),linkTags:H(g.LINK,o),metaTags:H(g.META,a),noscriptTags:H(g.NOSCRIPT,i),scriptTags:H(g.SCRIPT,l),styleTags:H(g.STYLE,c)},f={},h={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)})),t&&t(),s(e,f,h)},K=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(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,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:A(["href"],e),bodyAttributes:_("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:_("htmlAttributes",e),linkTags:T(g.LINK,["rel","href"],e),metaTags:T(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:T(g.SCRIPT,["src","innerHTML"],e),styleTags:T(g.STYLE,["cssText"],e),title:E(e),titleAttributes:_("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});V.canUseDOM?(t=a,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){G(t,(function(){K=null}))})):(G(t),K=null)):M&&(o=M(a)),r(o)},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:q.isRequired},Y.displayName="HelmetDispatcher";var Z=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(j(this.props,"helmetData"),j(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 p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},o,((t={})[r.type]=i,t.titleAttributes=p({},a),t));case g.BODY:return p({},o,{bodyAttributes:p({},a)});case g.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(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."),c()(!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,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=m(r,Z),s=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,X),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(Y,p({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,p({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=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,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case a:case s:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case m:case l:return e;default:return t}}case o:return t}}}function x(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=o,t.Profiler=s,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===u},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===s||e===i||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}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(){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 s=n(6540),l=[],c=[];var u=s.createContext(null);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 p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.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 f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return l.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()})),p=d=function(t){function n(n){var r;return a(o(o(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&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.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?s.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}(s.Component),a(d,"contextType",u),p}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(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return s.createElement(u.Provider,{value:{report:this.props.report}},s.Children.only(this.props.children))},t}(s.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){y(l).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){y(c).then(e,e)}))},e.exports=m},2831:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>s});var r=n(6347),o=n(8168),a=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.dO,n,e.map((function(e,n){return a.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.A)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.A)({},n,t,{route:e}))}})}))):null}},4625:(e,t,n)=>{"use strict";n.d(t,{Kd:()=>u,N_:()=>g,k2:()=>v});var r=n(6347),o=n(2892),a=n(6540),i=n(9231),s=n(8168),l=n(8587),c=n(1561),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},f=function(e){return e},h=a.forwardRef;void 0===h&&(h=f);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,l.A)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,s.A)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==h&&t||n,a.createElement("a",u)}));var g=h((function(e,t){var n=e.component,o=void 0===n?m:n,u=e.replace,g=e.to,y=e.innerRef,b=(0,l.A)(e,["component","replace","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=e.history,r=p(d(g,e.location),e.location),l=r?n.createHref(r):"",m=(0,s.A)({},b,{href:l,navigate:function(){var t=d(g,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(p(t));(u||r?n.replace:n.push)(t)}});return f!==h?m.ref=t||y:m.innerRef=y,a.createElement(o,m)}))})),y=function(e){return e},b=a.forwardRef;void 0===b&&(b=y);var v=b((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,h=e.className,m=e.exact,v=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,C=e.innerRef,_=(0,l.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=w||e.location,i=p(d(E,n),n),l=i.pathname,A=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=A?(0,r.B6)(n.pathname,{path:A,exact:m,sensitive:k,strict:x}):null,L=!!(v?v(T,n):T),P="function"==typeof h?h(L):h,R="function"==typeof S?S(L):S;L&&(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,u),R=(0,s.A)({},R,f));var j=(0,s.A)({"aria-current":L&&o||null,className:P,style:R,to:i},_);return y!==b?j.ref=t||C:j.innerRef=C,a.createElement(g,j)}))}))},6347:(e,t,n)=>{"use strict";n.d(t,{B6:()=>L,Ix:()=>v,W6:()=>F,XZ:()=>b,dO:()=>D,qh:()=>P,rd:()=>C,zy:()=>M});var r=n(2892),o=n(6540),a=n(5556),i=n.n(a),s=n(9231),l=n(1561),c=n(8168),u=n(5302),d=n.n(u),p=(n(4363),n(8587)),f=(n(4146),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=o.createContext||function(e,t){var n,a,s="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),i=0;i<o;i++)a[i]=arguments[i];return(t=e.call.apply(e,[this].concat(a))||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.A)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);l.childContextTypes=((n={})[s]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){(0|e.observedBits)&n&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},o.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},o.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},o.getValue=function(){return this.context[s]?this.context[s].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return c.contextTypes=((a={})[s]=i().object,a),{Provider:l,Consumer:c}},g=function(e){var t=m();return t.displayName=e,t},y=g("Router-History"),b=g("Router"),v=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.A)(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 o.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(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}(o.Component);var k={},x=1e4,S=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(k[e])return k[e];var t=d().compile(e);return S<x&&(k[e]=t,S++),t}(e)(t,{pretty:!0})}function C(e){var t=e.computedMatch,n=e.to,r=e.push,a=void 0!==r&&r;return o.createElement(b.Consumer,null,(function(e){e||(0,l.A)(!1);var r=e.history,i=e.staticContext,u=a?r.push:r.replace,d=(0,s.yJ)(t?"string"==typeof n?E(n,t.params):(0,c.A)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(u(d),null):o.createElement(w,{onMount:function(){u(d)},onUpdate:function(e,t){var n=(0,s.yJ)(t.to);(0,s.Fu)(n,(0,c.A)({},d,{key:n.key}))||u(d)},to:n})}))}var _={},A=1e4,T=0;function L(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,s=void 0!==i&&i,l=n.sensitive,c=void 0!==l&&l;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=_[n]||(_[n]={});if(r[e])return r[e];var o=[],a={regexp:d()(e,o,t),keys:o};return T<A&&(r[e]=a,T++),a}(n,{end:a,strict:s,sensitive:c}),o=r.regexp,i=r.keys,l=o.exec(e);if(!l)return null;var u=l[0],p=l.slice(1),f=e===u;return a&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,l.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?L(n.pathname,e.props):t.match,a=(0,c.A)({},t,{location:n,match:r}),i=e.props,s=i.children,u=i.component,d=i.render;return Array.isArray(s)&&function(e){return 0===o.Children.count(e)}(s)&&(s=null),o.createElement(b.Provider,{value:a},a.match?s?"function"==typeof s?s(a):s:u?o.createElement(u,a):d?d(a):null:"function"==typeof s?s(a):null)}))},t}(o.Component);function R(e){return"/"===e.charAt(0)?e:"/"+e}function j(e,t){if(!e)return t;var n=R(e);return 0!==t.pathname.indexOf(n)?t:(0,c.A)({},t,{pathname:t.pathname.substr(n.length)})}function N(e){return"string"==typeof e?e:(0,s.AO)(e)}function O(e){return function(){(0,l.A)(!1)}}function I(){}o.Component;var D=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,l.A)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?L(a.pathname,(0,c.A)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var B=o.useContext;function F(){return B(y)}function M(){return B(b).location}},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},5287:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,m(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===a[o]&&(a[o]=l[o]);return{$$typeof:n,type:e,key:i,ref:s,props:a,_owner:S.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var A=/\/+/g;function T(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 L(e,t,o,a,i){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case n:case r:l=!0}}if(l)return i=i(l=e),e=""===a?"."+T(l,0):a,k(i)?(o="",null!=e&&(o=e.replace(A,"$&/")+"/"),L(i,t,o,"",(function(e){return e}))):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||l&&l.key===i.key?"":(""+i.key).replace(A,"$&/")+"/")+e)),t.push(i)),1;if(l=0,a=""===a?".":a+":",k(e))for(var c=0;c<e.length;c++){var u=a+T(s=e[c],c);l+=L(s,t,o,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(s=e.next()).done;)l+=L(s=s.value,t,o,u=a+T(s,c++),i);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function P(e,t,n){if(null==e)return e;var r=[],o=0;return L(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function R(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var j={current:null},N={transition:null},O={ReactCurrentDispatcher:j,ReactCurrentBatchConfig:N,ReactCurrentOwner:S};function I(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:P,forEach:function(e,t,n){P(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return P(e,(function(){t++})),t},toArray:function(e){return P(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=o,t.Profiler=i,t.PureComponent=v,t.StrictMode=a,t.Suspense=u,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.act=I,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=m({},e.props),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=S.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)x.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=r;else if(1<c){l=Array(c);for(var u=0;u<c;u++)l[u]=arguments[u+2];o.children=l}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:s}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:c,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:R}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=N.transition;N.transition={};try{e()}finally{N.transition=t}},t.unstable_act=I,t.useCallback=function(e,t){return j.current.useCallback(e,t)},t.useContext=function(e){return j.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return j.current.useDeferredValue(e)},t.useEffect=function(e,t){return j.current.useEffect(e,t)},t.useId=function(){return j.current.useId()},t.useImperativeHandle=function(e,t,n){return j.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return j.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return j.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return j.current.useMemo(e,t)},t.useReducer=function(e,t,n){return j.current.useReducer(e,t,n)},t.useRef=function(e){return j.current.useRef(e)},t.useState=function(e){return j.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return j.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return j.current.useTransition()},t.version="18.3.1"},6540:(e,t,n)=>{"use strict";e.exports=n(5287)},4848:(e,t,n)=>{"use strict";e.exports=n(1020)},7463:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o>>>1;r<i;){var s=2*(r+1)-1,l=e[s],c=s+1,u=e[c];if(0>a(l,n))c<o&&0>a(u,l)?(e[r]=u,e[c]=n,r=c):(e[r]=l,e[s]=n,r=s);else{if(!(c<o&&0>a(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}var c=[],u=[],d=1,p=null,f=3,h=!1,m=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(u);null!==t;){if(null===t.callback)o(u);else{if(!(t.startTime<=e))break;o(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function k(e){if(g=!1,w(e),!m)if(null!==r(c))m=!0,N(x);else{var t=r(u);null!==t&&O(k,t.startTime-e)}}function x(e,n){m=!1,g&&(g=!1,b(_),_=-1),h=!0;var a=f;try{for(w(n),p=r(c);null!==p&&(!(p.expirationTime>n)||e&&!L());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var s=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?p.callback=s:p===r(c)&&o(c),w(n)}else o(c);p=r(c)}if(null!==p)var l=!0;else{var d=r(u);null!==d&&O(k,d.startTime-n),l=!1}return l}finally{p=null,f=a,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,C=null,_=-1,A=5,T=-1;function L(){return!(t.unstable_now()-T<A)}function P(){if(null!==C){var e=t.unstable_now();T=e;var n=!0;try{n=C(!0,e)}finally{n?S():(E=!1,C=null)}}else E=!1}if("function"==typeof v)S=function(){v(P)};else if("undefined"!=typeof MessageChannel){var R=new MessageChannel,j=R.port2;R.port1.onmessage=P,S=function(){j.postMessage(null)}}else S=function(){y(P,0)};function N(e){C=e,E||(E=!0,S())}function O(e,n){_=y((function(){e(t.unstable_now())}),n)}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(){m||h||(m=!0,N(x))},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"):A=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0<a?i+a:i:a=i,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:d++,callback:o,priorityLevel:e,startTime:a,expirationTime:s=a+s,sortIndex:-1},a>i?(e.sortIndex=a,n(u,e),null===r(c)&&e===r(u)&&(g?(b(_),_=-1):g=!0,O(k,a-i))):(e.sortIndex=s,n(c,e),m||h||(m=!0,N(x))),e},t.unstable_shouldYield=L,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},9982:(e,t,n)=>{"use strict";e.exports=n(7463)},2833:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var c=a[l];if(!s(c))return!1;var u=e[c],d=t[c];if(!1===(o=n?n.call(r,u,d,c):void 0)||void 0===o&&u!==d)return!1}return!0}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Bitlayer",tagline:"The first Bitcoin security-equivalent Layer 2 based on BitVM",url:"https://docs.bitlayer.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/bitlayer.ico",organizationName:"bitlayer-org",projectName:"bitlayer-org.github.io",presets:[["classic",{docs:{routeBasePath:"docs",sidebarPath:"/home/runner/work/bitlayer-org.github.io/bitlayer-org.github.io/sidebars.js"},blog:{showReadingTime:!0},theme:{customCss:"/home/runner/work/bitlayer-org.github.io/bitlayer-org.github.io/src/css/custom.css"}}]],plugins:[["/home/runner/work/bitlayer-org.github.io/bitlayer-org.github.io/node_modules/@easyops-cn/docusaurus-search-local/dist/server/server/index.js",{hashed:!0}]],themeConfig:{initialColorMode:"dark",navbar:{title:"Bitlayer",logo:{alt:"Bitlayer Logo",src:"img/FA_Bitlayer-Logo.png"},items:[{to:"/docs/Introduction",position:"left",label:"Build Now",activeBaseRegex:"/docs/"},{href:"https://medium.com/@Bitlayer",label:"Blog",position:"left"},{href:"https://github.com/bitlayer-org",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Build Now",to:"/docs/Introduction"}]},{title:"Community",items:[{label:"Telegram",href:"https://t.me/bitlayerofficial"},{label:"Discord",href:"https://discord.com/invite/GGSjNyD8nj"},{label:"Twitter",href:"https://twitter.com/BitLayerLabs"}]},{title:"More",items:[{label:"Blog",href:"https://medium.com/@Bitlayer"},{label:"GitHub",href:"https://github.com/bitlayer-org"}]}],copyright:"Copyright \xa9 2024 Bitlayer"},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},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"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},8168:(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)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},2892:(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 o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8215:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},4876:(e,t,n)=>{"use strict";n.d(t,{My:()=>A,f4:()=>ee});var r,o,a,i,s,l,c,u=n(6540),d=n(8215),p=Object.create,f=Object.defineProperty,h=Object.defineProperties,m=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>h(e,g(t)),C=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},_=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(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 o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);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 o=e.classList;if(o.contains(t))return!0;if(o.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 o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(i[l]=n[l]);n.hasOwnProperty(s)||(i[s]=a[s])}var c=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],o||s);var l=t[s],c=r.util.type(l);"Object"!==c||a[i(l)]?"Array"!==c||a[i(l)]||(a[i(l)]=!0,e(l,n,s,a)):(a[i(l)]=!0,e(l,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new s;return l(o,o.head,e),i(e,o,t,o.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},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 o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,s,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var m=f[h],g=m.inside,y=!!m.lookbehind,b=!!m.greedy,v=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 k=m.pattern||m,x=s.next,S=u;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof o)){var C,_=1;if(b){if(!(C=a(k,S,e,y))||C.index>=e.length)break;var A=C.index,T=C.index+C[0].length,L=S;for(L+=x.value.length;A>=L;)L+=(x=x.next).value.length;if(S=L-=x.value.length,x.value instanceof o)continue;for(var P=x;P!==t.tail&&(L<T||"string"==typeof P.value);P=P.next)_++,L+=P.value.length;_--,E=e.slice(S,L),C.index-=S}else if(!(C=a(k,0,E,y)))continue;A=C.index;var R=C[0],j=E.slice(0,A),N=E.slice(A+R.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var I=x.prev;if(j&&(I=l(t,I,j),S+=j.length),c(t,I,_),x=l(t,I,new o(p,g?r.tokenize(R,g):R,v,R)),N&&l(t,x,N),_>1){var D={cause:p+","+h,reach:O};i(e,t,n,x.prev,S,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function s(){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 l(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function c(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={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(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var s="";for(var l in a.attributes)s+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+s+">"+a.content+"</"+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return o||(0,r[y(r)[0]])((o={exports:{}}).exports,o),o.exports}),A=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of y(t))w.call(e,o)||o===n||f(e,o,{get:()=>t[o],enumerable:!(r=m(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(_());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"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},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;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:A.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:A.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},A.languages.insertBefore("markup","cdata",t)}}),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,a=A,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},l="(?:[^\\\\-]|"+(s=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",l=RegExp(l+"-"+l),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:l,inside:{escape:s,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:s}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:s,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":c}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},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.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:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),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,A.languages.actionscript=A.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),A.languages.actionscript["class-name"].alias="function",delete A.languages.actionscript.parameter,delete A.languages.actionscript["literal-property"],A.languages.markup&&A.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:A.languages.markup}}),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=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s<l;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),r(i[s]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(A),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),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,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(A),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(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("\\[(?:[^[\\]\"']|"+t.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":[t,{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}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{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|RebeccaPurple|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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(A),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\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})),a=/"(?:[^"\\\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"(?:"+o+"|"+a+")"}))),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(a),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,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(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("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),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 o,a=t[n];"code"!==a.type?e(a.content):(o=a.content[1],a=a.content[3],o&&a&&"code-language"===o.type&&"code-block"===a.type&&"string"==typeof o.content&&(o=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),o="language-"+(o=(/[a-z][\w-]*/i.exec(o)||[""])[0].toLowerCase()),a.alias?"string"==typeof a.alias?a.alias=[a.alias,o]:a.alias.push(o):a.alias=[o]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r];if(a=/language-(.+)/.exec(a)){n=a[1];break}}var c,u=e.languages[n];u?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n)):s[t]||e})),u,n):n&&"none"!==n&&e.plugins.autoloader&&(c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),s={amp:"&",lt:"<",gt:">",quot:'"'},l=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 o=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),0<o.length)){var s=p(/^\{$/,/^\}$/);if(-1!==s)for(var l=n;l<s;l++){var c=t[l];"variable"===c.type&&0<=o.indexOf(c.content)&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],s=i.content;if("punctuation"===i.type&&"string"==typeof s)if(e.test(s))o++;else if(r.test(s)&&0==--o)return a}return-1}function f(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,o=r.inside["interpolation-punctuation"],a=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 s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function l(t,n,i){var l=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),c=0,u={},d=(l=s(l.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n})).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var a=0;a<n.length;a++){if(c>=d.length)return;var i,l,p,f,h,m,g,y=n[a];"string"==typeof y||"string"==typeof y.content?(i=d[c],-1!==(g=(m="string"==typeof y?y:y.content).indexOf(i))&&(++c,l=m.substring(0,g),h=u[i],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(h,f)).length&&((p=[1,1]).push.apply(p,s(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,h),f=m.substring(g+i.length),h=[],l&&h.push(l),h.push(p),f&&(t(m=[f]),h.push.apply(h,m)),"string"==typeof y?(n.splice.apply(n,[a,1].concat(h)),a+=h.length-1):y.content=h)):(g=y.content,Array.isArray(g)?t(g):t([g]))}}(l),new e.Token(i,l,"language-"+i,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 c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in c&&function t(n){for(var r=0,o=n.length;r<o;r++){var a,i,s,c=n[r];"string"!=typeof c&&(a=c.content,Array.isArray(a)?"template-string"===c.type?(c=a[1],3===a.length&&"string"!=typeof c&&"embedded-code"===c.type&&(i=u(c),c=c.alias,c=Array.isArray(c)?c[0]:c,s=e.languages[c])&&(a[1]=l(i,s,c))):t(a):"string"!=typeof a&&t([a]))}}(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){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(A),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(A),A.languages.n4js=A.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),A.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),A.languages.n4jsd=A.languages.n4js,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 o=n[r],a=e.languages.javascript[o];o=(a="RegExp"===e.util.type(a)?e.languages.javascript[o]={pattern:a}:a).inside||{};(a.inside=o)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(A),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;"string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===s(o.content[0].content[1])&&n.pop():"/>"!==o.content[o.content.length-1].content&&n.push({tagName:s(o.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&0<n.length&&0===n[n.length-1].openedBraces&&(a=s(o),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(a+=s(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(a=s(t[r-1])+a,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",a,null,a)),o.content&&"string"!=typeof o.content&&i(o.content)}}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\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:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var s=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(A),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(A),A.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},A.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=A.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(A),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,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.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){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(A),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){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),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;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>L,duotoneLight:()=>P,github:()=>R,jettwaveDark:()=>Q,jettwaveLight:()=>V,nightOwl:()=>j,nightOwlLight:()=>N,oceanicNext:()=>D,okaidia:()=>B,oneDark:()=>H,oneLight:()=>W,palenight:()=>F,shadesOfPurple:()=>M,synthwave84:()=>z,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},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)"}}]},L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},P={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},R={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},j={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},N={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",I="#8dc891",D={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},B={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},M={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},z={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},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)"}}]},Q={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},V={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},H={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},W={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},G=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},K=/\r\n|\r|\n/,Y=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,s=[];const l=[s];for(;i>-1;){for(;(a=r[i]++)<o[i];){let e,c=t[i];const u=n[i][a];if("string"==typeof u?(c=i>0?c:["plain"],e=u):(c=Z(c,u.type),u.alias&&(c=Z(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(K),p=d.length;s.push({types:c,content:d[0]});for(let t=1;t<p;t++)Y(s),l.push(s=[]),s.push({types:c,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),o.pop()}return Y(s),l},J=({children:e,language:t,code:n,theme:r,prism:o})=>{const a=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,u.useState)(G(t,e)),o=(0,u.useRef)(),a=(0,u.useRef)();return(0,u.useEffect)((()=>{t===o.current&&e===a.current||(o.current=t,a.current=e,r(G(t,e)))}),[e,t]),n})(a,r),s=(e=>(0,u.useCallback)((t=>{var n=t,{className:r,style:o,line:a}=n,i=C(n,["className","style","line"]);const s=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(s.style=e.plain),"object"==typeof o&&(s.style=S(S({},s.style||{}),o)),s}),[e]))(i),l=(e=>{const t=(0,u.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,u.useCallback)((e=>{var n=e,{token:r,className:o,style:a}=n,i=C(n,["token","className","style"]);const s=E(S({},i),{className:(0,d.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(s.style=S(S({},s.style||{}),a)),s}),[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>{const o=(0,u.useRef)(e);return(0,u.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return o.current.hooks.run("before-tokenize",e),e.tokens=o.current.tokenize(t,n),o.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:o,language:a,code:n,grammar:o.languages[a]});return e({tokens:c,className:`prism-code language-${a}`,style:null!=i?i.root:{},getLineProps:s,getTokenProps:l})},ee=e=>(0,u.createElement)(J,E(S({},e),{prism:e.prism||A,theme:e.theme||U,code:e.code,language:e.language}))},5066:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/blog-007":{"__comp":"a6aa9e1f","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"15315605"}],"__props":"53a3e6dc"},"/blog/archive-245":{"__comp":"9e4087bc","__context":{"plugin":"36994c47"},"__props":"25003e4f"},"/blog/Bitlayer: Amplifying Bitcoin-ceb":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"94da5579"},"/blog/tags-4c4":{"__comp":"01a85c17","__context":{"plugin":"36994c47"},"sidebar":"814f3328","__props":"41756ce8"},"/blog/tags/hello-bitlayer-b08":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"15315605"}],"__props":"0979cdad"},"/markdown-page-3d7":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"393be207"},"/search-822":{"__comp":"1a4e3797","__context":{"plugin":"138e0e15"}},"/docs-2bc":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs-a06":{"__comp":"a7bd4aaa","__props":"7c110bd0"},"/docs-bf0":{"__comp":"a94703ab"},"/docs/Bitlayer Scan APIs/Accounts-051":{"__comp":"17896441","content":"068d31a7"},"/docs/Bitlayer Scan APIs/Blocks-593":{"__comp":"17896441","content":"ef566535"},"/docs/Bitlayer Scan APIs/Contracts-920":{"__comp":"17896441","content":"494fd248"},"/docs/Bitlayer Scan APIs/Logs-66d":{"__comp":"17896441","content":"aaa1c66f"},"/docs/Bitlayer Scan APIs/Tokens-917":{"__comp":"17896441","content":"7d70e263"},"/docs/Bitlayer Scan APIs/Transactions-b9d":{"__comp":"17896441","content":"f6c83f90"},"/docs/BitlayerArchitecture/BitlayerDesign-4b5":{"__comp":"17896441","content":"b2c52ba9"},"/docs/BitlayerArchitecture/LVM-e06":{"__comp":"17896441","content":"91907527"},"/docs/BitlayerArchitecture/TransactionLifecycle-362":{"__comp":"17896441","content":"1cbcec10"},"/docs/BitlayerNetwork/AboutGas-c6e":{"__comp":"17896441","content":"f8691577"},"/docs/BitlayerNetwork/Bridges-5fd":{"__comp":"17896441","content":"79f3b2bb"},"/docs/BitlayerNetwork/Contracts-69c":{"__comp":"17896441","content":"09a35e94"},"/docs/BitlayerNetwork/Json-RPC-4ee":{"__comp":"17896441","content":"3af9b51d"},"/docs/BitlayerNetwork/Networks-563":{"__comp":"17896441","content":"5a0b0ff1"},"/docs/BitlayerNetwork/PegTokens-ecb":{"__comp":"17896441","content":"97338e48"},"/docs/Build/Compile and Run-ccc":{"__comp":"17896441","content":"182ba0de"},"/docs/Build/QuickStart-014":{"__comp":"17896441","content":"fba826a7"},"/docs/category/bitlayer-architecture-f26":{"__comp":"14eb3368","__props":"487d435a"},"/docs/category/bitlayer-network-89d":{"__comp":"14eb3368","__props":"7bed6d4c"},"/docs/category/bitlayer-scan-apis-35c":{"__comp":"14eb3368","__props":"6586b5a6"},"/docs/category/developer-resources-17d":{"__comp":"14eb3368","__props":"8b04bfe9"},"/docs/category/faqs-a91":{"__comp":"14eb3368","__props":"c8dfcdb7"},"/docs/category/getting-started-254":{"__comp":"14eb3368","__props":"38295533"},"/docs/category/introduction-30c":{"__comp":"14eb3368","__props":"11f1d9fa"},"/docs/DeveloperResources/Block Explorers-7d0":{"__comp":"17896441","content":"1f9bfb41"},"/docs/DeveloperResources/BTC Connect-fd4":{"__comp":"17896441","content":"790d882a"},"/docs/DeveloperResources/Faucets-806":{"__comp":"17896441","content":"3b705731"},"/docs/DeveloperResources/Subgraph-646":{"__comp":"17896441","content":"d2eb7327"},"/docs/DeveloperResources/TheGraph-9b5":{"__comp":"17896441","content":"f220d995"},"/docs/DeveloperResources/Wallets-77d":{"__comp":"17896441","content":"3673f061"},"/docs/FAQs/Contact Details-02d":{"__comp":"17896441","content":"c8ff74a9"},"/docs/FAQs/Defillama TVL integration-737":{"__comp":"17896441","content":"928ec736"},"/docs/FAQs/Frequently asked questions-861":{"__comp":"17896441","content":"6840a158"},"/docs/FAQs/WBTC-e75":{"__comp":"17896441","content":"c525c73d"},"/docs/Introduction/-278":{"__comp":"17896441","content":"25f9780a"},"/docs/Introduction/AboutBitlayer-077":{"__comp":"17896441","content":"a51f749a"},"/docs/Introduction/BitlayerVsEth-318":{"__comp":"17896441","content":"d1d3f8b1"},"/docs/Introduction/BitVM-185":{"__comp":"17896441","content":"d5bbf5a4"},"/docs/Introduction/Roadmap-52c":{"__comp":"17896441","content":"7ae85faa"},"/docs/Introduction/TechnicalArchitecture-944":{"__comp":"17896441","content":"17794634"},"/-2e1":{"__comp":"c4f5d8e4","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[1869],(()=>{return t=8536,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.e8b09af2.js.LICENSE.txt b/assets/js/main.e8b09af2.js.LICENSE.txt new file mode 100644 index 00000000..5b49ae63 --- /dev/null +++ b/assets/js/main.e8b09af2.js.LICENSE.txt @@ -0,0 +1,126 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.eac83881.js b/assets/js/runtime~main.eac83881.js deleted file mode 100644 index 268c27f7..00000000 --- a/assets/js/runtime~main.eac83881.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";var e,t,f,a,n,c={},r={};function d(e){var t=r[e];if(void 0!==t)return t.exports;var f=r[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,d),f.loaded=!0,f.exports}d.m=c,d.c=r,e=[],d.O=function(t,f,a,n){if(!f){var c=1/0;for(u=0;u<e.length;u++){f=e[u][0],a=e[u][1],n=e[u][2];for(var r=!0,b=0;b<f.length;b++)(!1&n||c>=n)&&Object.keys(d.O).every((function(e){return d.O[e](f[b])}))?f.splice(b--,1):(r=!1,n<c&&(c=n));if(r){e.splice(u--,1);var o=a();void 0!==o&&(t=o)}}return t}n=n||0;for(var u=e.length;u>0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[f,a,n]},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},f=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var n=Object.create(null);d.r(n);var c={};t=t||[null,f({}),f([]),f(f)];for(var r=2&a&&e;"object"==typeof r&&!~t.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},d.d(n,c),n},d.d=function(e,t){for(var f in t)d.o(t,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:t[f]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce((function(t,f){return d.f[f](e,t),t}),[]))},d.u=function(e){return"assets/js/"+({53:"935f2afb",328:"7868b092",511:"d1d3f8b1",533:"b2b675dd",623:"928ec736",837:"97338e48",914:"c889d586",1477:"b2f554cd",1713:"a7023ddc",1760:"c4fdee62",2e3:"aaa1c66f",2179:"94da5579",2234:"77aa6ee4",2315:"7ae85faa",2535:"814f3328",2670:"f8691577",3085:"1f391b9e",3089:"a6aa9e1f",3146:"7d70e263",3245:"52addc0b",3377:"91907527",3573:"068d31a7",3608:"9e4087bc",3789:"3b705731",4013:"01a85c17",4195:"c4f5d8e4",4316:"d5bbf5a4",5096:"25f9780a",5444:"f220d995",5491:"494fd248",5519:"1f9bfb41",5529:"c525c73d",5714:"79bd6113",5800:"3af9b51d",5931:"09a35e94",6103:"ccc49370",6226:"0b58a425",6577:"f6c83f90",6922:"1cbcec10",7020:"ecc6b621",7401:"182ba0de",7414:"393be207",7525:"79f3b2bb",7600:"a51f749a",7834:"790d882a",7879:"fba826a7",7918:"17896441",7924:"5a0b0ff1",8107:"3673f061",8236:"6840a158",8610:"6875c492",8745:"15315605",8746:"ef566535",8864:"c8ff74a9",8994:"d2eb7327",9222:"b2c52ba9",9514:"1be78505",9581:"1b2e8bb4",9641:"17794634",9817:"14eb3368"}[e]||e)+"."+{53:"fb88e009",328:"3df1308f",511:"4a2803bc",533:"87d30f11",623:"3b0d8bb9",837:"37ff82c0",914:"7c8b1f7a",1477:"6d806d8a",1713:"4c2d804d",1760:"68113f91",2e3:"202c94a7",2179:"e576847f",2234:"72c66fd5",2315:"6df24cc9",2535:"d37ce2d2",2670:"1bebd337",3085:"ec33a90a",3089:"94e0aa18",3146:"e971e6bd",3245:"d58a8762",3377:"1517a664",3573:"18a478de",3608:"49f3d38a",3789:"128f830d",4013:"346af85a",4195:"b9cc87af",4316:"82df1ca8",4608:"8a1af423",5096:"4e9ee850",5444:"ed12d333",5491:"e87b9bca",5519:"baf83cd5",5529:"b78fbef1",5714:"de680851",5800:"37e168b0",5897:"f7d14cb1",5931:"8a60e953",6103:"a26eb8ad",6226:"57bf7971",6577:"f9b9ee36",6922:"e770e789",7020:"ae884017",7401:"80e495a7",7414:"7d8576b6",7525:"2db670d8",7600:"9de8f457",7834:"222ade33",7879:"4223f169",7918:"3f80dc10",7924:"e0173451",8107:"01f39356",8236:"f72e9360",8610:"ff05127d",8745:"369a571d",8746:"d73fa9a4",8864:"52a0f294",8994:"80b5ddde",9222:"3fa9113a",9514:"f8bc29db",9581:"9d81a37e",9641:"98e54728",9817:"b5cbeff1"}[e]+".js"},d.miniCssF=function(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=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a={},n="website:",d.l=function(e,t,f,c){if(a[e])a[e].push(t);else{var r,b;if(void 0!==f)for(var o=document.getElementsByTagName("script"),u=0;u<o.length;u++){var i=o[u];if(i.getAttribute("src")==e||i.getAttribute("data-webpack")==n+f){r=i;break}}r||(b=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,d.nc&&r.setAttribute("nonce",d.nc),r.setAttribute("data-webpack",n+f),r.src=e),a[e]=[t];var l=function(t,f){r.onerror=r.onload=null,clearTimeout(s);var n=a[e];if(delete a[e],r.parentNode&&r.parentNode.removeChild(r),n&&n.forEach((function(e){return e(f)})),t)return t(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),b&&document.head.appendChild(r)}},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={15315605:"8745",17794634:"9641",17896441:"7918",91907527:"3377","935f2afb":"53","7868b092":"328",d1d3f8b1:"511",b2b675dd:"533","928ec736":"623","97338e48":"837",c889d586:"914",b2f554cd:"1477",a7023ddc:"1713",c4fdee62:"1760",aaa1c66f:"2000","94da5579":"2179","77aa6ee4":"2234","7ae85faa":"2315","814f3328":"2535",f8691577:"2670","1f391b9e":"3085",a6aa9e1f:"3089","7d70e263":"3146","52addc0b":"3245","068d31a7":"3573","9e4087bc":"3608","3b705731":"3789","01a85c17":"4013",c4f5d8e4:"4195",d5bbf5a4:"4316","25f9780a":"5096",f220d995:"5444","494fd248":"5491","1f9bfb41":"5519",c525c73d:"5529","79bd6113":"5714","3af9b51d":"5800","09a35e94":"5931",ccc49370:"6103","0b58a425":"6226",f6c83f90:"6577","1cbcec10":"6922",ecc6b621:"7020","182ba0de":"7401","393be207":"7414","79f3b2bb":"7525",a51f749a:"7600","790d882a":"7834",fba826a7:"7879","5a0b0ff1":"7924","3673f061":"8107","6840a158":"8236","6875c492":"8610",ef566535:"8746",c8ff74a9:"8864",d2eb7327:"8994",b2c52ba9:"9222","1be78505":"9514","1b2e8bb4":"9581","14eb3368":"9817"}[e]||e,d.p+d.u(e)},function(){var e={1303:0,532:0};d.f.j=function(t,f){var a=d.o(e,t)?e[t]:void 0;if(0!==a)if(a)f.push(a[2]);else if(/^(1303|532)$/.test(t))e[t]=0;else{var n=new Promise((function(f,n){a=e[t]=[f,n]}));f.push(a[2]=n);var c=d.p+d.u(t),r=new Error;d.l(c,(function(f){if(d.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var n=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;r.message="Loading chunk "+t+" failed.\n("+n+": "+c+")",r.name="ChunkLoadError",r.type=n,r.request=c,a[1](r)}}),"chunk-"+t,t)}},d.O.j=function(t){return 0===e[t]};var t=function(t,f){var a,n,c=f[0],r=f[1],b=f[2],o=0;if(c.some((function(t){return 0!==e[t]}))){for(a in r)d.o(r,a)&&(d.m[a]=r[a]);if(b)var u=b(d)}for(t&&t(f);o<c.length;o++)n=c[o],d.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return d.O(u)},f=self.webpackChunkwebsite=self.webpackChunkwebsite||[];f.forEach(t.bind(null,0)),f.push=t.bind(null,f.push.bind(f))}()}(); \ No newline at end of file diff --git a/assets/js/runtime~main.f613a7b1.js b/assets/js/runtime~main.f613a7b1.js new file mode 100644 index 00000000..05b7afc3 --- /dev/null +++ b/assets/js/runtime~main.f613a7b1.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({238:"d5bbf5a4",744:"0979cdad",893:"b2c52ba9",988:"fba826a7",1178:"5a0b0ff1",1235:"a7456010",1564:"17794634",1903:"acecf23e",2044:"97338e48",2089:"c8ff74a9",2138:"1a4e3797",2198:"f6c83f90",2547:"09a35e94",2634:"c4f5d8e4",2677:"38295533",2711:"9e4087bc",2838:"25003e4f",3014:"928ec736",3047:"7d70e263",3079:"8b04bfe9",3249:"ccc49370",3775:"a51f749a",3965:"068d31a7",4134:"393be207",4258:"7bed6d4c",4409:"1cbcec10",4570:"79f3b2bb",4813:"6875c492",4817:"15315605",4842:"182ba0de",4921:"138e0e15",4960:"3af9b51d",5338:"494fd248",5450:"f220d995",5599:"91907527",5675:"94da5579",5742:"aba21aa0",5872:"d1d3f8b1",6061:"1f391b9e",6261:"53a3e6dc",6877:"7c110bd0",6879:"7ae85faa",6969:"14eb3368",6999:"c525c73d",7098:"a7bd4aaa",7120:"c8dfcdb7",7168:"11f1d9fa",7204:"ef566535",7358:"1f9bfb41",7472:"814f3328",7643:"a6aa9e1f",7745:"3b705731",8076:"aaa1c66f",8209:"01a85c17",8379:"487d435a",8401:"17896441",8532:"6840a158",8751:"d2eb7327",8760:"6586b5a6",9038:"f8691577",9048:"a94703ab",9115:"3673f061",9616:"41756ce8",9647:"5e95c892",9858:"36994c47",9880:"790d882a",9987:"25f9780a"}[e]||e)+"."+{238:"e800493d",489:"ca291d9d",744:"943be056",893:"188ae51a",988:"5b6fcab2",1178:"6f03b7de",1235:"7b4b0a20",1564:"f7e03a2b",1903:"dee0de35",2044:"07fae36b",2089:"882c7c5f",2138:"6361429b",2198:"607bf363",2237:"edb2a628",2547:"50140cc7",2634:"8a849516",2677:"2c25da60",2711:"67af21bd",2838:"436fc698",3014:"f4e7f224",3047:"b2c3f897",3079:"9ee5d5e4",3242:"66d2938b",3249:"4b4e889f",3775:"6b72e8c7",3965:"7fdc3f95",4134:"04252398",4258:"53625629",4409:"59ec610b",4570:"a0866e17",4813:"6668a9b4",4817:"74ef1dbe",4842:"96275d43",4921:"15c94c1b",4960:"ec023a01",5338:"90f18b99",5450:"04f0b383",5599:"151a4edc",5675:"0845ba24",5741:"12a31c5f",5742:"9ac6642b",5872:"e18fe561",6061:"ef23cbe3",6261:"7a1dee32",6877:"177d4f76",6879:"9636a534",6969:"035b0c1a",6999:"ecec140d",7098:"7d720c94",7120:"9822ccf4",7168:"93d58235",7204:"08b94712",7358:"d800a629",7472:"eed0bcc8",7643:"2d8de9ae",7745:"2e49213d",8076:"7cebd3dc",8209:"925e7860",8379:"d6eb9896",8401:"13696d18",8498:"0b53c050",8532:"628ad254",8751:"a234a950",8760:"a620ace9",9038:"92af7809",9048:"72f53bdb",9115:"2151b35d",9616:"096e4a09",9647:"c6dae288",9858:"8f17e7f5",9880:"5c5947c9",9987:"0af53055"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="website:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)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")==d+c){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={15315605:"4817",17794634:"1564",17896441:"8401",38295533:"2677",91907527:"5599",d5bbf5a4:"238","0979cdad":"744",b2c52ba9:"893",fba826a7:"988","5a0b0ff1":"1178",a7456010:"1235",acecf23e:"1903","97338e48":"2044",c8ff74a9:"2089","1a4e3797":"2138",f6c83f90:"2198","09a35e94":"2547",c4f5d8e4:"2634","9e4087bc":"2711","25003e4f":"2838","928ec736":"3014","7d70e263":"3047","8b04bfe9":"3079",ccc49370:"3249",a51f749a:"3775","068d31a7":"3965","393be207":"4134","7bed6d4c":"4258","1cbcec10":"4409","79f3b2bb":"4570","6875c492":"4813","182ba0de":"4842","138e0e15":"4921","3af9b51d":"4960","494fd248":"5338",f220d995:"5450","94da5579":"5675",aba21aa0:"5742",d1d3f8b1:"5872","1f391b9e":"6061","53a3e6dc":"6261","7c110bd0":"6877","7ae85faa":"6879","14eb3368":"6969",c525c73d:"6999",a7bd4aaa:"7098",c8dfcdb7:"7120","11f1d9fa":"7168",ef566535:"7204","1f9bfb41":"7358","814f3328":"7472",a6aa9e1f:"7643","3b705731":"7745",aaa1c66f:"8076","01a85c17":"8209","487d435a":"8379","6840a158":"8532",d2eb7327:"8751","6586b5a6":"8760",f8691577:"9038",a94703ab:"9048","3673f061":"9115","41756ce8":"9616","5e95c892":"9647","36994c47":"9858","790d882a":"9880","25f9780a":"9987"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunkwebsite=self.webpackChunkwebsite||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})(); \ No newline at end of file diff --git a/blog/Bitlayer: Amplifying Bitcoin/index.html b/blog/Bitlayer: Amplifying Bitcoin/index.html index 89454eaa..09388139 100644 --- a/blog/Bitlayer: Amplifying Bitcoin/index.html +++ b/blog/Bitlayer: Amplifying Bitcoin/index.html @@ -1,29 +1,69 @@ <!doctype html> -<html lang="en" dir="ltr"> +<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false"> <head> <meta charset="UTF-8"> -<meta name="viewport" content="width=device-width,initial-scale=1"> -<meta name="generator" content="Docusaurus v2.0.0-beta.16"> -<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Bitlayer RSS Feed"> -<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Bitlayer Atom Feed"><title data-rh="true">Bitlayer: Amplifying Bitcoin | Bitlayer - - + +Bitlayer: Amplifying Bitcoin | Bitlayer + + + -
-

Bitlayer: Amplifying Bitcoin

· 10 min read
Bitlayer

Bitcoin is changing. Drastically.

And the Bitcoin halving is less than 60 days away….

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

Increased security from innumerable new transaction fees (especially as mining rewards decrease) +

Bitlayer: Amplifying Bitcoin

· 10 min read
Bitlayer
The First Bitcoin security - equivalent Layer 2 based on BitVM.

Bitcoin is changing. Drastically.

+

And the Bitcoin halving is less than 60 days away….

+

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

+

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

+

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

+

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

+

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

+

Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive -Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

Though, their path is not easy.

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

Welcome to Bitlayer.

Bitlayer’s Mission -Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

Is Bitlayer the Next Big Thing for Bitcoin? -BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

The project’s tech team has abstracted three key tasks from these inspirations:

Trustless entry and exit of Layer 1 assets +Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

+

Though, their path is not easy.

+

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

+

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

+

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

+

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

+

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

+

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

+

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

+

Welcome to Bitlayer.

+

Bitlayer’s Mission +Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

+

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

+

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

+

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

+

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

+

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

+

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

+

Is Bitlayer the Next Big Thing for Bitcoin? +BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

+

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

+

The project’s tech team has abstracted three key tasks from these inspirations:

+

Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions -The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

Above is an outline of preliminary ideation for Bitlayer.

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

Bitlayer is Making History on Bitcoin -Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

Bitcoin has been left in the corner so far. But things might soon change.

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

- - +The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

+

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

+

Above is an outline of preliminary ideation for Bitlayer.

+

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

+

Bitlayer is Making History on Bitcoin +Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

+

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

+

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

+

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

+

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

+

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

+

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

+

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

+

Bitcoin has been left in the corner so far. But things might soon change.

+

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

+

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

\ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html index bb17f66a..f8ee4afe 100644 --- a/blog/archive/index.html +++ b/blog/archive/index.html @@ -1,18 +1,14 @@ - + - - - -Archive | Bitlayer - - + +Archive | Bitlayer + + + - - - + \ No newline at end of file diff --git a/blog/atom.xml b/blog/atom.xml index 227d527c..dfc553f5 100644 --- a/blog/atom.xml +++ b/blog/atom.xml @@ -9,22 +9,66 @@ https://docs.bitlayer.org/img/bitlayer.ico <![CDATA[Bitlayer: Amplifying Bitcoin]]> - Bitlayer: Amplifying Bitcoin + https://docs.bitlayer.org/blog/Bitlayer: Amplifying Bitcoin 2024-03-01T00:00:00.000Z - Bitcoin is changing. Drastically.

And the Bitcoin halving is less than 60 days away….

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

Increased security from innumerable new transaction fees (especially as mining rewards decrease) + Bitcoin is changing. Drastically.

+

And the Bitcoin halving is less than 60 days away….

+

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

+

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

+

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

+

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

+

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

+

Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive -Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

Though, their path is not easy.

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

Welcome to Bitlayer.

Bitlayer’s Mission -Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

Is Bitlayer the Next Big Thing for Bitcoin? -BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

The project’s tech team has abstracted three key tasks from these inspirations:

Trustless entry and exit of Layer 1 assets +Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

+

Though, their path is not easy.

+

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

+

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

+

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

+

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

+

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

+

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

+

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

+

Welcome to Bitlayer.

+

Bitlayer’s Mission +Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

+

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

+

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

+

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

+

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

+

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

+

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

+

Is Bitlayer the Next Big Thing for Bitcoin? +BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

+

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

+

The project’s tech team has abstracted three key tasks from these inspirations:

+

Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions -The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

Above is an outline of preliminary ideation for Bitlayer.

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

Bitlayer is Making History on Bitcoin -Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

Bitcoin has been left in the corner so far. But things might soon change.

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

]]>
+The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

+

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

+

Above is an outline of preliminary ideation for Bitlayer.

+

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

+

Bitlayer is Making History on Bitcoin +Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

+

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

+

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

+

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

+

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

+

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

+

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

+

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

+

Bitcoin has been left in the corner so far. But things might soon change.

+

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

+

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

]]> Bitlayer https://medium.com/@Bitlayer diff --git a/blog/index.html b/blog/index.html index 8c502165..8e80f345 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,29 +1,69 @@ - + - - - -Blog | Bitlayer - - + +Blog | Bitlayer + + + -
-

· 10 min read
Bitlayer

Bitcoin is changing. Drastically.

And the Bitcoin halving is less than 60 days away….

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

Increased security from innumerable new transaction fees (especially as mining rewards decrease) +

Bitlayer: Amplifying Bitcoin

· 10 min read
Bitlayer
The First Bitcoin security - equivalent Layer 2 based on BitVM.

Bitcoin is changing. Drastically.

+

And the Bitcoin halving is less than 60 days away….

+

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

+

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

+

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

+

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

+

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

+

Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive -Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

Though, their path is not easy.

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

Welcome to Bitlayer.

Bitlayer’s Mission -Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

Is Bitlayer the Next Big Thing for Bitcoin? -BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

The project’s tech team has abstracted three key tasks from these inspirations:

Trustless entry and exit of Layer 1 assets +Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

+

Though, their path is not easy.

+

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

+

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

+

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

+

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

+

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

+

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

+

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

+

Welcome to Bitlayer.

+

Bitlayer’s Mission +Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

+

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

+

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

+

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

+

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

+

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

+

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

+

Is Bitlayer the Next Big Thing for Bitcoin? +BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

+

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

+

The project’s tech team has abstracted three key tasks from these inspirations:

+

Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions -The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

Above is an outline of preliminary ideation for Bitlayer.

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

Bitlayer is Making History on Bitcoin -Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

Bitcoin has been left in the corner so far. But things might soon change.

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

- - +The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

+

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

+

Above is an outline of preliminary ideation for Bitlayer.

+

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

+

Bitlayer is Making History on Bitcoin +Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

+

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

+

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

+

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

+

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

+

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

+

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

+

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

+

Bitcoin has been left in the corner so far. But things might soon change.

+

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

+

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

\ No newline at end of file diff --git a/blog/rss.xml b/blog/rss.xml index de15c937..5e953290 100644 --- a/blog/rss.xml +++ b/blog/rss.xml @@ -7,24 +7,69 @@ Fri, 01 Mar 2024 00:00:00 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed + en <![CDATA[Bitlayer: Amplifying Bitcoin]]> https://docs.bitlayer.org/blog/Bitlayer: Amplifying Bitcoin - Bitlayer: Amplifying Bitcoin + https://docs.bitlayer.org/blog/Bitlayer: Amplifying Bitcoin Fri, 01 Mar 2024 00:00:00 GMT - Bitcoin is changing. Drastically.

And the Bitcoin halving is less than 60 days away….

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

Increased security from innumerable new transaction fees (especially as mining rewards decrease) + Bitcoin is changing. Drastically.

+

And the Bitcoin halving is less than 60 days away….

+

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

+

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

+

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

+

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

+

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

+

Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive -Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

Though, their path is not easy.

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

Welcome to Bitlayer.

Bitlayer’s Mission -Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

Is Bitlayer the Next Big Thing for Bitcoin? -BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

The project’s tech team has abstracted three key tasks from these inspirations:

Trustless entry and exit of Layer 1 assets +Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

+

Though, their path is not easy.

+

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

+

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

+

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

+

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

+

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

+

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

+

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

+

Welcome to Bitlayer.

+

Bitlayer’s Mission +Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

+

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

+

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

+

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

+

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

+

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

+

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

+

Is Bitlayer the Next Big Thing for Bitcoin? +BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

+

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

+

The project’s tech team has abstracted three key tasks from these inspirations:

+

Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions -The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

Above is an outline of preliminary ideation for Bitlayer.

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

Bitlayer is Making History on Bitcoin -Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

Bitcoin has been left in the corner so far. But things might soon change.

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

]]>
+The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

+

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

+

Above is an outline of preliminary ideation for Bitlayer.

+

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

+

Bitlayer is Making History on Bitcoin +Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

+

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

+

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

+

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

+

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

+

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

+

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

+

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

+

Bitcoin has been left in the corner so far. But things might soon change.

+

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

+

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

]]> Hello Bitlayer
diff --git a/blog/tags/hello-bitlayer/index.html b/blog/tags/hello-bitlayer/index.html index eff27c36..197b71e7 100644 --- a/blog/tags/hello-bitlayer/index.html +++ b/blog/tags/hello-bitlayer/index.html @@ -1,29 +1,69 @@ - + - - - -One post tagged with "Hello Bitlayer" | Bitlayer - - + +One post tagged with "Hello Bitlayer" | Bitlayer + + + -
-

One post tagged with "Hello Bitlayer"

View All Tags

· 10 min read
Bitlayer

Bitcoin is changing. Drastically.

And the Bitcoin halving is less than 60 days away….

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

Increased security from innumerable new transaction fees (especially as mining rewards decrease) +

One post tagged with "Hello Bitlayer"

View All Tags

Bitlayer: Amplifying Bitcoin

· 10 min read
Bitlayer
The First Bitcoin security - equivalent Layer 2 based on BitVM.

Bitcoin is changing. Drastically.

+

And the Bitcoin halving is less than 60 days away….

+

A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin.

+

But at this point, if you don’t at least understand the trade-offs, then you’re not listening.

+

Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology.

+

Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024.

+

It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely:

+

Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive -Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

Though, their path is not easy.

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

Welcome to Bitlayer.

Bitlayer’s Mission -Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

Is Bitlayer the Next Big Thing for Bitcoin? -BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

The project’s tech team has abstracted three key tasks from these inspirations:

Trustless entry and exit of Layer 1 assets +Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in.

+

Though, their path is not easy.

+

For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum.

+

The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions.

+

The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key.

+

A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form.

+

In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer.

+

“As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu.

+

A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy.

+

Welcome to Bitlayer.

+

Bitlayer’s Mission +Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin.

+

“Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer.

+

With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale.

+

Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head.

+

Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network.

+

The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision.

+

Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN.

+

Is Bitlayer the Next Big Thing for Bitcoin? +BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation.

+

Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine).

+

The project’s tech team has abstracted three key tasks from these inspirations:

+

Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions -The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

Above is an outline of preliminary ideation for Bitlayer.

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

Bitlayer is Making History on Bitcoin -Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

Bitcoin has been left in the corner so far. But things might soon change.

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

- - +The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications).

+

Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users.

+

Above is an outline of preliminary ideation for Bitlayer.

+

Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline.

+

Bitlayer is Making History on Bitcoin +Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s.

+

At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution.

+

Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM.

+

Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve.

+

A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team.

+

Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step.

+

With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem?

+

Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network?

+

Bitcoin has been left in the corner so far. But things might soon change.

+

Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.”

+

Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.

\ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index 4f315895..35e70831 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -1,18 +1,14 @@ - + - - - -Tags | Bitlayer - - + +Tags | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Accounts/index.html b/docs/Bitlayer Scan APIs/Accounts/index.html index 1a3a8c49..36eda3c3 100644 --- a/docs/Bitlayer Scan APIs/Accounts/index.html +++ b/docs/Bitlayer Scan APIs/Accounts/index.html @@ -1,21 +1,103 @@ - + - - - -Accounts | Bitlayer - - + +Accounts | Bitlayer + + + -
-

Accounts

Endpoint URLs

NetworkURL
Mainnethttps://api.btrscan.com/scan/api
Testnethttps://api-testnet.bitlayer.org/scan/api

Get BTC Balance for a single address

Returns the BTC balance of a given address.

https://api.btrscan.com/scan/api
?module=account
&action=balance
&address=0xe7564c607c663e5784031229570cbd47290dd87f

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check balance

Get BTC Balance for multiple addresses in a single call

Returns the balance of the accounts from a list of addresses.

https://api.btrscan.com/scan/api
?module=account
&action=balancemulti
&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check balance,separated by , up to 20 addresses in a single batch

Get a list of 'Normal' Transactions By Address

Returns the list of transactions performed by an address, with optional pagination. -[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

tip

Returns up to a maximum of the last 10000 transactions only

https://api.btrscan.com/scan/api
?module=account
&action=txlist
&address=0xe7564c607c663e5784031229570cbd47290dd87f
&startblock=0
&endblock=99999999
&sort=asc

Try this endpoint in your browser 🔗

or

tip

To get paginated results use page=<page number> and offset=<max records to return>

https://api.btrscan.com/scan/api
?module=account
&action=txlist
&address=0xe7564c607c663e5784031229570cbd47290dd87f
&startblock=0
&endblock=99999999
&page=1
&offset=10
&sort=asc

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending

Get a list of 'Internal' Transactions By Address

Returns the list of internal transactions performed by an address, with optional pagination.

tip

Returns up to a maximum of the last 10000 transactions only

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&address=0x039bac1779933ee52abf3eff25188c4d673931ac
&startblock=0
&endblock=2702578
&sort=asc

Try this endpoint in your browser 🔗

or

tip

To get paginated results use page=<page number> and offset=<max records to return>

https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&address=0x039bac1779933ee52abf3eff25188c4d673931ac
&startblock=0
&endblock=2702578
&page=1
&offset=10
&sort=asc

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending

Get "Internal Transactions" by Transaction Hash

Returns the list of internal transactions performed within a transaction.

tip

Returns up to a maximum of the last 10000 transactions only

https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
txhashthe string representing the transaction hash to check for internal transactions

Get "Internal Transactions" by Block Range

Returns the list of internal transactions performed within a block range, with optional pagination.

tip

Returns up to a maximum of the last 10000 transactions only

https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&startblock=0
&endblock=2928944
&page=1
&offset=10
&sort=asc

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending

Get a list of "ERC-20 - Token Transfer Events" by Address

Returns the list of ERC-20 tokens transferred by an address, with optional filtering by token contract. -[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&startblock=0
&endblock=999999999
&sort=asc

Try this endpoint in your browser 🔗

or

https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&page=1
&offset=100
&sort=asc

Try this endpoint in your browser 🔗

or

https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&page=1
&offset=100
&sort=asc

Try this endpoint in your browser 🔗

Usage:

  • ERC-20 transfers from an address, specify the address parameter
  • ERC-20 transfers from a contract address, specify the contract address parameter
  • ERC-20 transfers from an address filtered by a token contract, specify both address and contract address parameters.
Query Parameters
ParameterDescription
addressthe string representing the address to check balance
contractaddressthe string representing the token contract address to check for balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending

Get a list of "ERC-721 - Token Transfer Events" by Address

Returns the list of ERC-721 ( NFT ) tokens transferred by an address, with optional filtering by token contract. -[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184
&startblock=0
&endblock=999999999
&sort=asc

Try this endpoint in your browser 🔗

or

https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230
&page=1
&offset=100
&sort=asc

Try this endpoint in your browser 🔗

or

https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230
&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184
&page=1
&offset=100
&sort=asc

Try this endpoint in your browser 🔗

Usage:

  • ERC-721 transfers from an address, specify the address parameter
  • ERC-721 transfers from a contract address, specify the contract address parameter
  • ERC-721 transfers from an address filtered by a token contract, specify both address and contract address parameters.
Query Parameters
ParameterDescription
addressthe string representing the address to check balance
contractaddressthe string representing the token contract address to check for balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending

Get list of Blocks Validated by Address

Returns the list of blocks validated by an address.

https://api.btrscan.com/scan/api
?module=account
&action=getminedblocks
&blocktype=blocks
&address=0x0fac0285011992215edb080f14a2cc6ab629360b

Try this endpoint in your browser 🔗

or

tip

To get paginated results use page=<page number> and offset=<max records to return>

https://api.btrscan.com/scan/api
?module=account
&action=getminedblocks
&blocktype=blocks
&page=1
&offset=100

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
blocktypethe string pre-defined block type, either blocks for canonical blocks or uncles for uncle blocks only
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
- - +

Accounts

Endpoint URLs

+
NetworkURL
Mainnethttps://api.btrscan.com/scan/api
Testnethttps://api-testnet.bitlayer.org/scan/api
+

Get BTC Balance for a single address

+

Returns the BTC balance of a given address.

+
https://api.btrscan.com/scan/api
?module=account
&action=balance
&address=0xe7564c607c663e5784031229570cbd47290dd87f
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance
+

Get BTC Balance for multiple addresses in a single call

+

Returns the balance of the accounts from a list of addresses.

+
https://api.btrscan.com/scan/api
?module=account
&action=balancemulti
&address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance,separated by , up to 20 addresses in a single batch
+

Get a list of 'Normal' Transactions By Address

+

Returns the list of transactions performed by an address, with optional pagination. +[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

+
tip

Returns up to a maximum of the last 10000 transactions only

+
https://api.btrscan.com/scan/api
?module=account
&action=txlist
&address=0xe7564c607c663e5784031229570cbd47290dd87f
&startblock=0
&endblock=99999999
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
tip

To get paginated results use page=<page number> and offset=<max records to return>

+
https://api.btrscan.com/scan/api
?module=account
&action=txlist
&address=0xe7564c607c663e5784031229570cbd47290dd87f
&startblock=0
&endblock=99999999
&page=1
&offset=10
&sort=asc
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending
+

Get a list of 'Internal' Transactions By Address

+

Returns the list of internal transactions performed by an address, with optional pagination.

+
tip

Returns up to a maximum of the last 10000 transactions only

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

+
https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&address=0x039bac1779933ee52abf3eff25188c4d673931ac
&startblock=0
&endblock=2702578
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
tip

To get paginated results use page=<page number> and offset=<max records to return>

+
https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&address=0x039bac1779933ee52abf3eff25188c4d673931ac
&startblock=0
&endblock=2702578
&page=1
&offset=10
&sort=asc
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending
+

Get "Internal Transactions" by Transaction Hash

+

Returns the list of internal transactions performed within a transaction.

+
tip

Returns up to a maximum of the last 10000 transactions only

+
https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
txhashthe string representing the transaction hash to check for internal transactions
+

Get "Internal Transactions" by Block Range

+

Returns the list of internal transactions performed within a block range, with optional pagination.

+
tip

Returns up to a maximum of the last 10000 transactions only

+
https://api.btrscan.com/scan/api
?module=account
&action=txlistinternal
&startblock=0
&endblock=2928944
&page=1
&offset=10
&sort=asc
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending
+

Get a list of "ERC-20 - Token Transfer Events" by Address

+

Returns the list of ERC-20 tokens transferred by an address, with optional filtering by token contract. +[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

+
https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&startblock=0
&endblock=999999999
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&page=1
&offset=100
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
https://api.btrscan.com/scan/api
?module=account
&action=tokentx
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&page=1
&offset=100
&sort=asc
+

Try this endpoint in your browser 🔗

+

Usage:

+
    +
  • ERC-20 transfers from an address, specify the address parameter
  • +
  • ERC-20 transfers from a contract address, specify the contract address parameter
  • +
  • ERC-20 transfers from an address filtered by a token contract, specify both address and contract address parameters.
  • +
+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance
contractaddressthe string representing the token contract address to check for balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending
+

Get a list of "ERC-721 - Token Transfer Events" by Address

+

Returns the list of ERC-721 ( NFT ) tokens transferred by an address, with optional filtering by token contract. +[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

+
https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184
&startblock=0
&endblock=999999999
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230
&page=1
&offset=100
&sort=asc
+

Try this endpoint in your browser 🔗

+

or

+
https://api.btrscan.com/scan/api
?module=account
&action=tokennfttx
&contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230
&address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184
&page=1
&offset=100
&sort=asc
+

Try this endpoint in your browser 🔗

+

Usage:

+
    +
  • ERC-721 transfers from an address, specify the address parameter
  • +
  • ERC-721 transfers from a contract address, specify the contract address parameter
  • +
  • ERC-721 transfers from an address filtered by a token contract, specify both address and contract address parameters.
  • +
+

Query Parameters

ParameterDescription
addressthe string representing the address to check balance
contractaddressthe string representing the token contract address to check for balance
startblockthe integer block number to start searching for transactions
endblockthe integer block number to stop searching for transactions
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
sortthe sorting preference, use asc to sort by ascending and desc to sort by descending
+

Get list of Blocks Validated by Address

+

Returns the list of blocks validated by an address.

+
https://api.btrscan.com/scan/api
?module=account
&action=getminedblocks
&blocktype=blocks
&address=0x0fac0285011992215edb080f14a2cc6ab629360b
+

Try this endpoint in your browser 🔗

+

or

+
tip

To get paginated results use page=<page number> and offset=<max records to return>

+
https://api.btrscan.com/scan/api
?module=account
&action=getminedblocks
&blocktype=blocks
&page=1
&offset=100
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
blocktypethe string pre-defined block type, either blocks for canonical blocks or uncles for uncle blocks only
pagethe integer page number, if pagination is enabled
offsetthe number of transactions displayed per page
\ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Blocks/index.html b/docs/Bitlayer Scan APIs/Blocks/index.html index 73f500f5..e946597f 100644 --- a/docs/Bitlayer Scan APIs/Blocks/index.html +++ b/docs/Bitlayer Scan APIs/Blocks/index.html @@ -1,18 +1,23 @@ - + - - - -Blocks | Bitlayer - - + +Blocks | Bitlayer + + + -
-

Blocks

Get Block Rewards by BlockNo

The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions.

https://api.btrscan.com/scan/api
?module=block
&action=getblockreward
&blockNum=426364

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
blocknothe integer block number to check block rewards for eg. 12697906

Get Block Number by Timestamp

[Parameters] timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: 'before' or 'after'

https://api.btrscan.com/scan/api
?module=block
&action=getblocknobytime
&timestamp=1715789611
&closest=before

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
timestampthe integer representing the Unix timestamp in seconds
closestthe closest available block to the provided timestamp, either before or after
- - +

Blocks

Get Block Rewards by BlockNo

+

The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions.

+
https://api.btrscan.com/scan/api
?module=block
&action=getblockreward
&blockNum=426364
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
blocknothe integer block number to check block rewards for eg. 12697906
+

Get Block Number by Timestamp

+

[Parameters] timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: 'before' or 'after'

+
https://api.btrscan.com/scan/api
?module=block
&action=getblocknobytime
&timestamp=1715789611
&closest=before
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
timestampthe integer representing the Unix timestamp in seconds
closestthe closest available block to the provided timestamp, either before or after
\ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Contracts/index.html b/docs/Bitlayer Scan APIs/Contracts/index.html index 2baa3350..a7a678a9 100644 --- a/docs/Bitlayer Scan APIs/Contracts/index.html +++ b/docs/Bitlayer Scan APIs/Contracts/index.html @@ -1,18 +1,73 @@ - + - - - -Contracts | Bitlayer - - + +Contracts | Bitlayer + + + -
-

Contracts

Verify the contract through hardhat verify

The official recommendation of Hardhat is to use hardhat-verify along with hardhat-toolbox for custom browser API configurations and contract verification.

tip

Please use hardhat-verify for contract verification , hardhat-etherscan is not recommended.

https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify

An example of Hardhat Project Configuration and Contract Verification

The package.json file needs to add the following dependencies:

tip

Please use hardhat-verify for contract verification, hardhat-etherscan is not recommended.

// Adjust the version according to needs
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
"@nomicfoundation/hardhat-verify": "^2.0.5",
"hardhat": "^2.19.4"

Execute the npm install command to install dependencies.

The configuration in the hardhat.config.js file is as follows:

require("@nomicfoundation/hardhat-toolbox"); // The toolbox library supports customChains configuration.
require("@nomicfoundation/hardhat-verify");

module.exports = {
solidity: {
version: "0.8.23", // Configure the solidity version for your own project, noting that the solidity version for deploying and verifying contracts should be the same.
settings: {
// Configure this part according to needs.
optimizer:{
enabled: true,
runs: 200,
}
}
},
networks: {
bitlayertestnet: {
url: 'https://testnet-rpc.bitlayer.org',
chainId: 200810,
accounts: ["private key of your account"]
},
bitlayer: {
url: 'https://rpc.bitlayer.org',
chainId: 200901,
accounts: ["private key of your account"]
},
},
etherscan: {
apiKey: {
// An API key needs to be written as the hardhat-verify plugin will require it, and the verification will fail if it is not provided.
// The current bitlayer browser has not yet enabled API key verification, so you can write any random string for now.
bitlayertestnet: "1234",
bitlayer: "1234"
},
customChains: [
{
network: "bitlayertestnet",
chainId: 200810,
urls: {
apiURL: "https://api-testnet.btrscan.com/scan/api",
browserURL: "https://testnet.btrscan.com/"
}
},
{
network: "bitlayer",
chainId: 200901,
urls: {
apiURL: "https://api.btrscan.com/scan/api",
browserURL: "https://www.btrscan.com/"
}
}
]
}
};

Steps to Verify a Contract:

  1. Contract compilation requires compiling the contract according to the configuration parameters used during deployment (such as the Solidity version, whether the optimizer is enabled, etc.), otherwise the compiled bytecode will not match the bytecode of the contract on the blockchain, and verification will not be possible.
  2. When verifying a contract, you need to specify the network, contract path, contract name, etc. If the contract constructor has parameters, you need to include the constructor arguments that were passed in during the deployment of the contract. Provide as many as there are, and if there are no parameters, you don't need to write "constructorArguments". Here's an example:
npx hardhat verify --network bitlayer --contract contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy ${contract_address} constructorArguments1 constructorArguments2 constructorArguments3...
  1. Regarding passing constructor arguments, if the constructor arguments are of complex types, such as address[] or custom structs, it can be inconvenient to pass them through the command line. Instead, you can use --constructor-args arguments.js, where arguments.js exports the parameters in order.
  • Example of an arguments.js file
module.exports = [
"arg0",
"arg1"
];
  • Example of an arguments.js file for complex types

For example, the contract is defined with the following constructor:

struct Point {
uint x;
uint y;
}

contract Foo {
constructor (uint x, string s, Point memory point, bytes b) { ... }
}

Then the arguments.js file can be written like this:

module.exports = [
50,
"a string argument",
{
x: 10,
y: 5,
},
// bytes have to be 0x-prefixed
"0xabcdef",
];

An example of using arguments.js file to pass arguments and execute the verify command is as follows:

npx hardhat verify --constructor-args arguments.js --contract contracts/path/path/SimpleContract.sol:SimpleContract DEPLOYED_CONTRACT_ADDRESS

Get Contract ABI for Verified Contract Source Codes

Returns the Contract Application Binary Interface ( ABI ) of a verified smart contract.

https://api.btrscan.com/scan/api
?module=contract
&action=getabi
&address=0xc9121e476155ebf0b794b7b351808af3787e727d

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe contract address that has a verified source code
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider());
var version = web3.version.api;

$.getJSON('https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d', function (data) {
var contractABI = "";
  contractABI = JSON.parse(data.result);
if (contractABI != ''){
  var MyContract = web3.eth.contract(contractABI);
  var myContractInstance = MyContract.at("0xc9121e476155ebf0b794b7b351808af3787e727d");
  var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");
  console.log("result1 : " + result);
  var result = myContractInstance.members(1);
  console.log("result2 : " + result);
} else {
  console.log("Error");
}
});

Get Contract Source Code for Verified Contract Source Codes

Returns the source code of a verified smart contract.

https://api.btrscan.com/scan/api
?module=contract
&action=getsourcecode
&address=0xc9121e476155ebf0b794b7b351808af3787e727d

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe contract address that has a verified source code

or

Get Contract Creator and Creation Tx Hash

https://api.btrscan.com/scan/api
?module=contract
&action=getcontractcreation
&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163

Try this endpoint in your browser 🔗

Verify Source Code (beta)

1、Current daily limit of 100 submissions per day per user (subject to change)

2、Only supports HTTP POST due to max transfer size limitations for HTTP GET

3、Contracts that use "imports" will need to have the code concatenated into one file as we do not support "imports" in separate files

4、List ofsupported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1

5、Upon successful submission you will receive a GUID (50 characters) as a receipt

6、You may use this GUID to track the status of your submission

7、Verified Source Codes will be displayed at the Verified Contracts page

Source Code Submission Gist (returns a guid as part of the result upon success):

//Submit Source Code for Verification
$.ajax({
 type: "POST", //Only POST supported
  url: "//api.btrscan.com/scan/api", //Set to the correct API url for Other Networks
  data: {
   apikey: $('#apikey').val(),            //A valid API-Key is required
   module: 'contract',               //Do not change
   action: 'verifysourcecode',            //Do not change
   contractaddress: $('#contractaddress').val(),   //Contract Address starts with 0x...
   sourceCode: $('#sourceCode').val(),       //Contract Source Code (Flattened if necessary)
   codeformat: $('#codeformat').val(),       //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support
   contractname: $('#contractname').val(),     //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20)
   compilerversion: $('#compilerversion').val(),   //see https://api-testnet.bitlayer.org/scan/solcversions for list of support versions
   optimizationUsed: $('#optimizationUsed').val(),//0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file)
   runs: 200,                   //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file)
   constructorArguements: $('#constructorArguements').val(),//if applicable
   evmversion: $('#evmVersion').val(),       //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file)
   licenseType: $('#licenseType').val(),      //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://api-testnet.bitlayer.org/scan/contract-license-types
},
  success: function (result) {
   console.log(result);
   if (result.status == "1") {
    //1 = submission success, use the guid returned (result.result) to check the status of your submission.
    // Average time of processing is 30-60 seconds
    document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;
    // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status
   } else {
    //0 = error
    document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;
   }
   console.log("status : " + result.status);
   console.log("result : " + result.result);
},
  error: function (result) {
   console.log("error!");
   document.getElementById("postresult").innerHTML = "Unexpected Error"
}
});

Check Source code verification submission status:

//Check Source Code Verification Status
$.ajax({
type: "GET",
url: "https://api-testnet.bitlayer.org/scan/api",
data: {
  apikey: $('#apikey').val(),
  guid: 'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn', //Replace with your Source Code GUID receipt above
  module: "contract",
  action: "checkverifystatus"
},
success: function (result) {
  console.log("status : " + result.status); //0=pending 1=pass 2=fail
  console.log("message : " + result.message); //Pass - Verified, Fail - Unable to verify Pending in queue
  console.log("result : " + result.result); //result explanation
  $('#guidstatus').html(">> " + result.result);
},
error: function (result) {
  alert('error');
}
});
- - +

Contracts

Verify the contract through hardhat verify

+

The official recommendation of Hardhat is to use hardhat-verify along with hardhat-toolbox for custom browser API configurations and contract verification.

+
tip

Please use hardhat-verify for contract verification , hardhat-etherscan is not recommended.

+

https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify

+

An example of Hardhat Project Configuration and Contract Verification

+

The package.json file needs to add the following dependencies:

+
tip

Please use hardhat-verify for contract verification, hardhat-etherscan is not recommended.

+
// Adjust the version according to needs
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
"@nomicfoundation/hardhat-verify": "^2.0.5",
"hardhat": "^2.19.4"
+

Execute the npm install command to install dependencies.

+

The configuration in the hardhat.config.js file is as follows:

+
require("@nomicfoundation/hardhat-toolbox"); // The toolbox library supports customChains configuration.
require("@nomicfoundation/hardhat-verify");

module.exports = {
solidity: {
version: "0.8.23", // Configure the solidity version for your own project, noting that the solidity version for deploying and verifying contracts should be the same.
settings: {
// Configure this part according to needs.
optimizer:{
enabled: true,
runs: 200,
}
}
},
networks: {
bitlayertestnet: {
url: 'https://testnet-rpc.bitlayer.org',
chainId: 200810,
accounts: ["private key of your account"]
},
bitlayer: {
url: 'https://rpc.bitlayer.org',
chainId: 200901,
accounts: ["private key of your account"]
},
},
etherscan: {
apiKey: {
// An API key needs to be written as the hardhat-verify plugin will require it, and the verification will fail if it is not provided.
// The current bitlayer browser has not yet enabled API key verification, so you can write any random string for now.
bitlayertestnet: "1234",
bitlayer: "1234"
},
customChains: [
{
network: "bitlayertestnet",
chainId: 200810,
urls: {
apiURL: "https://api-testnet.btrscan.com/scan/api",
browserURL: "https://testnet.btrscan.com/"
}
},
{
network: "bitlayer",
chainId: 200901,
urls: {
apiURL: "https://api.btrscan.com/scan/api",
browserURL: "https://www.btrscan.com/"
}
}
]
}
};
+

Steps to Verify a Contract:

+
    +
  1. Contract compilation requires compiling the contract according to the configuration parameters used during deployment (such as the Solidity version, whether the optimizer is enabled, etc.), otherwise the compiled bytecode will not match the bytecode of the contract on the blockchain, and verification will not be possible.
  2. +
  3. When verifying a contract, you need to specify the network, contract path, contract name, etc. If the contract constructor has parameters, you need to include the constructor arguments that were passed in during the deployment of the contract. Provide as many as there are, and if there are no parameters, you don't need to write "constructorArguments". Here's an example:
  4. +
+
npx hardhat verify --network bitlayer --contract contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy ${contract_address} constructorArguments1 constructorArguments2 constructorArguments3...
+
    +
  1. Regarding passing constructor arguments, if the constructor arguments are of complex types, such as address[] or custom structs, it can be inconvenient to pass them through the command line. Instead, you can use --constructor-args arguments.js, where arguments.js exports the parameters in order.
  2. +
+
    +
  • Example of an arguments.js file
  • +
+
module.exports = [
"arg0",
"arg1"
];
+
    +
  • Example of an arguments.js file for complex types
  • +
+

For example, the contract is defined with the following constructor:

+
struct Point {
uint x;
uint y;
}

contract Foo {
constructor (uint x, string s, Point memory point, bytes b) { ... }
}
+

Then the arguments.js file can be written like this:

+
module.exports = [
50,
"a string argument",
{
x: 10,
y: 5,
},
// bytes have to be 0x-prefixed
"0xabcdef",
];
+

An example of using arguments.js file to pass arguments and execute the verify command is as follows:

+
npx hardhat verify --constructor-args arguments.js --contract contracts/path/path/SimpleContract.sol:SimpleContract DEPLOYED_CONTRACT_ADDRESS
+ +

Get Contract ABI for Verified Contract Source Codes

+

Returns the Contract Application Binary Interface ( ABI ) of a verified smart contract.

+
https://api.btrscan.com/scan/api
?module=contract
&action=getabi
&address=0xc9121e476155ebf0b794b7b351808af3787e727d
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe contract address that has a verified source code
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider());
var version = web3.version.api;

$.getJSON('https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d', function (data) {
var contractABI = "";
  contractABI = JSON.parse(data.result);
if (contractABI != ''){
  var MyContract = web3.eth.contract(contractABI);
  var myContractInstance = MyContract.at("0xc9121e476155ebf0b794b7b351808af3787e727d");
  var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");
  console.log("result1 : " + result);
  var result = myContractInstance.members(1);
  console.log("result2 : " + result);
} else {
  console.log("Error");
}
});
+

Get Contract Source Code for Verified Contract Source Codes

+

Returns the source code of a verified smart contract.

+
https://api.btrscan.com/scan/api
?module=contract
&action=getsourcecode
&address=0xc9121e476155ebf0b794b7b351808af3787e727d
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe contract address that has a verified source code
+

or

+

Get Contract Creator and Creation Tx Hash

+
https://api.btrscan.com/scan/api
?module=contract
&action=getcontractcreation
&contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163
+

Try this endpoint in your browser 🔗

+

Verify Source Code (beta)

+

1、Current daily limit of 100 submissions per day per user (subject to change)

+

2、Only supports HTTP POST due to max transfer size limitations for HTTP GET

+

3、Contracts that use "imports" will need to have the code concatenated into one file as we do not support "imports" in separate files

+

4、List ofsupported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1

+

5、Upon successful submission you will receive a GUID (50 characters) as a receipt

+

6、You may use this GUID to track the status of your submission

+

7、Verified Source Codes will be displayed at the Verified Contracts page

+

Source Code Submission Gist (returns a guid as part of the result upon success):

+
//Submit Source Code for Verification
$.ajax({
 type: "POST", //Only POST supported
  url: "//api.btrscan.com/scan/api", //Set to the correct API url for Other Networks
  data: {
   apikey: $('#apikey').val(),            //A valid API-Key is required
   module: 'contract',               //Do not change
   action: 'verifysourcecode',            //Do not change
   contractaddress: $('#contractaddress').val(),   //Contract Address starts with 0x...
   sourceCode: $('#sourceCode').val(),       //Contract Source Code (Flattened if necessary)
   codeformat: $('#codeformat').val(),       //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support
   contractname: $('#contractname').val(),     //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20)
   compilerversion: $('#compilerversion').val(),   //see https://api-testnet.bitlayer.org/scan/solcversions for list of support versions
   optimizationUsed: $('#optimizationUsed').val(), //0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file)
   runs: 200,                   //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file)
   constructorArguements: $('#constructorArguements').val(), //if applicable
   evmversion: $('#evmVersion').val(),       //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file)
   licenseType: $('#licenseType').val(),      //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://api-testnet.bitlayer.org/scan/contract-license-types
  },
  success: function (result) {
   console.log(result);
   if (result.status == "1") {
    //1 = submission success, use the guid returned (result.result) to check the status of your submission.
    // Average time of processing is 30-60 seconds
    document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;
    // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status
   } else {
    //0 = error
    document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result;
   }
   console.log("status : " + result.status);
   console.log("result : " + result.result);
  },
  error: function (result) {
   console.log("error!");
   document.getElementById("postresult").innerHTML = "Unexpected Error"
  }
});
+

Check Source code verification submission status:

+
//Check Source Code Verification Status
$.ajax({
type: "GET",
url: "https://api-testnet.bitlayer.org/scan/api",
data: {
  apikey: $('#apikey').val(),
  guid: 'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn', //Replace with your Source Code GUID receipt above
  module: "contract",
  action: "checkverifystatus"
},
success: function (result) {
  console.log("status : " + result.status); //0=pending 1=pass 2=fail
  console.log("message : " + result.message); //Pass - Verified, Fail - Unable to verify Pending in queue
  console.log("result : " + result.result); //result explanation
  $('#guidstatus').html(">> " + result.result);
},
error: function (result) {
  alert('error');
}
});
\ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Logs/index.html b/docs/Bitlayer Scan APIs/Logs/index.html index addfb6c7..3823ae32 100644 --- a/docs/Bitlayer Scan APIs/Logs/index.html +++ b/docs/Bitlayer Scan APIs/Logs/index.html @@ -1,18 +1,28 @@ - + - - - -Logs | Bitlayer - - + +Logs | Bitlayer + + + -
-

Logs

Get Event Logs by Address

Returns the event logs from an address, with optional filtering by block range.

https://api.btrscan.com/scan/api
?module=logs
&action=getLogs
&address=0x42857b399adba34b75d6bedcacde75c7784e87c6
&fromBlock=585180
&toBlock=585189

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check for logs
startblockthe integer block number to start searching for transactions
toBlockthe integer block number to stop searching for transactions

Get Event Logs by Address filtered by Topics

Returns the event logs from an address, filtered by topics and block range.

https://api.btrscan.com/scan/api
?module=logs
&action=logs
&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1
&fromBlock=1191962
&toBlock=1191964
&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
&topic0_1_opr=and
&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37

Usage:

  • For a single topic, specify the topic number such as topic0, topic1, topic2, topic3
  • For multiple topics, specify the topic numbers and topic operator either and or or such as belowtopic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2) topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2) topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3)

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
addressthe string representing the address to check for logs
fromBlockthe integer block number to start searching for transactions
toBlockthe integer block number to start searching for transactions
topicthe topic numbers to search for limited totopic0, topic1, topic2, topic3
topicOperatorthe topic operator when multiple topic combinations are used limited to and or or
- - +

Logs

Get Event Logs by Address

+

Returns the event logs from an address, with optional filtering by block range.

+
https://api.btrscan.com/scan/api
?module=logs
&action=getLogs
&address=0x42857b399adba34b75d6bedcacde75c7784e87c6
&fromBlock=585180
&toBlock=585189
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check for logs
startblockthe integer block number to start searching for transactions
toBlockthe integer block number to stop searching for transactions
+

Get Event Logs by Address filtered by Topics

+

Returns the event logs from an address, filtered by topics and block range.

+
https://api.btrscan.com/scan/api
?module=logs
&action=logs
&address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1
&fromBlock=1191962
&toBlock=1191964
&topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
&topic0_1_opr=and
&topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37
+

Usage:

+
    +
  • For a single topic, specify the topic number such as topic0, topic1, topic2, topic3
  • +
  • For multiple topics, specify the topic numbers and topic operator either and or or such as belowtopic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2) topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2) topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3)
  • +
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
addressthe string representing the address to check for logs
fromBlockthe integer block number to start searching for transactions
toBlockthe integer block number to start searching for transactions
topicthe topic numbers to search for limited totopic0, topic1, topic2, topic3
topicOperatorthe topic operator when multiple topic combinations are used limited to and or or
\ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Tokens/index.html b/docs/Bitlayer Scan APIs/Tokens/index.html index cf21ee9d..40d5a8c1 100644 --- a/docs/Bitlayer Scan APIs/Tokens/index.html +++ b/docs/Bitlayer Scan APIs/Tokens/index.html @@ -1,18 +1,23 @@ - + - - - -Tokens | Bitlayer - - + +Tokens | Bitlayer + + + -
-

Tokens

Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress

Returns the current amount of an ERC-20 token in circulation.

https://api.btrscan.com/scan/api
?module=token
&action=tokensupply
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
contractaddressthe contract address of the ERC-20 token

Get ERC20-Token Account Balance for TokenContractAddress

Returns the current balance of an ERC-20 token of an address.

https://api.btrscan.com/scan/api
?module=account
&action=tokenbalance
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&tag=latest

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
contractaddressthe contract address of the ERC-20 token
addressthe string representing the address to check for token balance
- - +

Tokens

Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress

+

Returns the current amount of an ERC-20 token in circulation.

+
https://api.btrscan.com/scan/api
?module=token
&action=tokensupply
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
contractaddressthe contract address of the ERC-20 token
+

Get ERC20-Token Account Balance for TokenContractAddress

+

Returns the current balance of an ERC-20 token of an address.

+
https://api.btrscan.com/scan/api
?module=account
&action=tokenbalance
&contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2
&address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec
&tag=latest
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
contractaddressthe contract address of the ERC-20 token
addressthe string representing the address to check for token balance
\ No newline at end of file diff --git a/docs/Bitlayer Scan APIs/Transactions/index.html b/docs/Bitlayer Scan APIs/Transactions/index.html index ab7afc8a..0c1167e0 100644 --- a/docs/Bitlayer Scan APIs/Transactions/index.html +++ b/docs/Bitlayer Scan APIs/Transactions/index.html @@ -1,18 +1,18 @@ - + - - - -Transactions | Bitlayer - - + +Transactions | Bitlayer + + + -
-

Transactions

Check Transaction Receipt Status

The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions.

https://api.btrscan.com/scan/api
?module=transaction
&action=gettxreceiptstatus
&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013

Try this endpoint in your browser 🔗

Query Parameters
ParameterDescription
txhashthe string representing the transaction hash to check the execution status
- - +

Transactions

Check Transaction Receipt Status

+

The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions.

+
https://api.btrscan.com/scan/api
?module=transaction
&action=gettxreceiptstatus
&txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013
+

Try this endpoint in your browser 🔗

+

Query Parameters

ParameterDescription
txhashthe string representing the transaction hash to check the execution status
\ No newline at end of file diff --git a/docs/BitlayerArchitecture/BitlayerDesign/index.html b/docs/BitlayerArchitecture/BitlayerDesign/index.html index dfc4db00..a0f690c0 100644 --- a/docs/BitlayerArchitecture/BitlayerDesign/index.html +++ b/docs/BitlayerArchitecture/BitlayerDesign/index.html @@ -1,18 +1,33 @@ - + - - - -Overview of Bitlayer's Design | Bitlayer - - + +Overview of Bitlayer's Design | Bitlayer + + + -
-

Overview of Bitlayer's Design

Technical White Paper

Bitlayer: A Bitcoin Computational Layer Architecture Based on the BitVM Paradigm

Introduction

Bitlayer has revolutionized the verification process for Layer 2 transactions using optimistic execution, while keeping the Bitcoin protocol intact. Its architecture comprises transaction processing, verification, and asset bridging components. Transaction processing involves a sequencer and a Layered Virtual Machine (LVM), optimizing transaction handling and computational efficiency. Transaction verification, managed by provers and challengers, ensures transaction validity and compliance with network rules. They collaborate to complete the entire process from Layer 2 transaction handling to Layer 1 confirmation, maintaining transaction security and integrity throughout the process. Bitlayer's assets bridge components further enhance its capabilities by enabling interoperability between Layer 2 and Layer 1 networks, facilitating secure asset transfer across blockchain layers.

The Architecture of Bitlayer

1. Transaction Processing

Transaction Processing, as illustrated in the figure above, involves the sequencer and Layered Virtual Machine. These components are responsible for the entire transaction handling, starting from transaction acceptance to executing the output.

  • Sequencer: Like other Layer 2 solutions, the sequencer in Bitlayer is responsible for collecting cached transactions and sorting them, serving as the entry point for transactions in Bitlayer.
  • Layered Virtual Machine (LVM): The LVM is the computing component of Bitlayer, responsible for executing smart contracts and generating the latest states and zero-knowledge proof. Challengers then use this proof to challenge the execution results.

2. Transaction Verification

In Bitlayer, transaction verification is achieved by a zero-knowledge-based optimistic mechanism between the prover and challenger.

  • Prover: The Prover is responsible for submitting Layer 2 transactions and states of execution to the Layer 1 chain as described above. It also reveals zero-knowledge proofs on the chain when getting challenged.
  • Challenger: The Challenger is responsible for verifying the execution results submitted by the Prover through states of execution and zero-knowledge proof verification. If malicious behavior is detected, the Challenger initiates a challenge process to generate fraud proofs including invalid zero-knowledge proofs and submits them to the Layer 1 chain.

3. Asset Bridge

The Bridge acts as a crucial component in Bitlayer's infrastructure, facilitating the seamless movement of assets between Layer 2 and Layer 1. Its primary responsibility is to ensure the secure transfer of user assets through an innovative combination of OP-DLC and BitVM.

- - +

Overview of Bitlayer's Design

+

Technical White Paper

+

Bitlayer: A Bitcoin Computational Layer Architecture Based on the BitVM Paradigm

+

Introduction

+

Bitlayer has revolutionized the verification process for Layer 2 transactions using optimistic execution, while keeping the Bitcoin protocol intact. Its architecture comprises transaction processing, verification, and asset bridging components. Transaction processing involves a sequencer and a Layered Virtual Machine (LVM), optimizing transaction handling and computational efficiency. Transaction verification, managed by provers and challengers, ensures transaction validity and compliance with network rules. They collaborate to complete the entire process from Layer 2 transaction handling to Layer 1 confirmation, maintaining transaction security and integrity throughout the process. Bitlayer's assets bridge components further enhance its capabilities by enabling interoperability between Layer 2 and Layer 1 networks, facilitating secure asset transfer across blockchain layers.

+

The Architecture of Bitlayer

+

1. Transaction Processing

+

Transaction Processing, as illustrated in the figure above, involves the sequencer and Layered Virtual Machine. These components are responsible for the entire transaction handling, starting from transaction acceptance to executing the output.

+
    +
  • Sequencer: Like other Layer 2 solutions, the sequencer in Bitlayer is responsible for collecting cached transactions and sorting them, serving as the entry point for transactions in Bitlayer.
  • +
  • Layered Virtual Machine (LVM): The LVM is the computing component of Bitlayer, responsible for executing smart contracts and generating the latest states and zero-knowledge proof. Challengers then use this proof to challenge the execution results.
  • +
+

2. Transaction Verification

+

In Bitlayer, transaction verification is achieved by a zero-knowledge-based optimistic mechanism between the prover and challenger.

+
    +
  • Prover: The Prover is responsible for submitting Layer 2 transactions and states of execution to the Layer 1 chain as described above. It also reveals zero-knowledge proofs on the chain when getting challenged.
  • +
  • Challenger: The Challenger is responsible for verifying the execution results submitted by the Prover through states of execution and zero-knowledge proof verification. If malicious behavior is detected, the Challenger initiates a challenge process to generate fraud proofs including invalid zero-knowledge proofs and submits them to the Layer 1 chain.
  • +
+

3. Asset Bridge

+

The Bridge acts as a crucial component in Bitlayer's infrastructure, facilitating the seamless movement of assets between Layer 2 and Layer 1. Its primary responsibility is to ensure the secure transfer of user assets through an innovative combination of OP-DLC and BitVM.

\ No newline at end of file diff --git a/docs/BitlayerArchitecture/LVM/index.html b/docs/BitlayerArchitecture/LVM/index.html index be65ef1b..39dd92b8 100644 --- a/docs/BitlayerArchitecture/LVM/index.html +++ b/docs/BitlayerArchitecture/LVM/index.html @@ -1,18 +1,18 @@ - + - - - -Layered Virtual Machine (LVM) | Bitlayer - - + +Layered Virtual Machine (LVM) | Bitlayer + + + -
-

Layered Virtual Machine (LVM)

Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.

Layered Virtual Machine

Supporting multiple frontend smart contract types can easily attract developers from various blockchain ecosystems. For instance, EVM is a widely used smart contract platform with its own bytecode and execution environment. By integrating support for EVM within the LVM framework, developers can leverage existing EVM-based smart contracts seamlessly while also benefiting from enhanced execution capabilities provided by the layered architecture.

On the backend side, supporting various zero-knowledge proof generators provides more optimization possibilities for the disputing process without compromising existing functionalities. In the future, when more succinct and efficient zero-knowledge proof systems emerge, Bitlayer's flexibility will allow for quick adaptation essential for keeping pace with evolving blockchain standards, emerging technologies, and changing user requirements.

- - +

Layered Virtual Machine (LVM)

+

Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.

+

Layered Virtual Machine

+

Supporting multiple frontend smart contract types can easily attract developers from various blockchain ecosystems. For instance, EVM is a widely used smart contract platform with its own bytecode and execution environment. By integrating support for EVM within the LVM framework, developers can leverage existing EVM-based smart contracts seamlessly while also benefiting from enhanced execution capabilities provided by the layered architecture.

+

On the backend side, supporting various zero-knowledge proof generators provides more optimization possibilities for the disputing process without compromising existing functionalities. In the future, when more succinct and efficient zero-knowledge proof systems emerge, Bitlayer's flexibility will allow for quick adaptation essential for keeping pace with evolving blockchain standards, emerging technologies, and changing user requirements.

\ No newline at end of file diff --git a/docs/BitlayerArchitecture/TransactionLifecycle/index.html b/docs/BitlayerArchitecture/TransactionLifecycle/index.html index fd0eece8..b5b15c9a 100644 --- a/docs/BitlayerArchitecture/TransactionLifecycle/index.html +++ b/docs/BitlayerArchitecture/TransactionLifecycle/index.html @@ -1,18 +1,23 @@ - + - - - -Bitlayer's Transaction Lifecycle | Bitlayer - - + +Bitlayer's Transaction Lifecycle | Bitlayer + + + -
-

Bitlayer's Transaction Lifecycle

The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:

1. BitVM Federation

The nodes within the BitVM Federation act as a verification network to ensure the secure execution of Layer 2 transactions and the stable operation of the Bitlayer bridge. When Layer 2 begins, validated organizations can join the federation by depositing a specific amount of BTC. As the Layer 2 network progresses, the federation dynamically adjusts and increases its membership to boost security and decentralization. Within the cross-chain bridge, the BitVM Federation collectively manages decentralized asset custody for the BitVM bridge channel, attaining a 1 of (N) security level, meaning only one honest node is needed for network integrity. Moreover, the BitVM Federation functions as an oracle network for the OP-DCL bridge channel, requiring only some members to agree ((t) of (N)) to produce a legitimate oracle signature.

2. DLC Components

Using DLC for deposits and withdrawals ensures users' autonomous control over their assets but introduces restrictions on the BTC amount for deposits and withdrawals. Because DLC requires predefined CETs to determine the withdrawal amount, supporting fine-grained CETs is necessary to meet user-friendly withdrawal requirements. The first function of the DLC component is to facilitate the creation of funding transactions, where the assets are initially output to a 2 of 2 multi-sig output, with the parties involved being the user and the BitVM Federation ((N) of (N)) address. The second function is the CET manager, which pre-creates DLCs supporting multiple future withdrawal requirements, thus realizing a user-friendly cross-chain solution.

3. Layer 2 Smart Contracts

The bridge and light client are two core smart contracts on Layer 2 that implement the trustless bridge. The bridge smart contract manages the issuance and destruction of BTC assets on Layer 2. The light client contract maintains Bitcoin block header information on Layer 2, and Bitlayer uses ZKP-based Bitcoin state proofs to update and maintain the block header information. The light client contract also provides a Verify function to validate Bitcoin transactions, by submitting a Simplified Payment Verification (SPV) proof of the transaction to the light client contract to verify the legitimacy of the Bitcoin transaction. The bridge contract calls the light client's Verify function to validate the legitimacy of users' locking transactions on Bitcoin, ensuring that all BTC assets on Layer 2 are issued in a trustless manner.

4. Relayers

The Relayer plays a critical, trustless role in the Bitlayer asset bridge, primarily tasked with monitoring both Layer 1 and Layer 2 blockchains and updating the state of light client data on the Layer 2 blockchain. When the Bitcoin network commits a new block, the relayer submits a state update transaction for the light client, accompanied by a zero-knowledge proof. Whenever there is a bridge transaction, the relayer forwards it to a smart contract (peg-in) or a BitVM Federation node (peg-out) for further processing. The inclusion of this permissionless relayer system ensures the continuous operation of the asset bridge; the bridge remains functional as long as at least one relayer is operational.

- - +

Bitlayer's Transaction Lifecycle

+

The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:

+

1. BitVM Federation

+

The nodes within the BitVM Federation act as a verification network to ensure the secure execution of Layer 2 transactions and the stable operation of the Bitlayer bridge. When Layer 2 begins, validated organizations can join the federation by depositing a specific amount of BTC. As the Layer 2 network progresses, the federation dynamically adjusts and increases its membership to boost security and decentralization. Within the cross-chain bridge, the BitVM Federation collectively manages decentralized asset custody for the BitVM bridge channel, attaining a 1 of (N) security level, meaning only one honest node is needed for network integrity. Moreover, the BitVM Federation functions as an oracle network for the OP-DCL bridge channel, requiring only some members to agree ((t) of (N)) to produce a legitimate oracle signature.

+

2. DLC Components

+

Using DLC for deposits and withdrawals ensures users' autonomous control over their assets but introduces restrictions on the BTC amount for deposits and withdrawals. Because DLC requires predefined CETs to determine the withdrawal amount, supporting fine-grained CETs is necessary to meet user-friendly withdrawal requirements. The first function of the DLC component is to facilitate the creation of funding transactions, where the assets are initially output to a 2 of 2 multi-sig output, with the parties involved being the user and the BitVM Federation ((N) of (N)) address. The second function is the CET manager, which pre-creates DLCs supporting multiple future withdrawal requirements, thus realizing a user-friendly cross-chain solution.

+

3. Layer 2 Smart Contracts

+

The bridge and light client are two core smart contracts on Layer 2 that implement the trustless bridge. The bridge smart contract manages the issuance and destruction of BTC assets on Layer 2. The light client contract maintains Bitcoin block header information on Layer 2, and Bitlayer uses ZKP-based Bitcoin state proofs to update and maintain the block header information. The light client contract also provides a Verify function to validate Bitcoin transactions, by submitting a Simplified Payment Verification (SPV) proof of the transaction to the light client contract to verify the legitimacy of the Bitcoin transaction. The bridge contract calls the light client's Verify function to validate the legitimacy of users' locking transactions on Bitcoin, ensuring that all BTC assets on Layer 2 are issued in a trustless manner.

+

4. Relayers

+

The Relayer plays a critical, trustless role in the Bitlayer asset bridge, primarily tasked with monitoring both Layer 1 and Layer 2 blockchains and updating the state of light client data on the Layer 2 blockchain. When the Bitcoin network commits a new block, the relayer submits a state update transaction for the light client, accompanied by a zero-knowledge proof. Whenever there is a bridge transaction, the relayer forwards it to a smart contract (peg-in) or a BitVM Federation node (peg-out) for further processing. The inclusion of this permissionless relayer system ensures the continuous operation of the asset bridge; the bridge remains functional as long as at least one relayer is operational.

\ No newline at end of file diff --git a/docs/BitlayerNetwork/AboutGas/index.html b/docs/BitlayerNetwork/AboutGas/index.html index 9db38f00..82a264c5 100644 --- a/docs/BitlayerNetwork/AboutGas/index.html +++ b/docs/BitlayerNetwork/AboutGas/index.html @@ -1,18 +1,39 @@ - + - - - -About Gas | Bitlayer - - + +About Gas | Bitlayer + + + -
-

About Gas

Important: about gas price

  • Bitlayer's native gas token is BTC. However, on Bitlayer, BTC has an 18-digit precision, which is different from the 8-digit precision of BTC on Bitcoin. This is done to maintain consistency with the default decimal of tokens of EVM-compatible chains.

  • On the Bitlayer, there is a minimum priority fee requirement. Developers can use eth_gasPrice or eth_maxPriorityFeePerGas to estimate the gas price required for a transaction in real time.

  • For the Mainnet/Testnet, a minimum tip of 0.1 gwei is required. Usually, 0.11 gwei gasPrice for legacy transactions, 0.1 gwei maxPriorityFeePerGas (and set enough amount to maxFeePerGas) for EIP1559 transactions SHOULD BE enough.

  • For Dapp developers, it's recommended that setting the maxPriorityFeePerGas by code before calling apis to send the transaction, rather then leave it empty (filled by the default strategy of wallet (e.g. Metamask) or SDK).

Get BTC Gas

There are multiple way to get BTC gas on Bitlayer:

  1. Visit https://www.bitlayer.org/bridge

  2. Visit https://www.bitlayer.org/gas-swap

- - +

About Gas

+

Important: about gas price

+
    +
  • +

    Bitlayer's native gas token is BTC. However, on Bitlayer, BTC has an 18-digit precision, which is different from the 8-digit precision of BTC on Bitcoin. This is done to maintain consistency with the default decimal of tokens of EVM-compatible chains.

    +
  • +
  • +

    On the Bitlayer, there is a minimum priority fee requirement. Developers can use eth_gasPrice or eth_maxPriorityFeePerGas to estimate the gas price required for a transaction in real time.

    +
  • +
  • +

    For the Mainnet/Testnet, a minimum tip of 0.1 gwei is required. Usually, 0.11 gwei gasPrice for legacy transactions, 0.1 gwei maxPriorityFeePerGas (and set enough amount to maxFeePerGas) for EIP1559 transactions SHOULD BE enough.

    +
  • +
  • +

    For Dapp developers, it's recommended that setting the maxPriorityFeePerGas by code before calling apis to send the transaction, rather then leave it empty (filled by the default strategy of wallet (e.g. Metamask) or SDK).

    +
  • +
+

Get BTC Gas

+

There are multiple way to get BTC gas on Bitlayer:

+
    +
  1. +

    Visit https://www.bitlayer.org/bridge

    +
  2. +
  3. +

    Visit https://www.bitlayer.org/gas-swap

    +
  4. +
\ No newline at end of file diff --git a/docs/BitlayerNetwork/Bridges/index.html b/docs/BitlayerNetwork/Bridges/index.html index 0caf6e44..4a527a92 100644 --- a/docs/BitlayerNetwork/Bridges/index.html +++ b/docs/BitlayerNetwork/Bridges/index.html @@ -1,18 +1,25 @@ - + - - - -Bridges | Bitlayer - - + +Bridges | Bitlayer + + + -
-

Bridges

Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.

Bridge Image

Bitlayer <-> Blockchains

When integrating Bitlayer with Bitcoin or Bitcoin-compatible chains, it is recommended to utilize bridge solutions such as UniSats/OKX/Xverse. These bridges enable the transfer of assets between Bitlayer's Layer 2 solution and the Bitcoin blockchain. By bridging the gap between Bitlayer and Bitcoin, users can enjoy the benefits of Bitlayer's EVM compatibility while leveraging the security and liquidity of the Bitcoin network.

BTC <-> Bitlayer

Mainnet-V1: Bitlayer team is working with multiple MPC custody platform(including Coinbase, Sinohope(HK.1611)) to secure the assets.

EVM <-> Bitlayer

Bitlayer team builds the trustless bridge together with Polyhedra team.

Bitlayer <-> CEXs (Centralized Exchanges)

Bitlayer also supports bridges that connect with centralized exchanges (CEXs). With these bridges, users can withdraw their assets from centralized exchanges directly to Bitlayer's ETH-compatible wallet address. This allows users to seamlessly transfer funds from centralized exchanges to Bitlayer and leverage the Layer 2 capabilities provided by Bitlayer.

By leveraging bridges, Bitlayer expands its reach and connectivity, enabling users to interact with a wide range of blockchain networks and centralized exchanges. Developers can explore and integrate these bridges into their applications, providing users with enhanced flexibility and access to various blockchain ecosystems.

- - +

Bridges

+

Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.

+

Bridge Image

+

Bitlayer to Blockchains

+

When integrating Bitlayer with Bitcoin or Bitcoin-compatible chains, it is recommended to utilize bridge solutions such as UniSats, OKX, or Xverse. These bridges enable the transfer of assets between Bitlayer's Layer 2 solution and the Bitcoin blockchain. By bridging the gap between Bitlayer and Bitcoin, users can enjoy the benefits of Bitlayer's EVM compatibility while leveraging the security and liquidity of the Bitcoin network.

+

BTC to Bitlayer

+

Mainnet-V1: The Bitlayer team is working with multiple MPC custody platforms, including Coinbase and Sinohope (HK.1611), to secure the assets.

+

EVM to Bitlayer

+

The Bitlayer team builds the trustless bridge together with the Polyhedra team.

+

Bitlayer to CEXs (Centralized Exchanges)

+

Bitlayer also supports bridges that connect with centralized exchanges (CEXs). With these bridges, users can withdraw their assets from centralized exchanges directly to Bitlayer's ETH-compatible wallet address. This allows users to seamlessly transfer funds from centralized exchanges to Bitlayer and leverage the Layer 2 capabilities provided by Bitlayer.

+

By leveraging bridges, Bitlayer expands its reach and connectivity, enabling users to interact with a wide range of blockchain networks and centralized exchanges. Developers can explore and integrate these bridges into their applications, providing users with enhanced flexibility and access to various blockchain ecosystems.

\ No newline at end of file diff --git a/docs/BitlayerNetwork/Contracts/index.html b/docs/BitlayerNetwork/Contracts/index.html index e44ff028..810cfb82 100644 --- a/docs/BitlayerNetwork/Contracts/index.html +++ b/docs/BitlayerNetwork/Contracts/index.html @@ -1,18 +1,56 @@ - + - - - -Contracts | Bitlayer - - + +Contracts | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/BitlayerNetwork/Json-RPC/index.html b/docs/BitlayerNetwork/Json-RPC/index.html index d507f339..fe010c5d 100644 --- a/docs/BitlayerNetwork/Json-RPC/index.html +++ b/docs/BitlayerNetwork/Json-RPC/index.html @@ -1,18 +1,90 @@ - + - - - -JSON-RPC | Bitlayer - - + +JSON-RPC | Bitlayer + + + -
-

JSON-RPC

Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.

eth_getTraceActionByTxHash

This method returns logs of internal transactions by the hash of a transaction.

Parameters

  • DATA, 32 Bytes: Hash of a transaction.
  • Object: Filter options:
    • fromUser: DATA|Array, 20 Bytes (optional) - Address of the sender.
    • toBlock: DATA|Array, 20 Bytes (optional) - Address of the receiver.
    • opCode: String (optional) - An EVM opcode for a transaction's log.
    • minValue: QUANTITY|TAG (optional) - The minimal value or amount transferred in BRC.

Returns

An object containing an internal transaction's log, or null if no log was found:

  • transactionHash: DATA, 32 Bytes - Hash of the transaction.
  • blockHash: DATA, 32 Bytes - Hash of the block (null if pending).
  • blockNumber: QUANTITY - Block number of the transaction.
  • logs: Array of log objects generated by the transaction:
    • from: DATA, 20 Bytes - Address of the sender.
    • to: DATA, 20 Bytes - Address of the receiver (null if it's a contract creation transaction).
    • value: QUANTITY - Value transferred in BRC.
    • success: Boolean - Indicates whether the call was successful.
    • opcode: DATA - The EVM opcode of the transaction's log.
    • depth: QUANTITY - The depth of the call stack in EVM.
    • gas: QUANTITY - Gas provided by the sender.
    • gas_used: QUANTITY - Amount of gas used by the transaction.
    • input: DATA - Data sent along with the transaction.
    • trace_address: QUANTITY|Array - Array representing the call trace depth during execution.

Example

Request:

curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByTxHash",  "params":["0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694"], "id":1}'

Response:

{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"transactionHash": "0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694",
"blockHash": "0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3",
"blockNumber": 54,
"logs": [
{
"from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",
"to": "0x000000000000000000000000000000000000f000",
"value": 0,
"success": true,
"opcode": "CALL",
"depth": 18446744073709551615,
"gas": 165629,
"gas_used": 162996,
"input": "0x6374299e0000000000000000000000009f01eb5eb4dbea8b2cecc679050819990ab68a1a000000000000000000000000000000000000000000295be96e64066972000000",
"trace_address": []
},
{
"from": "0x000000000000000000000000000000000000f000",
"to": "0x4b20bbf3652696b9afd27b8f88ff8b7c1f361336",
"value": 0,
"success": true,
"opcode": "STATICCALL",
"depth": 0,
"gas": 157800,
"gas_used": 2443,
"input": "0x00000000",
"output": "0x0000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075",
"trace_address": [
0
]
},
{
"from": "0x000000000000000000000000000000000000f000",
"to": "0xf4340cf5f3891a3827713b33f769b501a0b5b122",
"value": 0,
"success": true,
"opcode": "STATICCALL",
"depth": 0,
"gas": 150040,
"gas_used": 2814,
"input": "0x0000000000000000000000000000000000000000007c13bc4b2c133c560000000000000000000000000000000000000000000000007c13bc4b2c133c5600000000000000",
"output": "0x0000000000000000000000000000000000000000007c13bc4b2c133c56000000",
"trace_address": [
1
]
}
]
}
]
}

eth_getTraceActionByBlockNumber

Returns logs of internal transactions by block number.

Parameters

  1. QUANTITY|TAG - integer of a block number
  1. Object - The filter options:
    • fromUser: DATA|Array, 20 Bytes - (optional) address of the sender.
    • toBlock: DATA|Array, 20 Bytes - (optional) address of the receiver.
    • opCode: String - (optional) An EVM opcode for a transaction's log.
    • minValue: QUANTITY|TAG - (optional) the minimal value or amount transferred in BRC.

Returns

Same as eth_getTraceActionByTxHash

Example

Request:

curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByBlockNumber",  "params":["0x36"],  "id":1}'

Result see eth_getTraceActionByTxHash

eth_getTraceActionByBlockHash

Returns logs of internal transactions by block hash.

Parameters

  1. DATA, 32 Bytes - Hash of a block.

Returns

Same as eth_getTraceActionByTxHash

Example

Request:

curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByBlockHash",  "params":["0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3"],  "id":1}'

Result see eth_getTraceActionByTxHash

- - +

JSON-RPC

+

Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.

+

eth_getTraceActionByTxHash

+

This method returns logs of internal transactions by the hash of a transaction.

+

Parameters

+
    +
  • DATA, 32 Bytes: Hash of a transaction.
  • +
  • Object: Filter options: +
      +
    • fromUser: DATA|Array, 20 Bytes (optional) - Address of the sender.
    • +
    • toBlock: DATA|Array, 20 Bytes (optional) - Address of the receiver.
    • +
    • opCode: String (optional) - An EVM opcode for a transaction's log.
    • +
    • minValue: QUANTITY|TAG (optional) - The minimal value or amount transferred in BRC.
    • +
    +
  • +
+

Returns

+

An object containing an internal transaction's log, or null if no log was found:

+
    +
  • transactionHash: DATA, 32 Bytes - Hash of the transaction.
  • +
  • blockHash: DATA, 32 Bytes - Hash of the block (null if pending).
  • +
  • blockNumber: QUANTITY - Block number of the transaction.
  • +
  • logs: Array of log objects generated by the transaction: +
      +
    • from: DATA, 20 Bytes - Address of the sender.
    • +
    • to: DATA, 20 Bytes - Address of the receiver (null if it's a contract creation transaction).
    • +
    • value: QUANTITY - Value transferred in BRC.
    • +
    • success: Boolean - Indicates whether the call was successful.
    • +
    • opcode: DATA - The EVM opcode of the transaction's log.
    • +
    • depth: QUANTITY - The depth of the call stack in EVM.
    • +
    • gas: QUANTITY - Gas provided by the sender.
    • +
    • gas_used: QUANTITY - Amount of gas used by the transaction.
    • +
    • input: DATA - Data sent along with the transaction.
    • +
    • trace_address: QUANTITY|Array - Array representing the call trace depth during execution.
    • +
    +
  • +
+

Example

+

Request:

+
curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByTxHash",  "params":["0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694"], "id":1}'
+

Response:

+
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"transactionHash": "0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694",
"blockHash": "0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3",
"blockNumber": 54,
"logs": [
{
"from": "0x2e46771cff3636a42f363826ff8a94d3a738e075",
"to": "0x000000000000000000000000000000000000f000",
"value": 0,
"success": true,
"opcode": "CALL",
"depth": 18446744073709551615,
"gas": 165629,
"gas_used": 162996,
"input": "0x6374299e0000000000000000000000009f01eb5eb4dbea8b2cecc679050819990ab68a1a000000000000000000000000000000000000000000295be96e64066972000000",
"trace_address": []
},
{
"from": "0x000000000000000000000000000000000000f000",
"to": "0x4b20bbf3652696b9afd27b8f88ff8b7c1f361336",
"value": 0,
"success": true,
"opcode": "STATICCALL",
"depth": 0,
"gas": 157800,
"gas_used": 2443,
"input": "0x00000000",
"output": "0x0000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075",
"trace_address": [
0
]
},
{
"from": "0x000000000000000000000000000000000000f000",
"to": "0xf4340cf5f3891a3827713b33f769b501a0b5b122",
"value": 0,
"success": true,
"opcode": "STATICCALL",
"depth": 0,
"gas": 150040,
"gas_used": 2814,
"input": "0x0000000000000000000000000000000000000000007c13bc4b2c133c560000000000000000000000000000000000000000000000007c13bc4b2c133c5600000000000000",
"output": "0x0000000000000000000000000000000000000000007c13bc4b2c133c56000000",
"trace_address": [
1
]
}
]
}
]
}
+

eth_getTraceActionByBlockNumber

+

Returns logs of internal transactions by block number.

+

Parameters

+
    +
  1. +

    QUANTITY|TAG - integer of a block number

    +
  2. +
  3. +

    Object - The filter options:

    +
      +
    • fromUser: DATA|Array, 20 Bytes - (optional) address of the sender.
    • +
    • toBlock: DATA|Array, 20 Bytes - (optional) address of the receiver.
    • +
    • opCode: String - (optional) An EVM opcode for a transaction's log.
    • +
    • minValue: QUANTITY|TAG - (optional) the minimal value or amount transferred in BRC.
    • +
    +
  4. +
+

Returns

+

Same as eth_getTraceActionByTxHash

+

Example

+

Request:

+
curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByBlockNumber",  "params":["0x36"],  "id":1}'
+

Result see eth_getTraceActionByTxHash

+

eth_getTraceActionByBlockHash

+

Returns logs of internal transactions by block hash.

+

Parameters

+
    +
  1. DATA, 32 Bytes - Hash of a block.
  2. +
+

Returns

+

Same as eth_getTraceActionByTxHash

+

Example

+

Request:

+
curl -X POST --data '{  "jsonrpc":"2.0",  "method":"eth_getTraceActionByBlockHash",  "params":["0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3"],  "id":1}'
+

Result see eth_getTraceActionByTxHash

\ No newline at end of file diff --git a/docs/BitlayerNetwork/Networks/index.html b/docs/BitlayerNetwork/Networks/index.html index 545ccfee..dbce7f8d 100644 --- a/docs/BitlayerNetwork/Networks/index.html +++ b/docs/BitlayerNetwork/Networks/index.html @@ -1,18 +1,24 @@ - + - - - -Networks and RPC Enpoints | Bitlayer - - + +Networks and RPC Enpoints | Bitlayer + + + -
-

Networks and RPC Enpoints

This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.

Bitlayer Mainnet

ParameterValue
Network NameBitlayer Mainnet
Chain ID200901
Currency SymbolBTC
Explorerhttps://www.btrscan.com
Public RPC URLshttps://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer
WebSocket
wss://ws.bitlayer.org
wss://ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Mainnet

Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin

Click the above link to know more about our Mainnet-V1.

Bitlayer Testnet

ParameterValue
NetworkBitlayer Testnet
Chain ID200810
Currency SymbolBTC
Explorerhttps://testnet-scan.bitlayer.org
Public RPC URLhttps://testnet-rpc.bitlayer.org
WebSocket
wss://testnet-ws.bitlayer.org
wss://testnet-ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Testnet
tip

The "currency symbol" is required by some wallets like MetaMask.

Node Providers

Provider NameProvider URL
Ankrhttps://bitlayer-rpc.com/
- - +

Networks and RPC Enpoints

+

This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.

+

Bitlayer Mainnet

+
ParameterValue
Network NameBitlayer Mainnet
Chain ID200901
Currency SymbolBTC
Explorerhttps://www.btrscan.com
Public RPC URLshttps://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer
WebSocket
wss://ws.bitlayer.org
wss://ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Mainnet
+

Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin

+

Click the above link to know more about our Mainnet-V1.

+

Bitlayer Testnet

+
ParameterValue
NetworkBitlayer Testnet
Chain ID200810
Currency SymbolBTC
Explorerhttps://testnet-scan.bitlayer.org
Public RPC URLhttps://testnet-rpc.bitlayer.org
WebSocket
wss://testnet-ws.bitlayer.org
wss://testnet-ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Testnet
+
tip

The "currency symbol" is required by some wallets like MetaMask.

+

Node Providers

+
Provider NameProvider URL
Ankrhttps://bitlayer-rpc.com/
\ No newline at end of file diff --git a/docs/BitlayerNetwork/PegTokens/index.html b/docs/BitlayerNetwork/PegTokens/index.html index 4bf98e95..53015807 100644 --- a/docs/BitlayerNetwork/PegTokens/index.html +++ b/docs/BitlayerNetwork/PegTokens/index.html @@ -1,18 +1,16 @@ - + - - - -Peg Tokens | Bitlayer - - + +Peg Tokens | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/Build/Compile and Run/index.html b/docs/Build/Compile and Run/index.html index 60c68453..6f846530 100644 --- a/docs/Build/Compile and Run/index.html +++ b/docs/Build/Compile and Run/index.html @@ -1,18 +1,80 @@ - + - - - -Compile, Run and Deploy | Bitlayer - - + +Compile, Run and Deploy | Bitlayer + + + -
-

Compile, Run and Deploy

This guide walks you through compiling and running Bitlayer.

Download

Download the Bitlayer source code using the following git command:

git clone https://github.com/bitlayer-org/bitlayer-l2.git

Install Golang

Before compiling Bitlayer, make sure you have Golang installed on your system. Refer to the official Golang website (https://go.dev/dl/) for download and installation instructions.

Compile

  1. Navigate to the directory where you cloned the Bitlayer source code using:

    cd /path/to/bitlayer-l2
  2. Compile Bitlayer by running the following command:

    make geth

    This will create a compiled binary in the build/bin folder.

Run

  1. Get a list of available options and their descriptions by running:

    ./build/bin/geth --help
  2. Refer to the Command-line Options documentation for specific usage details.

Custom Option:

Bitlayer offers a custom option named --traceaction:

--traceaction value     (default: 0)
Trace internal tx call/create/suicide action, 0=no trace, 1=trace only native token > 0, 2=trace all

This option allows you to enable or disable custom JSON-RPC methods for tracing internal transactions.

Deployment

Introduce systemd management configs.

Hardware

Minimum

8core
16g
ssd iops>5k
16core
32g
ssd iops>5k

Network & Port

External IP Address
Port TCP/UDP 31031

Chain Node

  • config.toml
[Eth]
SyncMode = "snap"
TrieCleanCacheRejournal= 300000000000
TrieTimeout = 20000000000


[Eth.Miner]
GasFloor = 40000000
GasCeil = 40000000
GasPrice = 100000000
Recommit = 3000000000


[Eth.TxPool]
NoLocals = true
Journal = "transactions.rlp"
Rejournal = 600000000000
PriceLimit = 100000000
PriceBump = 10
AccountSlots = 64
GlobalSlots = 10240
AccountQueue = 32
GlobalQueue = 1024
Lifetime = 1800000000000

[Node]
DataDir = "/data/bitlayer-l2/chain/data"
InsecureUnlockAllowed = true
NoUSB = true
IPCPath = "geth.ipc"
HTTPHost = "0.0.0.0"
HTTPPort = 8545
HTTPCors = ["*"]
HTTPVirtualHosts = ["*"]
HTTPModules = ['eth', 'net', 'web3']

WSHost = "0.0.0.0"
WSPort = 8546
WSModules = ['eth', 'net', 'web3']

GraphQLVirtualHosts = ["localhost"]


[Node.P2P]
MaxPeers = 50
NoDiscovery = false
ListenAddr = ":31031"
EnableMsgEvents = false

[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000

use snap sync in the config, if full needed - change this line

SyncMode = "snap"

to

SyncMode = "full"

Start Bash

To show full detail help info of all flags, type geth help or geth -h

  • run.sh
#!/usr/bin/env bash
/data/bitlayer-l2/chain/geth-linux-amd64 \
--config /data/bitlayer-l2/chain/config.toml \
--log.file /data/bitlayer-l2/chain/logs/chain.log \
--log.rotate=true \
--authrpc.port 8445 \
--traceaction 2 \
--verbosity 3

if you need to use it as archive node, add:

--syncmode full \
--gcmode archive \

so:

#!/usr/bin/env bash
/data/bitlayer-l2/chain/geth-linux-amd64 \
--config /data/bitlayer-l2/chain/config.toml \
--log.file /data/bitlayer-l2/chain/logs/chain.log \
--log.rotate=true \
--authrpc.port 8445 \
--traceaction 2 \
--syncmode full \
--gcmode archive \
--verbosity 3

If no network flags were provided, the node will connect the bitlayer mainnet by default. If you want to connect to bitlayer testnet, add:

--testnet

systemd config

[Unit]
Description=bitlayer-l2 chain service

[Service]
Type=simple
ExecStart=/bin/sh /data/bitlayer-l2/chain/run.sh
WorkingDirectory=/data/bitlayer-l2/chain
TimeoutSec=600
Restart=on-failure
RestartSec=5s

LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
- - +

Compile, Run and Deploy

+

This guide walks you through compiling and running Bitlayer.

+

Download

+

Download the Bitlayer source code using the following git command:

+
git clone https://github.com/bitlayer-org/bitlayer-l2.git
+

Install Golang

+

Before compiling Bitlayer, make sure you have Golang installed on your system. Refer to the official Golang website (https://go.dev/dl/) for download and installation instructions.

+

Compile

+
    +
  1. +

    Navigate to the directory where you cloned the Bitlayer source code using:

    +
    cd /path/to/bitlayer-l2
    +
  2. +
  3. +

    Compile Bitlayer by running the following command:

    +
    make geth
    +

    This will create a compiled binary in the build/bin folder.

    +
  4. +
+

Run

+
    +
  1. +

    Get a list of available options and their descriptions by running:

    +
    ./build/bin/geth --help
    +
  2. +
  3. +

    Refer to the Command-line Options documentation for specific usage details.

    +
  4. +
+

Custom Option:

+

Bitlayer offers a custom option named --traceaction:

+
--traceaction value     (default: 0)
Trace internal tx call/create/suicide action, 0=no trace, 1=trace only native token > 0, 2=trace all
+

This option allows you to enable or disable custom JSON-RPC methods for tracing internal transactions.

+

Deployment

+

Introduce systemd management configs.

+

Hardware

+

Minimum

+
8core
16g
ssd iops>5k
+ +
16core
32g
ssd iops>5k
+

Network & Port

+
External IP Address
Port TCP/UDP 31031
+

Chain Node

+
    +
  • config.toml
  • +
+
[Eth]
SyncMode = "snap"
TrieCleanCacheRejournal= 300000000000
TrieTimeout = 20000000000


[Eth.Miner]
GasFloor = 40000000
GasCeil = 40000000
GasPrice = 100000000
Recommit = 3000000000


[Eth.TxPool]
NoLocals = true
Journal = "transactions.rlp"
Rejournal = 600000000000
PriceLimit = 100000000
PriceBump = 10
AccountSlots = 64
GlobalSlots = 10240
AccountQueue = 32
GlobalQueue = 1024
Lifetime = 1800000000000

[Node]
DataDir = "/data/bitlayer-l2/chain/data"
InsecureUnlockAllowed = true
NoUSB = true
IPCPath = "geth.ipc"
HTTPHost = "0.0.0.0"
HTTPPort = 8545
HTTPCors = ["*"]
HTTPVirtualHosts = ["*"]
HTTPModules = ['eth', 'net', 'web3']

WSHost = "0.0.0.0"
WSPort = 8546
WSModules = ['eth', 'net', 'web3']

GraphQLVirtualHosts = ["localhost"]


[Node.P2P]
MaxPeers = 50
NoDiscovery = false
ListenAddr = ":31031"
EnableMsgEvents = false

[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000
+

use snap sync in the config, if full needed - change this line

+
SyncMode = "snap"
+

to

+
SyncMode = "full"
+

Start Bash

+
+

To show full detail help info of all flags, type geth help or geth -h

+
+
    +
  • run.sh
  • +
+
#!/usr/bin/env bash
/data/bitlayer-l2/chain/geth-linux-amd64 \
--config /data/bitlayer-l2/chain/config.toml \
--log.file /data/bitlayer-l2/chain/logs/chain.log \
--log.rotate=true \
--authrpc.port 8445 \
--traceaction 2 \
--verbosity 3
+

if you need to use it as archive node, add:

+
--syncmode full \
--gcmode archive \
+

so:

+
#!/usr/bin/env bash
/data/bitlayer-l2/chain/geth-linux-amd64 \
--config /data/bitlayer-l2/chain/config.toml \
--log.file /data/bitlayer-l2/chain/logs/chain.log \
--log.rotate=true \
--authrpc.port 8445 \
--traceaction 2 \
--syncmode full \
--gcmode archive \
--verbosity 3
+

If no network flags were provided, the node will connect the bitlayer mainnet by default. If you want to connect to bitlayer testnet, add:

+
--testnet
+

systemd config

+
[Unit]
Description=bitlayer-l2 chain service

[Service]
Type=simple
ExecStart=/bin/sh /data/bitlayer-l2/chain/run.sh
WorkingDirectory=/data/bitlayer-l2/chain
TimeoutSec=600
Restart=on-failure
RestartSec=5s

LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
\ No newline at end of file diff --git a/docs/Build/QuickStart/index.html b/docs/Build/QuickStart/index.html index 54bbe59c..3749ada4 100644 --- a/docs/Build/QuickStart/index.html +++ b/docs/Build/QuickStart/index.html @@ -1,18 +1,60 @@ - + - - - -Quick Start Guide | Bitlayer - - + +Quick Start Guide | Bitlayer + + + -
-

Quick Start Guide

Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.

Note:

We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed.

Network Configuration

Bitlayer Mainnet

ParameterValue
Network NameBitlayer Mainnet
Chain ID200901
Currency SymbolBTC
Explorerhttps://www.btrscan.com
Public RPC URLshttps://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer
WebSocket
wss://ws.bitlayer.org
wss://ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Mainnet

Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin

Click the above link to know more about our Mainnet-V1.

Bitlayer Testnet

ParameterValue
NetworkBitlayer Testnet
Chain ID200810
Currency SymbolBTC
Explorerhttps://testnet-scan.bitlayer.org
Public RPC URLhttps://testnet-rpc.bitlayer.org
WebSocket
wss://testnet-ws.bitlayer.org
wss://testnet-ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Testnet
tip

The "currency symbol" is required by some wallets like MetaMask.

Here are the quick access commands for the Bitlayer Testnet:

Hardhat

Modify your Hardhat config file hardhat.config.ts to point at the Bitlayer Testnet public RPC.

const config: HardhatUserConfig = {
...
networks: {
bitlayer: {
url: "https://testnet-rpc.bitlayer.org" || "",
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
},
},
};

Foundry

To deploy using the Bitlayer Testnet Public RPC, run:

forge create ... --rpc-url=https://https://testnet-rpc.bitlayer.org/ --legacy

Remix Web IDE

After compiling your contracts, the easiest way to deploy using Remix is by setting up Metamask, then selecting the Bitlayer Testnet network.

In the “Deploy and Run Transactions” tab, use the “Environment” drop-down and select “Injected Provider - MetaMask.”

Connect your wallet and select the Bitlayer Testnet. Your account should be selected automatically in Remix, and you can click “Deploy.”

Truffle

caution

The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog.

Assuming you already have a Truffle environment setup, go to the Truffle configuration file, truffle.js. Make sure to have installed HDWalletProvider: npm install @truffle/hdwallet-provider@1.4.0

const HDWalletProvider = require("@truffle/hdwallet-provider")
...
module.exports = {
networks: {
bitlayer: {
provider: () =>
new HDWalletProvider(process.env.PRIVATE_KEY, "https://testnet-rpc.bitlayer.org"),
network_id: '*',
},
}
}

Brownie

To add the Bitlayer Testnet, run the following command:

brownie networks add Bitlayer host=https://testnet-rpc.bitlayer.org chainid=200810 

To set this as your default network, add the following in your project config file:

networks:
default: bitlayer

Another way to add the Bitlayer Testnet is to create a yaml file and run a command to add it.

This is an example of a yaml file called network-config.yaml

live:
- name: Ethereum
networks:
- chainid: 200810
explorer: https://testnet-scan.bitlayer.org
host: https://testnet-rpc.bitlayer.org
id: bitlayer
name: Bitlayer Testnet

To add the Bitlayer Testnet to the network list, run the following command:

brownie networks import ./network-config.yaml

To deploy on Bitlayer, run the following command. In this example, token.py is the script to deploy the smart contract. Replace this with the name of your script:

brownie run token.py --network Bitlayer

ethers.js

Setting up a Bitlayer Testnet provider in an ethers script:

import { ethers } from "ethers"

const provider = new ethers.providers.JsonRpcProvider("https://testnet-rpc.bitlayer.org")

scaffold-eth

To deploy using Scaffold-eth, you’ll need to point both your Hardhat and React settings at the Bitlayer Testnet.

Configure Hardhat

In the packages/hardhat/hardhat.config.js file, you’ll add the network and select it as the default network.

...
//
// Select the network you want to deploy to here:
//
const defaultNetwork = "Bitlayer";
...
module.exports = {
...
networks: {
...
Bitlayer: {
url: "https://testnet-rpc.bitlayer.org",
accounts: {
mnemonic: mnemonic(),
},
},
}
...
}

Be sure to fund the deployment wallet as well! Run yarn generate to create the wallet and yarn account to check its funds. Once funded, run yarn deploy --network Bitlayer to deploy on the Bitlayer testnet.

- - +

Quick Start Guide

+

Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.

+
Note:

We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed.

+

Network Configuration

+

Bitlayer Mainnet

+
ParameterValue
Network NameBitlayer Mainnet
Chain ID200901
Currency SymbolBTC
Explorerhttps://www.btrscan.com
Public RPC URLshttps://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer
WebSocket
wss://ws.bitlayer.org
wss://ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Mainnet
+

Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin

+

Click the above link to know more about our Mainnet-V1.

+

Bitlayer Testnet

+
ParameterValue
NetworkBitlayer Testnet
Chain ID200810
Currency SymbolBTC
Explorerhttps://testnet-scan.bitlayer.org
Public RPC URLhttps://testnet-rpc.bitlayer.org
WebSocket
wss://testnet-ws.bitlayer.org
wss://testnet-ws.bitlayer-rpc.com
Contract AddressesRefer to the Contract Addresses page
Connect WalletClick here to connect your wallet to Bitlayer Testnet
+
tip

The "currency symbol" is required by some wallets like MetaMask.

+

Here are the quick access commands for the Bitlayer Testnet:

+

Hardhat

+

Modify your Hardhat config file hardhat.config.ts to point at the Bitlayer Testnet public RPC.

+
const config: HardhatUserConfig = {
...
networks: {
bitlayer: {
url: "https://testnet-rpc.bitlayer.org" || "",
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
},
},
};
+

Foundry

+

To deploy using the Bitlayer Testnet Public RPC, run:

+
forge create ... --rpc-url=https://https://testnet-rpc.bitlayer.org/ --legacy
+

Remix Web IDE

+

After compiling your contracts, the easiest way to deploy using Remix is by setting up Metamask, then selecting the Bitlayer Testnet network.

+

In the “Deploy and Run Transactions” tab, use the “Environment” drop-down and select “Injected Provider - MetaMask.”

+

Connect your wallet and select the Bitlayer Testnet. Your account should be selected automatically in Remix, and you can click “Deploy.”

+

Truffle

+
caution

The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog.

+

Assuming you already have a Truffle environment setup, go to the Truffle configuration file, truffle.js. Make sure to have installed HDWalletProvider: npm install @truffle/hdwallet-provider@1.4.0

+
const HDWalletProvider = require("@truffle/hdwallet-provider")
...
module.exports = {
networks: {
bitlayer: {
provider: () =>
new HDWalletProvider(process.env.PRIVATE_KEY, "https://testnet-rpc.bitlayer.org"),
network_id: '*',
},
}
}
+

Brownie

+

To add the Bitlayer Testnet, run the following command:

+
brownie networks add Bitlayer host=https://testnet-rpc.bitlayer.org chainid=200810 
+

To set this as your default network, add the following in your project config file:

+
networks:
default: bitlayer
+

Another way to add the Bitlayer Testnet is to create a yaml file and run a command to add it.

+

This is an example of a yaml file called network-config.yaml

+
live:
- name: Ethereum
networks:
- chainid: 200810
explorer: https://testnet-scan.bitlayer.org
host: https://testnet-rpc.bitlayer.org
id: bitlayer
name: Bitlayer Testnet
+

To add the Bitlayer Testnet to the network list, run the following command:

+
brownie networks import ./network-config.yaml
+

To deploy on Bitlayer, run the following command. In this example, token.py is the script to deploy the smart contract. Replace this with the name of your script:

+
brownie run token.py --network Bitlayer
+

ethers.js

+

Setting up a Bitlayer Testnet provider in an ethers script:

+
import { ethers } from "ethers"

const provider = new ethers.providers.JsonRpcProvider("https://testnet-rpc.bitlayer.org")
+

scaffold-eth

+

To deploy using Scaffold-eth, you’ll need to point both your Hardhat and React settings at the Bitlayer Testnet.

+

Configure Hardhat

+

In the packages/hardhat/hardhat.config.js file, you’ll add the network and select it as the default network.

+
...
//
// Select the network you want to deploy to here:
//
const defaultNetwork = "Bitlayer";
...
module.exports = {
...
networks: {
...
Bitlayer: {
url: "https://testnet-rpc.bitlayer.org",
accounts: {
mnemonic: mnemonic(),
},
},
}
...
}
+

Be sure to fund the deployment wallet as well! Run yarn generate to create the wallet and yarn account to check its funds. Once funded, run yarn deploy --network Bitlayer to deploy on the Bitlayer testnet.

\ No newline at end of file diff --git a/docs/DeveloperResources/BTC Connect/index.html b/docs/DeveloperResources/BTC Connect/index.html index 83b895e3..7402d8e5 100644 --- a/docs/DeveloperResources/BTC Connect/index.html +++ b/docs/DeveloperResources/BTC Connect/index.html @@ -1,18 +1,134 @@ - + - - - -BTC Connect (Account Abstraction) | Bitlayer - - + +BTC Connect (Account Abstraction) | Bitlayer + + + -
-

BTC Connect (Account Abstraction)

Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.

BTC Connect achieves this by, firstly, allowing users to connect to your dApp with their UniSat, OKX, TokenPocket, Bybit, or Bitget wallet. Upon connecting, a smart account is generated on Bitlayer and assigned to their BTC account. This smart account can then be used and authenticated directly through their BTC wallet, providing native Bitcoin users with a simple interface to interact with applications on Bitlayer.

BTC Connect natively supports Bitlayer within its flagship SDK, @particle-network/btc-connectkit, and has been deployed on Testnet and Mainnet. This document will provide an initial introduction and step-by-step guide to working with BTC Connect on Bitlayer through this SDK.

Introduction

Throughout this page, you'll find details on installing, configuring, initializing, and completing a full integration of BTC Connect within your application on Bitlayer. Specifically, this guide will contextualize this process by building a simple create-react-app demo application. Before starting, you can find this application here.

To learn more about BTC Connect, head over to Particle Network's documentation.


Before configuring and implementing BTC Connect, you'll need to meet the following prerequisites:

  • Have a project and application configured within the Particle dashboard.
  • Prepare a create-react-app or Next.js application structure to integrate BTC Connect with the required dependencies installed.

Dashboard Configuration

Particle Network's dashboard acts as the central control panel for all applications that use BTC Connect or Smart Wallet-as-a-Service. To use and authenticate BTC Connect, you'll need to retrieve various keys from this dashboard, which you can be do through the following process:

  1. Head over to the Particle dashboard, and either login or create a new account.
  2. Create a new project for your application.
  3. After opening this project, create a web application representing your dApp.
  4. Finally, with an application made, copy your Project ID, Client Key, and App ID.

You'll be using these three values momentarily to configure BTC Connect. If applicable, you can save these within corresponding environment variables, such as REACT_APP_PROJECT_ID, REACT_APP_CLIENT_KEY, and REACT_APP_APP_ID.

Dependency Installation

Within your React-based application (in this example, we'll be using create-react-app), you'll need to install two key dependencies related to BTC Connect. These are:

  • @particle-network/btc-connectkit, the primary SDK for BTC Connect.
  • @particle-network/chains, a collection of chain objects including BitlayerTestnet and Bitlayer.

To install these libraries, run one of the following commands within your project:

yarn add @particle-network/btc-connectkit @particle-network/chains


# OR


npm install @particle-network/btc-connectkit @particle-network/chains


# Other package managers such as pnpm would work too.

Configuring BTC Connect

BTC Connect (@particle-network/btc-connectkit) is a React-based SDK. Therefore, configuring it and preparing for integration will require the initialization of a corresponding React component, which will wrap your core application component or JSX. In this example, this will take place within index.tsx.

Within your index.tsx file (or the equivalent location for your project), import the following objects from @particle-network/btc-connectkit:

  • ConnectProvider, the React component used for configuration.
  • One, or multiple of the following wallets:
    • OKXConnector
    • UnisatConnector
    • BitgetConnector
    • TokenPocketConnector
    • BybitConnector

With these imported, you're ready to configure the ConnectProvider component through its options and connectors parameters. Starting with options, you'll need to define the following properties:

  • projectId, clientKey, and appId. These were previously retrieved from the Particle dashboard.
  • aaOptions, which contains accountContracts, taking:
    • BTC, the smart account implementation you'll be leveraging.
      • chainIds, one or multiple chains that your application will support. In this case, you can either use Bitlayer's chain ID, 200810, or BitlayerTestnet.id from @particle-network/chains.
      • version, the BTC smart account version you intend to use. For Bitlayer, this should be 2.0.0. If you intend to use more than just Bitlayer, you may need to define another instance of BTC using version 1.0.0. For more information on which chains support 1.0.0 and which support 2.0.0, head over to Particle Network's documentation.
  • walletOptions, which contains:
    • visible, a Boolean determining whether or not Particle Network's embedded wallet modal will be shown after a user connects their Bitcoin wallet. If set to true, users will have direct access to their associated smart accounts through this embedded interface. Otherwise, if false, developers will need to retrieve and reflect wallet information, such as balances, independently.

Once you've defined options using the parameters detailed above, you'll need to select the wallets you'd like to be supported within BTC Connect through the connectors property.

connectors is simply an array of wallet objects ( previously imported), such as OKXConnector. These should be initialized through syntax such as [new OKXConnector(), new UnisatConnector()].

Below is an example of what a configured instance of ConnectProvider typically looks like; this is demonstrated through a central index.tsx file:

import React from 'react';
import ReactDOM from 'react-dom/client';
import {
ConnectProvider,
OKXConnector, //
UnisatConnector, //
BitgetConnector, // -- Only one connector is required, although any combination of these five may be used.
TokenPocketConnector, //
BybitConnector //
} from '@particle-network/btc-connectkit';
import { BitlayerTestnet } from '@particle-network/chains';




// The component in which you're using BTC Connect
import App from './App';




ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
<ConnectProvider
options={{
projectId: process.env.REACT_APP_PROJECT_ID, //
clientKey: process.env.REACT_APP_CLIENT_KEY, // -- Retrieved from https://dashboard.particle.network
appId: process.env.REACT_APP_APP_ID, //
aaOptions: {
accountContracts: {
BTC: [
{
chainIds: [BitlayerTestnet.id],
version: '2.0.0',
}
]
}
},
walletOptions: {
visible: true
}
}}
connectors={[new UnisatConnector(), new OKXConnector(), new BitgetConnector(), new TokenPocketConnector(), new BybitConnector()]}
>
<App />
</ConnectProvider>
</React.StrictMode>
)

Once ConnectProvider is configured, you're ready to implement BTC Connect through your central application component.

Application Implementation

At this point, you should have:

  • Created a new project and application through the Particle dashboard.
  • Installed @particle-network/btc-connectkit and @particle-network/chains.
  • Configured BTC Connect through ConnectProvider.

Now, to integrate BTC Connect, we'll do the following:

  • Configure Ethers, or any other standard Web3 library (such as Web3.js) using hooks from @particle-network/btc-connectkit.
  • Prepare a "Connect Wallet" button.
  • Test BTC Connect by executing transactions on both Bitlayer and native Bitcoin.

Part 1: Interacting with BTC Connect through an EIP-1193 Provider

Interaction with BTC Connect can be facilitated either natively through the SDK –with functions from the useETHProvider hook, such as buildUserOp (for constructing transactions) and sendUserOp (for executing them), or through an external Web3 library such as Ethers. In this example, we'll focus on the latter.

Specifically, leveraging the user's smart account on Bitlayer through Ethers requires using BTC Connect's EIP-1193 provider object. After a user connects, this object will be populated with an EVM account instance.

To retrieve this object, you'll need to define provider from the useETHProvider hook. Using provider, an instance of Ethers (or Web3.js, viem, etc.) can be constructed, as shown below.

import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';


const App = () => {
const { provider } = useETHProvider();

const customProvider = new ethers.providers.Web3Provider(provider, "any");

...
};

This Ethers instance can be used directly for transaction construction and execution. Signatures will be pushed to the connected Bitcoin wallet directly through the means of the EIP-1193 provider.

Part 2: Facilitating Wallet Connection

Wallet connection can be implemented through one of two ways with BTC Connect:

The first method requires using BTC Connect's built-in connection modal, which contains buttons for the wallets previously defined within connectors (on ConnectProvider). Below is a screenshot of this interface.

Alternatively, direct shortcuts to these wallets (independent from the above interface) can be configured in scenarios where you may want to design your own wallet connection interface.

Starting with the built-in modal, this can be opened by simply calling openConnectModal from the useConnectModal hook; upon calling, the aforementioned interface will be opened. An example of this has been included below:

import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';
import './App.css';




const App = () => {
const { openConnectModal } = useConnectModal();

...

openConnectModal();


...
}

For a more hands-on approach to designing your own interface, you can connect to individual wallets using the connect function from the useConnector hook. This function will simply take a string representing the wallet you'd like to connect to, such as 'unisat', as shown below.

import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';
import './App.css';




const App = () => {
const { connect } = useConnector();

...

connect('unisat');
// Or 'okx', 'bybit', etc.

...
}

Part 3: Transaction Execution

Bitlayer (EVM)

Now that you've facilitated wallet connection and configured a corresponding Ethers object, you're ready to execute transactions on Bitlayer using the associated smart account generated from the user's Bitcoin wallet.

Using Ethers, this is done by constructing a simple transaction (using standard fields such as to, value, data, etc.) and executing it using the signer property with customProvider.getSigner().

Any transaction that can be constructed and executed through Ethers translates 1:1 within this flow.

Below is an example that burns 0.001 BTC.

const executeTxEvm = async () => {
const signer = customProvider.getSigner();




const tx = {
to: "0x000000000000000000000000000000000000dEaD", // Burn address
value: ethers.utils.parseEther('0.001'), // 0.001 BTC
data: "0x" // Optional, only define for contract interaction or related operations
};




// Gasless due to usage of SendTransactonMode.Gasless within customProvider
const txResponse = await signer.sendTransaction(tx);
const txReceipt = await txResponse.wait();




notification.success({
message: "Transaction Successful",
description: (
<div>
Transaction Hash: <a href={`https://testnet-scan.bitlayer.org/en-us/tx/${txReceipt.transactionHash}`} target="_blank" rel="noopener noreferrer">{txReceipt.transactionHash}</a>
</div>
)
});
};

Upon executing, a signature will be requested from the connected Bitcoin wallet. This signature will directly authenticate the associated smart account on Bitlayer.

Bitcoin (L1)

Alternatively, the same wallet connection can be used to simultaneously execute transactions on native Bitcoin.

To handle this, BTC Connect has the useBTCProvider hook, containing functions such as sendBitcoin.

sendBitcoin will send a standard P2P transaction on Bitcoin, requesting a signature from the user's connected Bitcoin wallet. The snippet shown below demonstrates an example of this through a custom function, executeTxBtc.

import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';
import './App.css';


const App = () => {
const { sendBitcoin, accounts } = useBTCProvider();

const executeTxBtc = async () => {
// Sends 1 satoshi back to the sender
const hash = await sendBitcoin(accounts[0], 1);




notification.success({
message: 'Transaction Successful',
description: (
<div>
Transaction Hash: <a href={`https://live.blockcypher.com/btc-testnet/tx/${hash}`} target="_blank" rel="noopener noreferrer">{hash}</a>
</div>
)
});
};
};

Conclusion

Through the above guide, you should now understand how to:

  • Configure the Particle Network dashboard.
  • Install and initialize BTC Connect (@particle-network/btc-connectkit).
  • Construct a custom Ethers provider to manage the user's smart account.
  • Facilitate wallet connection.
  • Build and execute transactions on both Bitlayer and native Bitcoin.

To view and try a complete demo application based on the snippets shown in this guide, visit our dedicated GitHub repository.

Particle Network has extensive documentation covering the implementation of BTC Connect within applications built on Bitlayer, which can be found here.

- - +

BTC Connect (Account Abstraction)

+

Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.

+

BTC Connect achieves this by, firstly, allowing users to connect to your dApp with their UniSat, OKX, TokenPocket, Bybit, or Bitget wallet. Upon connecting, a smart account is generated on Bitlayer and assigned to their BTC account. This smart account can then be used and authenticated directly through their BTC wallet, providing native Bitcoin users with a simple interface to interact with applications on Bitlayer.

+

BTC Connect natively supports Bitlayer within its flagship SDK, @particle-network/btc-connectkit, and has been deployed on Testnet and Mainnet. This document will provide an initial introduction and step-by-step guide to working with BTC Connect on Bitlayer through this SDK.

+

Introduction

+

Throughout this page, you'll find details on installing, configuring, initializing, and completing a full integration of BTC Connect within your application on Bitlayer. Specifically, this guide will contextualize this process by building a simple create-react-app demo application. Before starting, you can find this application here.

+

To learn more about BTC Connect, head over to Particle Network's documentation.

+
+

Before configuring and implementing BTC Connect, you'll need to meet the following prerequisites:

+
    +
  • Have a project and application configured within the Particle dashboard.
  • +
  • Prepare a create-react-app or Next.js application structure to integrate BTC Connect with the required dependencies installed.
  • +
+

Dashboard Configuration

+

Particle Network's dashboard acts as the central control panel for all applications that use BTC Connect or Smart Wallet-as-a-Service. To use and authenticate BTC Connect, you'll need to retrieve various keys from this dashboard, which you can be do through the following process:

+
    +
  1. Head over to the Particle dashboard, and either login or create a new account.
  2. +
  3. Create a new project for your application.
  4. +
  5. After opening this project, create a web application representing your dApp.
  6. +
  7. Finally, with an application made, copy your Project ID, Client Key, and App ID.
  8. +
+

You'll be using these three values momentarily to configure BTC Connect. If applicable, you can save these within corresponding environment variables, such as REACT_APP_PROJECT_ID, REACT_APP_CLIENT_KEY, and REACT_APP_APP_ID.

+

Dependency Installation

+

Within your React-based application (in this example, we'll be using create-react-app), you'll need to install two key dependencies related to BTC Connect. These are:

+
    +
  • @particle-network/btc-connectkit, the primary SDK for BTC Connect.
  • +
  • @particle-network/chains, a collection of chain objects including BitlayerTestnet and Bitlayer.
  • +
+

To install these libraries, run one of the following commands within your project:

+
yarn add @particle-network/btc-connectkit @particle-network/chains


# OR


npm install @particle-network/btc-connectkit @particle-network/chains


# Other package managers such as pnpm would work too.
+

Configuring BTC Connect

+

BTC Connect (@particle-network/btc-connectkit) is a React-based SDK. Therefore, configuring it and preparing for integration will require the initialization of a corresponding React component, which will wrap your core application component or JSX. In this example, this will take place within index.tsx.

+

Within your index.tsx file (or the equivalent location for your project), import the following objects from @particle-network/btc-connectkit:

+
    +
  • ConnectProvider, the React component used for configuration.
  • +
  • One, or multiple of the following wallets: +
      +
    • OKXConnector
    • +
    • UnisatConnector
    • +
    • BitgetConnector
    • +
    • TokenPocketConnector
    • +
    • BybitConnector
    • +
    +
  • +
+

With these imported, you're ready to configure the ConnectProvider component through its options and connectors parameters. Starting with options, you'll need to define the following properties:

+
    +
  • projectId, clientKey, and appId. These were previously retrieved from the Particle dashboard.
  • +
  • aaOptions, which contains accountContracts, taking: +
      +
    • BTC, the smart account implementation you'll be leveraging. +
        +
      • chainIds, one or multiple chains that your application will support. In this case, you can either use Bitlayer's chain ID, 200810, or BitlayerTestnet.id from @particle-network/chains.
      • +
      • version, the BTC smart account version you intend to use. For Bitlayer, this should be 2.0.0. If you intend to use more than just Bitlayer, you may need to define another instance of BTC using version 1.0.0. For more information on which chains support 1.0.0 and which support 2.0.0, head over to Particle Network's documentation.
      • +
      +
    • +
    +
  • +
  • walletOptions, which contains: +
      +
    • visible, a Boolean determining whether or not Particle Network's embedded wallet modal will be shown after a user connects their Bitcoin wallet. If set to true, users will have direct access to their associated smart accounts through this embedded interface. Otherwise, if false, developers will need to retrieve and reflect wallet information, such as balances, independently.
    • +
    +
  • +
+

Once you've defined options using the parameters detailed above, you'll need to select the wallets you'd like to be supported within BTC Connect through the connectors property.

+

connectors is simply an array of wallet objects ( previously imported), such as OKXConnector. These should be initialized through syntax such as [new OKXConnector(), new UnisatConnector()].

+

Below is an example of what a configured instance of ConnectProvider typically looks like; this is demonstrated through a central index.tsx file:

+
import React from 'react';
import ReactDOM from 'react-dom/client';
import {
ConnectProvider,
OKXConnector, //
UnisatConnector, //
BitgetConnector, // -- Only one connector is required, although any combination of these five may be used.
TokenPocketConnector, //
BybitConnector //
} from '@particle-network/btc-connectkit';
import { BitlayerTestnet } from '@particle-network/chains';




// The component in which you're using BTC Connect
import App from './App';




ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
<ConnectProvider
options={{
projectId: process.env.REACT_APP_PROJECT_ID, //
clientKey: process.env.REACT_APP_CLIENT_KEY, // -- Retrieved from https://dashboard.particle.network
appId: process.env.REACT_APP_APP_ID, //
aaOptions: {
accountContracts: {
BTC: [
{
chainIds: [BitlayerTestnet.id],
version: '2.0.0',
}
]
}
},
walletOptions: {
visible: true
}
}}
connectors={[new UnisatConnector(), new OKXConnector(), new BitgetConnector(), new TokenPocketConnector(), new BybitConnector()]}
>
<App />
</ConnectProvider>
</React.StrictMode>
)
+

Once ConnectProvider is configured, you're ready to implement BTC Connect through your central application component.

+

Application Implementation

+

At this point, you should have:

+
    +
  • Created a new project and application through the Particle dashboard.
  • +
  • Installed @particle-network/btc-connectkit and @particle-network/chains.
  • +
  • Configured BTC Connect through ConnectProvider.
  • +
+

Now, to integrate BTC Connect, we'll do the following:

+
    +
  • Configure Ethers, or any other standard Web3 library (such as Web3.js) using hooks from @particle-network/btc-connectkit.
  • +
  • Prepare a "Connect Wallet" button.
  • +
  • Test BTC Connect by executing transactions on both Bitlayer and native Bitcoin.
  • +
+

Part 1: Interacting with BTC Connect through an EIP-1193 Provider

+

Interaction with BTC Connect can be facilitated either natively through the SDK –with functions from the useETHProvider hook, such as buildUserOp (for constructing transactions) and sendUserOp (for executing them), or through an external Web3 library such as Ethers. In this example, we'll focus on the latter.

+

Specifically, leveraging the user's smart account on Bitlayer through Ethers requires using BTC Connect's EIP-1193 provider object. After a user connects, this object will be populated with an EVM account instance.

+

To retrieve this object, you'll need to define provider from the useETHProvider hook. Using provider, an instance of Ethers (or Web3.js, viem, etc.) can be constructed, as shown below.

+
import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';


const App = () => {
const { provider } = useETHProvider();

const customProvider = new ethers.providers.Web3Provider(provider, "any");

...
};
+

This Ethers instance can be used directly for transaction construction and execution. Signatures will be pushed to the connected Bitcoin wallet directly through the means of the EIP-1193 provider.

+

Part 2: Facilitating Wallet Connection

+

Wallet connection can be implemented through one of two ways with BTC Connect:

+

The first method requires using BTC Connect's built-in connection modal, which contains buttons for the wallets previously defined within connectors (on ConnectProvider). Below is a screenshot of this interface.

+

+

Alternatively, direct shortcuts to these wallets (independent from the above interface) can be configured in scenarios where you may want to design your own wallet connection interface.

+

Starting with the built-in modal, this can be opened by simply calling openConnectModal from the useConnectModal hook; upon calling, the aforementioned interface will be opened. An example of this has been included below:

+
import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';
import './App.css';




const App = () => {
const { openConnectModal } = useConnectModal();

...

openConnectModal();


...
}
+

For a more hands-on approach to designing your own interface, you can connect to individual wallets using the connect function from the useConnector hook. This function will simply take a string representing the wallet you'd like to connect to, such as 'unisat', as shown below.

+
import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';
import { ethers } from 'ethers';
import './App.css';




const App = () => {
const { connect } = useConnector();

...

connect('unisat');
// Or 'okx', 'bybit', etc.

...
}
+

Part 3: Transaction Execution

+

Bitlayer (EVM)

+

Now that you've facilitated wallet connection and configured a corresponding Ethers object, you're ready to execute transactions on Bitlayer using the associated smart account generated from the user's Bitcoin wallet.

+

Using Ethers, this is done by constructing a simple transaction (using standard fields such as to, value, data, etc.) and executing it using the signer property with customProvider.getSigner().

+

Any transaction that can be constructed and executed through Ethers translates 1:1 within this flow.

+

Below is an example that burns 0.001 BTC.

+
const executeTxEvm = async () => {
const signer = customProvider.getSigner();




const tx = {
to: "0x000000000000000000000000000000000000dEaD", // Burn address
value: ethers.utils.parseEther('0.001'), // 0.001 BTC
data: "0x" // Optional, only define for contract interaction or related operations
};




// Gasless due to usage of SendTransactonMode.Gasless within customProvider
const txResponse = await signer.sendTransaction(tx);
const txReceipt = await txResponse.wait();




notification.success({
message: "Transaction Successful",
description: (
<div>
Transaction Hash: <a href={`https://testnet-scan.bitlayer.org/en-us/tx/${txReceipt.transactionHash}`} target="_blank" rel="noopener noreferrer">{txReceipt.transactionHash}</a>
</div>
)
});
};
+

Upon executing, a signature will be requested from the connected Bitcoin wallet. This signature will directly authenticate the associated smart account on Bitlayer.

+

Bitcoin (L1)

+

Alternatively, the same wallet connection can be used to simultaneously execute transactions on native Bitcoin.

+

To handle this, BTC Connect has the useBTCProvider hook, containing functions such as sendBitcoin.

+

sendBitcoin will send a standard P2P transaction on Bitcoin, requesting a signature from the user's connected Bitcoin wallet. The snippet shown below demonstrates an example of this through a custom function, executeTxBtc.

+
import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit';
import './App.css';


const App = () => {
const { sendBitcoin, accounts } = useBTCProvider();

const executeTxBtc = async () => {
// Sends 1 satoshi back to the sender
const hash = await sendBitcoin(accounts[0], 1);




notification.success({
message: 'Transaction Successful',
description: (
<div>
Transaction Hash: <a href={`https://live.blockcypher.com/btc-testnet/tx/${hash}`} target="_blank" rel="noopener noreferrer">{hash}</a>
</div>
)
});
};
};
+

Conclusion

+

Through the above guide, you should now understand how to:

+
    +
  • Configure the Particle Network dashboard.
  • +
  • Install and initialize BTC Connect (@particle-network/btc-connectkit).
  • +
  • Construct a custom Ethers provider to manage the user's smart account.
  • +
  • Facilitate wallet connection.
  • +
  • Build and execute transactions on both Bitlayer and native Bitcoin.
  • +
+

To view and try a complete demo application based on the snippets shown in this guide, visit our dedicated GitHub repository.

+

Particle Network has extensive documentation covering the implementation of BTC Connect within applications built on Bitlayer, which can be found here.

\ No newline at end of file diff --git a/docs/DeveloperResources/Block Explorers/index.html b/docs/DeveloperResources/Block Explorers/index.html index 03cf6e98..2086eaa8 100644 --- a/docs/DeveloperResources/Block Explorers/index.html +++ b/docs/DeveloperResources/Block Explorers/index.html @@ -1,18 +1,25 @@ - + - - - -Block Explorers | Bitlayer - - + +Block Explorers | Bitlayer + + + -
-

Block Explorers

Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.

Mainnet

Access the Bitlayer mainnet block explorer here:

Testnet

Access the Bitlayer testnet block explorer here:

- - +

Block Explorers

+

Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.

+

Mainnet

+

Access the Bitlayer mainnet block explorer here:

+ +

Testnet

+

Access the Bitlayer testnet block explorer here:

+
\ No newline at end of file diff --git a/docs/DeveloperResources/Faucets/index.html b/docs/DeveloperResources/Faucets/index.html index 7fa0ddb5..5cfc8acf 100644 --- a/docs/DeveloperResources/Faucets/index.html +++ b/docs/DeveloperResources/Faucets/index.html @@ -1,18 +1,21 @@ - + - - - -Faucets | Bitlayer - - + +Faucets | Bitlayer + + + -
-

Faucets

Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.

If you want to interact with the Dapps on Bitlayer Testnet, your first stop is going to be to a “faucet” to fill up your “tank”.

Here is a faucet directly distributes Bitlayer Testnet tokens: https://www.bitlayer.org/faucet

faucet

It may take a few seconds for them to appear, but you can check the status by looking for a transaction for your address in Bitlayer Explorer.

testnetscan

This faucet allows developers to request 0.05 BTC test tokens for use in development and testing. You can obtain Bitlayer Testnet tokens every 24 hours for development and the testnet token has no financial value and cannot be traded at a real price.

- - +

Faucets

+

Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.

+

If you want to interact with the Dapps on Bitlayer Testnet, your first stop is going to be to a “faucet” to fill up your “tank”.

+

Here is a faucet directly distributes Bitlayer Testnet tokens: https://www.bitlayer.org/faucet

+

faucet

+

It may take a few seconds for them to appear, but you can check the status by looking for a transaction for your address in Bitlayer Explorer.

+

testnetscan

+

This faucet allows developers to request 0.05 BTC test tokens for use in development and testing. You can obtain Bitlayer Testnet tokens every 24 hours for development and the testnet token has no financial value and cannot be traded at a real price.

\ No newline at end of file diff --git a/docs/DeveloperResources/Subgraph/index.html b/docs/DeveloperResources/Subgraph/index.html index e97efee1..fce3576a 100644 --- a/docs/DeveloperResources/Subgraph/index.html +++ b/docs/DeveloperResources/Subgraph/index.html @@ -1,18 +1,46 @@ - + - - - -Indexing-3rd-Party | Bitlayer - - + +Indexing-3rd-Party | Bitlayer + + + -
-

Indexing-3rd-Party

What is a Subgraph?

Subgraph is a customized, open-source solution for indexing and accessing real-time blockchain data through the GraphQL API. They provide developers with powerful tools to build, customize and access blockchain data according to their needs.

This document will guide you through creating, deploying, and querying this subgraph.

Prerequisites

Before getting started, make sure you have:

Creating a Subgraph

  1. Choose a subgraph name in the format <username>/<subgraph-name>, for example, "alice/mysubgraph".

    • <username>: This is your username on Bifrost.
    • <subgraph-name>: This is the specific name you choose for your subgraph, which usually reflects the functionality of the subgraph or the smart contract it indexes.
  2. Run the following command in your terminal, replacing {apikey} with your Bifrost API key obtained from the links above and <username/subgraph-name> with your chosen subgraph name:

graph create --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>

Removing a Subgraph

If you need to remove a subgraph, run the following command in your terminal, replacing {apikey} with your Bifrost API key and <username/subgraph-name> with the name of the subgraph you want to remove:

graph remove --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>

Deploying a Subgraph

Run the following command in your terminal to deploy your subgraph, replacing {apikey} with your Bifrost API key and <username/subgraph-name> with your subgraph name:

graph deploy --node https://bifrost.bfno.de/{apikey} --ipfs https://bifrost.bfno.de <username/subgraph-name>

Querying a Subgraph

Once deployed, you can use the following endpoints to query your subgraph:

  • GraphQL Endpoint:
https://bifrost.bfno.de/{apikey}/subgraphs/name/<username/subgraph-name>/graphql
  • API Endpoint:
https://bifrost.bfno.de/{apikey}/subgraphs/name/<username/subgraph-name>

Replace {apikey} with your Bifrost API key obtained from the links above and <username/subgraph-name> with your subgraph name.

You can now use the standard GraphQL query language to query your Subgraph.

Support

🛑 Have doubts and need support? Join our Telegram chat and ping the DevRel team for support or interact with other blockchain developers and fellow builders!

- - +

Indexing-3rd-Party

+

What is a Subgraph?

+

Subgraph is a customized, open-source solution for indexing and accessing real-time blockchain data through the GraphQL API. They provide developers with powerful tools to build, customize, and access blockchain data according to their needs.

+

This document will guide you through creating, deploying, and querying this subgraph.

+

Prerequisites

+

Before getting started, make sure you have:

+
    +
  • Registered a Bifrost account and obtained an API key. +
      +
    • Please visit one of the following links and fill out the form to apply for an API key: + +
    • +
    +
  • +
  • Installed the Graph CLI.
  • +
  • Installed the Yarn package manager.
  • +
+

Creating a Subgraph

+
    +
  1. +

    Choose a subgraph name in the format <username>/<subgraph-name>, for example, "alice/mysubgraph".

    +
      +
    • <username>: This is your username on Bifrost.
    • +
    • <subgraph-name>: This is the specific name you choose for your subgraph, which usually reflects the functionality of the subgraph or the smart contract it indexes.
    • +
    +
  2. +
  3. +

    Run the following command in your terminal, replacing {apikey} with your Bifrost API key obtained from the links above and <username/subgraph-name> with your chosen subgraph name:

    +
    graph create --node https://bifrost.bfno.de/{apikey} <username/subgraph-name>
    +
  4. +
\ No newline at end of file diff --git a/docs/DeveloperResources/TheGraph/index.html b/docs/DeveloperResources/TheGraph/index.html index 1ca41733..cab9ecc6 100644 --- a/docs/DeveloperResources/TheGraph/index.html +++ b/docs/DeveloperResources/TheGraph/index.html @@ -1,20 +1,33 @@ - + - - - -Indexing-The-Graph | Bitlayer - - + +Indexing-The-Graph | Bitlayer + + + -
-

Indexing-The-Graph

Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.

The Graph Official

The Graph official has not support bitlayer, will coming soon.

Project Local Graph Node

We recommend following the Official documentation for deployment. The next operation is only intended as a simple setup tutorial for reference.

Set up graph-node

For convenience reasons, we use the official docker compose for node, database, and IPFS deployment. -Note that the value of the ethereum field in docker-compose.yml is replaced with Bitlayer's node connection information.

graph-node:
image: graphprotocol/graph-node
ports:
- '8000:8000'
- '8001:8001'
- '8020:8020'
- '8030:8030'
- '8040:8040'
depends_on:
- ipfs
- postgres
environment:
postgres_host: postgres
postgres_user: graph-node
postgres_pass: let-me-in
postgres_db: graph-node
ipfs: 'ipfs:5001'
ethereum: 'mainnet:http://127.0.0.1:8545' #replaced with bitlayer rpc info
RUST_LOG: info

Note: The node connected to graph-node needs to be in archive mode (add flag --syncmode full --gcmode archive when starting the node), we recommend each user to build their own RPC node.

Migration

You can migrate your subgraph from bitlayer graph node or project local graph node to offical environment when the graph enables bitlayer. -To migrate smoothly, please set dataSources.source.startBlock in subgraph.yaml, we suggest using the block in which the contract was created.

- - +

Indexing-The-Graph

+

Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.

+ +

The Graph Official

+

The Graph official has not support bitlayer, will coming soon.

+

Project Local Graph Node

+

We recommend following the Official documentation for deployment. The next operation is only intended as a simple setup tutorial for reference.

+

Set up graph-node

+

For convenience reasons, we use the official docker compose for node, database, and IPFS deployment. +Note that the value of the ethereum field in docker-compose.yml is replaced with Bitlayer's node connection information.

+
graph-node:
image: graphprotocol/graph-node
ports:
- '8000:8000'
- '8001:8001'
- '8020:8020'
- '8030:8030'
- '8040:8040'
depends_on:
- ipfs
- postgres
environment:
postgres_host: postgres
postgres_user: graph-node
postgres_pass: let-me-in
postgres_db: graph-node
ipfs: 'ipfs:5001'
ethereum: 'mainnet:http://127.0.0.1:8545' #replaced with bitlayer rpc info
RUST_LOG: info
+
+

Note: The node connected to graph-node needs to be in archive mode (add flag --syncmode full --gcmode archive when starting the node), we recommend each user to build their own RPC node.

+
+

Migration

+

You can migrate your subgraph from bitlayer graph node or project local graph node to offical environment when the graph enables bitlayer. +To migrate smoothly, please set dataSources.source.startBlock in subgraph.yaml, we suggest using the block in which the contract was created.

\ No newline at end of file diff --git a/docs/DeveloperResources/Wallets/index.html b/docs/DeveloperResources/Wallets/index.html index 6ed079b9..e9ba8bff 100644 --- a/docs/DeveloperResources/Wallets/index.html +++ b/docs/DeveloperResources/Wallets/index.html @@ -1,18 +1,40 @@ - + - - - -Supported Wallets for Bitlayer | Bitlayer - - + +Supported Wallets for Bitlayer | Bitlayer + + + -
-

Supported Wallets for Bitlayer

EVM-Compatible Wallets

For interacting with Ethereum and other EVM networks, Bitlayer supports wallets such as:

  • OKX Wallet - A versatile wallet for secure transactions.
  • MetaMask - A browser extension with integrated dApp support.

EVM-compatible wallets allow you to execute smart contracts and interact with decentralized applications across various EVM networks.

Bitcoin-Exclusive Wallets

For Bitcoin transactions, Bitlayer is compatible with wallets designed specifically for Bitcoin, including:

  • Unisat - A secure wallet for Bitcoin enthusiasts.
  • Xverse - A wallet focused on privacy and security for Bitcoin users.

Bitcoin-only wallets provide optimized features for handling Bitcoin transactions and secure storage.

Networks Supported

  • EVM Networks (e.g., Ethereum Mainnet, Binance Smart Chain)
  • Bitcoin Testnet (for testing and development purposes)
  • Bitcoin Mainnet (for real Bitcoin transactions)

Choosing the right network is essential for your transactions. The Testnet is ideal for practice and development, while the Mainnet is used for actual transactions.

- - +

Supported Wallets for Bitlayer

+

EVM-Compatible Wallets

+

For interacting with Ethereum and other EVM networks, Bitlayer supports wallets such as:

+
    +
  • OKX Wallet - A versatile wallet for secure transactions.
  • +
  • MetaMask - A browser extension with integrated dApp support.
  • +
+

EVM-compatible wallets allow you to execute smart contracts and interact with decentralized applications across various EVM networks.

+

Bitcoin-Exclusive Wallets

+

For Bitcoin transactions, Bitlayer is compatible with wallets designed specifically for Bitcoin, including:

+
    +
  • Unisat - A secure wallet for Bitcoin enthusiasts.
  • +
  • Xverse - A wallet focused on privacy and security for Bitcoin users.
  • +
+

Bitcoin-only wallets provide optimized features for handling Bitcoin transactions and secure storage.

+

Networks Supported

+
    +
  • EVM Networks (e.g., Ethereum Mainnet, Binance Smart Chain)
  • +
  • Bitcoin Testnet (for testing and development purposes)
  • +
  • Bitcoin Mainnet (for real Bitcoin transactions)
  • +
+

Choosing the right network is essential for your transactions. The Testnet is ideal for practice and development, while the Mainnet is used for actual transactions.

+

Multi-Signature Smart Contract Wallet

+

Bitlayer provides a robust multi-signature smart contract wallet solution called Bitlayer Multisig. This wallet enhances security by requiring multiple signatures to approve transactions, ensuring that no single person can compromise the funds.

+

Create a Bitlayer Multisig Wallet

+

MPC Wallet

+

Bitlayer also supports MPC (Multi-Party Computation) wallets for enhanced security and privacy. A notable MPC wallet supported by Bitlayer is provided by Sinohope.

\ No newline at end of file diff --git a/docs/FAQs/Contact Details/index.html b/docs/FAQs/Contact Details/index.html index 1d66c56e..8590f52e 100644 --- a/docs/FAQs/Contact Details/index.html +++ b/docs/FAQs/Contact Details/index.html @@ -1,18 +1,21 @@ - + - - - -Contact Details | Bitlayer - - + +Contact Details | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/FAQs/Defillama TVL integration/index.html b/docs/FAQs/Defillama TVL integration/index.html index 919a708f..45d8a14b 100644 --- a/docs/FAQs/Defillama TVL integration/index.html +++ b/docs/FAQs/Defillama TVL integration/index.html @@ -1,18 +1,43 @@ - + - - - -DefiLlama TVL Integration | Bitlayer - - + +DefiLlama TVL Integration | Bitlayer + + + -
-

DefiLlama TVL Integration

Introduction

There are two steps required to integrate into the defillama system.

  1. Add adapter to defillama
  2. Submit PR like: https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js

Step 1: Add adapter locally

The following steps need to be completed:

  1. Fork repository: https://github.com/DefiLlama/DefiLlama-Adapters
  2. Create a new project adapter path under projects, for example: projects/[%PROJECT_TAG%]/index.js
const { sumTokens2, } = require('../helper/unwrapLPs')

async function tvl(api) {

return sumTokens2({ owners: [
'[%CONTRACT_ADDR%]',
], tokens: ['[%TOKEN_ADDR_1%]', '[%TOKEN_ADDR_2%]'], api, }) //wbtc and usdt
}

module.exports = {
btr: { tvl, }
}

  • [%PROJECT_TAG%] is the project name
  • [%CONTRACT_ADDR%] is the contract address of the project
  • [%TOKNE_ADDR_1%][%TOKEN_ADDR_2%] are the currency pair address that needs to be calculated
  • For future references, if you add another token you can just add it here, you can do like this https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files

Step 2: Submit PR

Reference

Projects built on bitlayer

NameCategoryWebsiteDefillamaProject Path
bitsmileyCDPhttps://www.bitsmiley.io/app/alphanethttps://defillama.com/protocol/bitsmiley#informationprojects/bitsmiley-io
macaronDexeshttps://www.macaron.xyz/#/swap?lang=enhttps://defillama.com/protocol/macaronprojects/macaron-xyz
avalonLendinghttps://app.avalonfinance.xyz/https://defillama.com/protocol/avalon-finance#informationprojects/avalon-finance
bitcowDexeshttps://bitcow.xyz/https://defillama.com/protocol/bitcow#informationprojects/bitcow
enzoLendinghttps://app.enzo.finance/https://defillama.com/protocol/enzo#informationprojects/enzo
trustinLendinghttps://www.trustin.com/https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=falseprojects/trustin
- - +

DefiLlama TVL Integration

+

Introduction

+

There are two steps required to integrate into the defillama system.

+
    +
  1. Add adapter to defillama
  2. +
  3. Submit PR like: https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js
  4. +
+

Step 1: Add adapter locally

+

The following steps need to be completed:

+
    +
  1. Fork repository: https://github.com/DefiLlama/DefiLlama-Adapters
  2. +
  3. Create a new project adapter path under projects, for example: projects/[%PROJECT_TAG%]/index.js
  4. +
+
const { sumTokens2, } = require('../helper/unwrapLPs')

async function tvl(api) {

return sumTokens2({ owners: [
'[%CONTRACT_ADDR%]',
], tokens: ['[%TOKEN_ADDR_1%]', '[%TOKEN_ADDR_2%]'], api, }) //wbtc and usdt
}

module.exports = {
btr: { tvl, }
}

+
    +
  • [%PROJECT_TAG%] is the project name
  • +
  • [%CONTRACT_ADDR%] is the contract address of the project
  • +
  • [%TOKNE_ADDR_1%]、[%TOKEN_ADDR_2%] are the currency pair address that needs to be calculated
  • +
  • For future references, if you add another token you can just add it here, you can do like this https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files
  • +
+

Step 2: Submit PR

+ +

Reference

+ +

Projects built on bitlayer

+
NameCategoryWebsiteDefillamaProject Path
bitsmileyCDPhttps://www.bitsmiley.io/app/alphanethttps://defillama.com/protocol/bitsmiley#informationprojects/bitsmiley-io
macaronDexeshttps://www.macaron.xyz/#/swap?lang=enhttps://defillama.com/protocol/macaronprojects/macaron-xyz
avalonLendinghttps://app.avalonfinance.xyz/https://defillama.com/protocol/avalon-finance#informationprojects/avalon-finance
bitcowDexeshttps://bitcow.xyz/https://defillama.com/protocol/bitcow#informationprojects/bitcow
enzoLendinghttps://app.enzo.finance/https://defillama.com/protocol/enzo#informationprojects/enzo
trustinLendinghttps://www.trustin.com/https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=falseprojects/trustin
\ No newline at end of file diff --git a/docs/FAQs/Frequently asked questions/index.html b/docs/FAQs/Frequently asked questions/index.html index 59e9da71..53f3401a 100644 --- a/docs/FAQs/Frequently asked questions/index.html +++ b/docs/FAQs/Frequently asked questions/index.html @@ -1,21 +1,42 @@ - + - - - -Frequently Asked Questions | Bitlayer - - + +Frequently Asked Questions | Bitlayer + + + -
-

Frequently Asked Questions

Q: When does Bitlayer launch?

A: The mainnet launch of Bitlayer is scheduled for early April.

Q: Is Bitlayer EVM compatible?

A: Yes, Bitlayer is EVM-compatible. Bitlayer's deep integration with the Ethereum Virtual Machine (EVM) heralds a significant advancement for the Bitcoin network, enabling it to support smart contracts and decentralized applications (dApps) natively. This compatibility breaks new ground by combining Bitcoin's renowned security and liquidity with Ethereum's programmability and flexibility. For developers and users, this means the ability to deploy Ethereum-based applications directly on Bitcoin, leveraging the best of both worlds: the robustness of Bitcoin's blockchain with the dynamic capabilities of Ethereum's smart contract environment.

Q: How can I join the community?

A: To join the Bitlayer community, you can visit the social media channels of Bitlayer, such as Telegram groups, Discord, or Twitter, where you can interact with other community members and stay updated on the latest developments.

Discord: https://discord.com/invite/GGSjNyD8nj

Twitter: https://twitter.com/BitLayerLabs

Linkedin: https://www.linkedin.com/company/bitlayerlabs/

Telegram: https://t.me/bitlayerofficial

Medium: https://medium.com/@Bitlayer

GithHub: https://github.com/bitlayer-org

Q: How can I help support Bitlayer?

A: There are several ways to support Bitlayer. You can actively participate in community discussions, provide feedback and suggestions, contribute to the development of applications or tools on the platform, or promote Bitlayer to others who may benefit from its services. Additionally, you can explore any specific support initiatives or programs that Bitlayer may have in place.

Q: Who is building Bitlayer?

A: Bitlayer is being built by a team of engineers with experience in top platforms and blockchain operations. The core builders include individuals from companies such as Huobi, Polygon, and Polkadot, who bring their expertise and resources to the development of Bitlayer.

Q: Who can I contact regarding a press inquiry?

A: For press inquiries related to Bitlayer, you can reach out to the Bitlayer team through our official communication channels.

Website:https://www.bitlayer.org/

Twitter: https://twitter.com/BitLayerLabs

Github: https://github.com/bitlayer-org

Medium:https://medium.com/@Bitlayer

Email: build@bitlayer.org

Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?

A: Yes, the rate-limits is 30 rps default for both mainnet and testnet.
+

Frequently Asked Questions

+

Q: When does Bitlayer launch?

+

A: The mainnet launch of Bitlayer is scheduled for early April.

+

Q: Is Bitlayer EVM compatible?

+

A: Yes, Bitlayer is EVM-compatible. Bitlayer's deep integration with the Ethereum Virtual Machine (EVM) heralds a significant advancement for the Bitcoin network, enabling it to support smart contracts and decentralized applications (dApps) natively. This compatibility breaks new ground by combining Bitcoin's renowned security and liquidity with Ethereum's programmability and flexibility. For developers and users, this means the ability to deploy Ethereum-based applications directly on Bitcoin, leveraging the best of both worlds: the robustness of Bitcoin's blockchain with the dynamic capabilities of Ethereum's smart contract environment.

+

Q: How can I join the community?

+

A: To join the Bitlayer community, you can visit the social media channels of Bitlayer, such as Telegram groups, Discord, or Twitter, where you can interact with other community members and stay updated on the latest developments.

+

Discord: https://discord.com/invite/GGSjNyD8nj

+

Twitter: https://twitter.com/BitLayerLabs

+

Linkedin: https://www.linkedin.com/company/bitlayerlabs/

+

Telegram: https://t.me/bitlayerofficial

+

Medium: https://medium.com/@Bitlayer

+

GithHub: https://github.com/bitlayer-org

+

Q: How can I help support Bitlayer?

+

A: There are several ways to support Bitlayer. You can actively participate in community discussions, provide feedback and suggestions, contribute to the development of applications or tools on the platform, or promote Bitlayer to others who may benefit from its services. Additionally, you can explore any specific support initiatives or programs that Bitlayer may have in place.

+

Q: Who is building Bitlayer?

+

A: Bitlayer is being built by a team of engineers with experience in top platforms and blockchain operations. The core builders include individuals from companies such as Huobi, Polygon, and Polkadot, who bring their expertise and resources to the development of Bitlayer.

+

Q: Who can I contact regarding a press inquiry?

+

A: For press inquiries related to Bitlayer, you can reach out to the Bitlayer team through our official communication channels.

+

Website:https://www.bitlayer.org/

+

Twitter: https://twitter.com/BitLayerLabs

+

Github: https://github.com/bitlayer-org

+

Medium:https://medium.com/@Bitlayer

+

Email: build@bitlayer.org

+

Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?

+

A: Yes, the rate-limits is 30 rps default for both mainnet and testnet.
When requests reached rate-limits, you can
-(1) Refer to Compile and Run to build your own rpc node.
-(2) Or refer to ankr to buy a paid plan.

- - +  (1) Refer to Compile and Run to build your own rpc node.
+  (2) Or refer to ankr to buy a paid plan.

\ No newline at end of file diff --git a/docs/FAQs/WBTC/index.html b/docs/FAQs/WBTC/index.html index 0c166644..08d9cb26 100644 --- a/docs/FAQs/WBTC/index.html +++ b/docs/FAQs/WBTC/index.html @@ -1,18 +1,30 @@ - + - - - -wBTC | Bitlayer - - + +wBTC | Bitlayer + + + -
-

wBTC

中文版本

wBTC 兑换

Bitlayer 使用 BTC 作为 Gas Token,一般情况下,都会有一个对应的 wBTC token 方便各类协议交互。

用户可以通过调用 Dex 的 swap 功能实现兑换。

Macaron Swap

用户在Macaron Swap界面把BTC兑换成wBTC

https://www.macaron.xyz/#/swapl

swap

English Version

wBTC

Bitlayer uses BTC as a Gas Token, and typically there is a corresponding wBTC token to facilitate interactions with various protocols.

Users can exchange BTC for wBTC using the swap function on a Dex.

Macaron Swap

Users can exchange BTC for wBTC on the Macaron Swap interface.

https://www.macaron.xyz/#/swapl

swap

- - +

wBTC

+

中文版本

+

wBTC 兑换

+

Bitlayer 使用 BTC 作为 Gas Token,一般情况下,都会有一个对应的 wBTC token 方便各类协议交互。

+

用户可以通过调用 Dex 的 swap 功能实现兑换。

+

Macaron Swap

+

用户在Macaron Swap界面把BTC兑换成wBTC

+

https://www.macaron.xyz/#/swapl

+

swap

+

English Version

+

wBTC

+

Bitlayer uses BTC as a Gas Token, and typically there is a corresponding wBTC token to facilitate interactions with various protocols.

+

Users can exchange BTC for wBTC using the swap function on a Dex.

+

Macaron Swap

+

Users can exchange BTC for wBTC on the Macaron Swap interface.

+

https://www.macaron.xyz/#/swapl

+

swap

\ No newline at end of file diff --git a/docs/Introduction/AboutBitlayer/index.html b/docs/Introduction/AboutBitlayer/index.html index 5bfb2f7c..7da89dc4 100644 --- a/docs/Introduction/AboutBitlayer/index.html +++ b/docs/Introduction/AboutBitlayer/index.html @@ -1,18 +1,20 @@ - + - - - -About Bitlayer | Bitlayer - - + +About Bitlayer | Bitlayer + + + -
-

About Bitlayer

For users and developers alike, the fundamental concept of Bitlayer is outlined below:

intro

Bitlayer acts as a Layer 2 solution for Bitcoin, boasting 100% EVM and Ethereum toolchain compatibility, with BTC as native token(gas token).

Note on Solidity Version Support:

We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed.

Users can engage with it using wallets such as Metamask, imToken, or other Ethereum-compatible wallets.

Developers are afforded the ease of migrating smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using the toolchain you are familiar with: Ethereum JSON-RPC, Hardhat, etc.

- - +

About Bitlayer

+

For users and developers alike, the fundamental concept of Bitlayer is outlined below:

+

intro

+

Bitlayer acts as a Layer 2 solution for Bitcoin, boasting 100% EVM and Ethereum toolchain compatibility, with BTC as native token(gas token).

+
Note on Solidity Version Support:

We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed.

+

Users can engage with it using wallets such as Metamask, imToken, or other Ethereum-compatible wallets.

+

Developers are afforded the ease of migrating smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using the toolchain you are familiar with: Ethereum JSON-RPC, Hardhat, etc.

\ No newline at end of file diff --git a/docs/Introduction/BitVM/index.html b/docs/Introduction/BitVM/index.html index 86416c9a..8ac3ff0b 100644 --- a/docs/Introduction/BitVM/index.html +++ b/docs/Introduction/BitVM/index.html @@ -1,18 +1,57 @@ - + - - - -About BitVM | Bitlayer - - + +About BitVM | Bitlayer + + + -
-

About BitVM

BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.

What is BitVM?

BitVM is invented by Robin Linus from ZeroSync, BitVM offers a novel computing paradigm designed specifically for the Bitcoin blockchain. This initiative was launched in late 2023 to enable more expressive contracts and efficient off-chain computations without necessitating soft forks.

Unlike Ethereum, BitVM's aim is not replication but expansion, enhancing Bitcoin's capabilities to handle increased demand. This becomes increasingly important as the Bitcoin ecosystem grows, especially with upcoming events like Bitcoin halving and the rising interest from institutional investors following Bitcoin ETFs.

BitVM's features include the optimistic validation of Zero-Knowledge (ZK) rollups—similar to technologies used in Ethereum's Layer 2 solutions—which process transactions off-chain to reduce mainnet congestion. These transactions are finalized on the mainnet, incorporating mechanisms to deter and identify potential fraud.

Benefits of BitVM

  • Optimistic Validation of ZK Rollups: BitVM facilitates the validation of ZK rollups directly on the Bitcoin network, allowing complex layer 2 computations without changing Bitcoin's consensus rules or compromising blockchain performance.

  • Bridging Sidechains and Rollups to Bitcoin: It aims to create more decentralized bridges between Bitcoin and layer 2 platforms like Rootstock, reducing reliance on intermediaries and lowering the risk of fraud.

  • Reduced Transaction Fees: BitVM could significantly lower Bitcoin transaction fees by managing data and computations off-chain. This can help mitigate spikes in fees, like those seen in December 2023, when they reached $38.43.

  • Enhanced Security: By focusing on two-party contracts, BitVM enhances security over systems that handle multi-party contracts, as is common with Ethereum. It provides mechanisms to prove and dispute fraudulent transactions effectively.

Experiment of BitVM White Paper

Learn more about BitVM's innovations and how they can transform the Bitcoin landscape through our detailed white paper and research initiatives:

Engage with the Community

Join the discussion and contribute to the development of BitVM at Bitlayer through these community channels:

Explore how Bitlayer is setting the stage for revolutionary changes in Bitcoin's functionality and scalability.

- - +

About BitVM

+

BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.

+

What is BitVM?

+

BitVM is invented by Robin Linus from ZeroSync, BitVM offers a novel computing paradigm designed specifically for the Bitcoin blockchain. This initiative was launched in late 2023 to enable more expressive contracts and efficient off-chain computations without necessitating soft forks.

+

Unlike Ethereum, BitVM's aim is not replication but expansion, enhancing Bitcoin's capabilities to handle increased demand. This becomes increasingly important as the Bitcoin ecosystem grows, especially with upcoming events like Bitcoin halving and the rising interest from institutional investors following Bitcoin ETFs.

+

BitVM's features include the optimistic validation of Zero-Knowledge (ZK) rollups—similar to technologies used in Ethereum's Layer 2 solutions—which process transactions off-chain to reduce mainnet congestion. These transactions are finalized on the mainnet, incorporating mechanisms to deter and identify potential fraud.

+

Benefits of BitVM

+
    +
  • +

    Optimistic Validation of ZK Rollups: BitVM facilitates the validation of ZK rollups directly on the Bitcoin network, allowing complex layer 2 computations without changing Bitcoin's consensus rules or compromising blockchain performance.

    +
  • +
  • +

    Bridging Sidechains and Rollups to Bitcoin: It aims to create more decentralized bridges between Bitcoin and layer 2 platforms like Rootstock, reducing reliance on intermediaries and lowering the risk of fraud.

    +
  • +
  • +

    Reduced Transaction Fees: BitVM could significantly lower Bitcoin transaction fees by managing data and computations off-chain. This can help mitigate spikes in fees, like those seen in December 2023, when they reached $38.43.

    +
  • +
  • +

    Enhanced Security: By focusing on two-party contracts, BitVM enhances security over systems that handle multi-party contracts, as is common with Ethereum. It provides mechanisms to prove and dispute fraudulent transactions effectively.

    +
  • +
+

Experiment of BitVM White Paper

+

Learn more about BitVM's innovations and how they can transform the Bitcoin landscape through our detailed white paper and research initiatives:

+ +

Engage with the Community

+

Join the discussion and contribute to the development of BitVM at Bitlayer through these community channels:

+ +

Explore how Bitlayer is setting the stage for revolutionary changes in Bitcoin's functionality and scalability.

\ No newline at end of file diff --git a/docs/Introduction/BitlayerVsEth/index.html b/docs/Introduction/BitlayerVsEth/index.html index 34bd8115..dd4be185 100644 --- a/docs/Introduction/BitlayerVsEth/index.html +++ b/docs/Introduction/BitlayerVsEth/index.html @@ -1,18 +1,48 @@ - + - - - -Bitlayer vs. Ethereum | Bitlayer - - + +Bitlayer vs. Ethereum | Bitlayer + + + -
-

Bitlayer vs. Ethereum

This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.

FeatureBitlayerEthereum
Gas PriceLower due to efficiency mechanisms.Variable, dependent on network demand. High demand can lead to increased gas prices.
EVM SupportSupports EVM-compatible smart contracts through the Layered Virtual Machine (LVM).Full EVM support as the native platform.
Solidity SupportSupports up to Solidity version v0.8.23. Future versions will be supported.Supports the latest versions of Solidity, with ongoing updates.
Developer ImplicationsOffers a platform leveraging Bitcoin's security. Easier transition for those familiar with Ethereum's EVM.Mature tooling and community support.
User ImplicationsAccess to innovative dApps leveraging Bitcoin's security.Vast ecosystem of dApps.

Gas Price

Bitlayer

Bitlayer aims to offer lower transaction costs through innovative efficiency mechanisms. Leveraging technologies like optimistic execution, Bitlayer seeks to optimize transaction throughput, making it a potentially more economical choice for its users.

Important: About Gas Price on Bitlayer

Bitlayer's native gas token is BTC, utilized with an 18-digit precision, diverging from Bitcoin's traditional 8-digit precision. This adjustment aligns with the default decimal precision of tokens on EVM-compatible chains, ensuring consistency across transactions.

To accommodate transaction processing priorities, Bitlayer has established a minimum priority fee requirement. Developers can dynamically estimate the required gas price for transactions using eth_gasPrice or eth_maxPriorityFeePerGas.

For transactions on the Mainnet/Testnet, a minimum tip of 0.1 gwei is necessary. Typically, setting a gasPrice of 0.11 gwei for legacy transactions or a maxPriorityFeePerGas of 0.1 gwei (with an adequately set maxFeePerGas) for EIP-1559 transactions should suffice for most operations.

Dapp developers are advised to programmatically set the maxPriorityFeePerGas before initiating transactions via APIs, rather than relying on default strategies employed by wallets (like MetaMask) or SDKs, to ensure optimal transaction processing.

Ethereum

In contrast, Ethereum's gas prices fluctuate based on network demand. Users compete for computational resources, leading to variable gas prices that can spike significantly during periods of high demand, affecting cost-effectiveness.

Supported EVM and Solidity Versions

Bitlayer

EVM Support

Bitlayer introduces the Layered Virtual Machine (LVM), which is fully compatible with Ethereum Virtual Machine (EVM) smart contracts. It supports EVM-compatible contracts up to the Shanghai update, with the exception of the PREVRANDAO opcode. The Cancun upgrade is expected to be supported in the next release. This enables developers to build applications on Bitcoin's secure network, mirroring the functionality available on Ethereum.

Solidity Version

Currently, Bitlayer supports Solidity up to version v0.8.23, with a commitment to incorporating future versions. This stance ensures that developers have access to a stable and secure environment for their smart contracts.

Ethereum

EVM Support

Ethereum, as the origin of the EVM, offers support for the entire range of EVM functionalities. This allows for a wide spectrum of smart contract capabilities and decentralized application developments.

Solidity Version

Ethereum consistently supports the latest versions of Solidity, providing developers with the newest features, optimizations, and security enhancements for smart contract development.

Implications

For Developers

  • Bitlayer emerges as an appealing platform for developers seeking to leverage Bitcoin's renowned security with the added benefit of potentially lower operational costs. The LVM's compatibility with EVM ensures a smooth transition for developers already familiar with Ethereum's ecosystem.
  • Ethereum remains a cornerstone for smart contract and decentralized application development, supported by its extensive tooling and a vibrant community.

For Users

  • Bitlayer offer more cost-effective interactions with decentralized applications, backed by the security of Bitcoin. This makes it an attractive platform for users prioritizing security and efficiency.
  • Ethereum offers a broad and diverse ecosystem of dApps.

In essence, Bitlayer introduces a strategic approach to integrating smart contract functionality within Bitcoin's secure and cost-effective framework, offering tangible benefits for both developers and users.

- - +

Bitlayer vs. Ethereum

+

This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.

+
FeatureBitlayerEthereum
Gas PriceLower due to efficiency mechanisms.Variable, dependent on network demand. High demand can lead to increased gas prices.
EVM SupportSupports EVM-compatible smart contracts through the Layered Virtual Machine (LVM).Full EVM support as the native platform.
Solidity SupportSupports up to Solidity version v0.8.23. Future versions will be supported.Supports the latest versions of Solidity, with ongoing updates.
Developer ImplicationsOffers a platform leveraging Bitcoin's security. Easier transition for those familiar with Ethereum's EVM.Mature tooling and community support.
User ImplicationsAccess to innovative dApps leveraging Bitcoin's security.Vast ecosystem of dApps.
+

Gas Price

+

Bitlayer

+

Bitlayer aims to offer lower transaction costs through innovative efficiency mechanisms. Leveraging technologies like optimistic execution, Bitlayer seeks to optimize transaction throughput, making it a potentially more economical choice for its users.

+
Important: About Gas Price on Bitlayer

Bitlayer's native gas token is BTC, utilized with an 18-digit precision, diverging from Bitcoin's traditional 8-digit precision. This adjustment aligns with the default decimal precision of tokens on EVM-compatible chains, ensuring consistency across transactions.

+

To accommodate transaction processing priorities, Bitlayer has established a minimum priority fee requirement. Developers can dynamically estimate the required gas price for transactions using eth_gasPrice or eth_maxPriorityFeePerGas.

+

For transactions on the Mainnet/Testnet, a minimum tip of 0.1 gwei is necessary. Typically, setting a gasPrice of 0.11 gwei for legacy transactions or a maxPriorityFeePerGas of 0.1 gwei (with an adequately set maxFeePerGas) for EIP-1559 transactions should suffice for most operations.

+

Dapp developers are advised to programmatically set the maxPriorityFeePerGas before initiating transactions via APIs, rather than relying on default strategies employed by wallets (like MetaMask) or SDKs, to ensure optimal transaction processing.

+

Ethereum

+

In contrast, Ethereum's gas prices fluctuate based on network demand. Users compete for computational resources, leading to variable gas prices that can spike significantly during periods of high demand, affecting cost-effectiveness.

+

Supported EVM and Solidity Versions

+

Bitlayer

+

EVM Support

+

Bitlayer introduces the Layered Virtual Machine (LVM), which is fully compatible with Ethereum Virtual Machine (EVM) smart contracts. It supports EVM-compatible contracts up to the Shanghai update, with the exception of the PREVRANDAO opcode. The Cancun upgrade is expected to be supported in the next release. This enables developers to build applications on Bitcoin's secure network, mirroring the functionality available on Ethereum.

+

Solidity Version

+

Currently, Bitlayer supports Solidity up to version v0.8.23, with a commitment to incorporating future versions. This stance ensures that developers have access to a stable and secure environment for their smart contracts.

+

Ethereum

+

EVM Support

+

Ethereum, as the origin of the EVM, offers support for the entire range of EVM functionalities. This allows for a wide spectrum of smart contract capabilities and decentralized application developments.

+

Solidity Version

+

Ethereum consistently supports the latest versions of Solidity, providing developers with the newest features, optimizations, and security enhancements for smart contract development.

+

Implications

+

For Developers

+
    +
  • Bitlayer emerges as an appealing platform for developers seeking to leverage Bitcoin's renowned security with the added benefit of potentially lower operational costs. The LVM's compatibility with EVM ensures a smooth transition for developers already familiar with Ethereum's ecosystem.
  • +
  • Ethereum remains a cornerstone for smart contract and decentralized application development, supported by its extensive tooling and a vibrant community.
  • +
+

For Users

+
    +
  • Bitlayer offer more cost-effective interactions with decentralized applications, backed by the security of Bitcoin. This makes it an attractive platform for users prioritizing security and efficiency.
  • +
  • Ethereum offers a broad and diverse ecosystem of dApps.
  • +
+

In essence, Bitlayer introduces a strategic approach to integrating smart contract functionality within Bitcoin's secure and cost-effective framework, offering tangible benefits for both developers and users.

\ No newline at end of file diff --git a/docs/Introduction/Roadmap/index.html b/docs/Introduction/Roadmap/index.html index dbff2781..6e6bcdd4 100644 --- a/docs/Introduction/Roadmap/index.html +++ b/docs/Introduction/Roadmap/index.html @@ -1,18 +1,26 @@ - + - - - -Roadmap | Bitlayer - - + +Roadmap | Bitlayer + + + -
-

Roadmap

The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.

Roadmap

First Stage: Bitlayer Mainnet-V1

In this initial phase, Bitlayer will support the cross-chain movement of BTC/BRC-20 assets between the Bitcoin mainnet and Bitlayer, and other mainstream assets, thereby enriching the overall value of the Bitlayer ecosystem.

During this stage, we will prioritize offering a 100% EVM-compatible development kit and ecosystem support, enabling developers to quickly build, test, and deploy applications on Bitlayer. Solidity applications can be seamlessly migrated, providing early users with the benefits of low gas fees and an extensible Bitcoin framework.

Second Stage: Bitlayer Mainnet-V2

In this phase, we plan to introduce a rollup-equivalent model, implement a BitVM component for commiting and challenging the state transition, achieving the L1 verification ability.

By leveraging the vast network and security of Bitcoin, Bitlayer will continuously lead with the highest security standards, offering users enhanced flexibility and an improved onchain experience through network upgrades.

Third Stage: Bitlayer Mainnet V3

In this phase, our aim is to implement trustless bridge based on the L1 verification ability.

Upon the completion of this third stage, Bitlayer’s final mainnet will be fully deployed, achieving the network's original goals—Bitcoin-equivalent security combined with Turing completeness.

This version is set to elevate the security standards of Bitcoin Layer 2 to an unprecedented level.

- - +

Roadmap

+

The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.

+

Roadmap

+

First Stage: Bitlayer Mainnet-V1

+

In this initial phase, Bitlayer will support the cross-chain movement of BTC/BRC-20 assets between the Bitcoin mainnet and Bitlayer, and other mainstream assets, thereby enriching the overall value of the Bitlayer ecosystem.

+

During this stage, we will prioritize offering a 100% EVM-compatible development kit and ecosystem support, enabling developers to quickly build, test, and deploy applications on Bitlayer. Solidity applications can be seamlessly migrated, providing early users with the benefits of low gas fees and an extensible Bitcoin framework.

+

Second Stage: Bitlayer Mainnet-V2

+

In this phase, we plan to introduce a rollup-equivalent model, implement a BitVM component for commiting and challenging the state transition, achieving the L1 verification ability.

+

By leveraging the vast network and security of Bitcoin, Bitlayer will continuously lead with the highest security standards, offering users enhanced flexibility and an improved onchain experience through network upgrades.

+

Third Stage: Bitlayer Mainnet V3

+

In this phase, our aim is to implement trustless bridge based on the L1 verification ability.

+

Upon the completion of this third stage, Bitlayer’s final mainnet will be fully deployed, achieving the network's original goals—Bitcoin-equivalent security combined with Turing completeness.

+

This version is set to elevate the security standards of Bitcoin Layer 2 to an unprecedented level.

\ No newline at end of file diff --git a/docs/Introduction/TechnicalArchitecture/index.html b/docs/Introduction/TechnicalArchitecture/index.html index 12ed0721..7ff4634c 100644 --- a/docs/Introduction/TechnicalArchitecture/index.html +++ b/docs/Introduction/TechnicalArchitecture/index.html @@ -1,18 +1,21 @@ - + - - - -Technical Architecture | Bitlayer - - + +Technical Architecture | Bitlayer + + + -
-

Technical Architecture

Technical Architecture

Bitlayer's solution synthesizes the technical characteristics of BitVM, DLC, and various XVMs (such as EVM, CairoVM, SolVM, MoveVM), addressing three major challenges: Layer 1 verification, asset bridging, and enriching state transition expressions.

From an architectural standpoint, Bitlayer is a fairly typical example of a Rollup-equivalent model. To adapt to Bitcoin's unique programming model, BitVM has been introduced as a component for state challenges. Additionally, DLC|BitVM has been incorporated as a cross-chain component for messaging/assets, and the sequencer component's XVM, in theory, can support any Turing-complete programming language.

The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation - Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

This traditional approach results in users completely losing control of their assets, while the platform's multi-signature management capabilities can impact the security of those assets. In the wake of certain extreme cases, users have become dissatisfied with these types of multi-signature solutions. Models like DLC|BitVM that encompass two-party game scenarios may be a better direction. Leveraging DLC|BitVM technology, users could retain partial control over their assets and potentially achieve a secure escape with their assets.

The verification of Layer 2 state transitions operates on a principle comparable to proving one's innocence—an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin's base layer for verification enables Bitlayer to inherit Bitcoin's robust security measures, achieving an equivalent level of security to Bitcoin itself. The introduction of the BitVM paradigm challenges the conventional view that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

In terms of Layer 1 verification, autonomous asset escape, secure asset bridging, and EVM compatibility, Bitlayer exhibits superior performance compared to existing Bitcoin Layer 2 solutions such as Lightning Network and Stacks.

- - +

Technical Architecture

+

Technical Architecture

+

Bitlayer's solution synthesizes the technical characteristics of BitVM, DLC, and various XVMs (such as EVM, CairoVM, SolVM, MoveVM), addressing three major challenges: Layer 1 verification, asset bridging, and enriching state transition expressions.

+

From an architectural standpoint, Bitlayer is a fairly typical example of a Rollup-equivalent model. To adapt to Bitcoin's unique programming model, BitVM has been introduced as a component for state challenges. Additionally, DLC|BitVM has been incorporated as a cross-chain component for messaging/assets, and the sequencer component's XVM, in theory, can support any Turing-complete programming language.

+

The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation - Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets.

+

This traditional approach results in users completely losing control of their assets, while the platform's multi-signature management capabilities can impact the security of those assets. In the wake of certain extreme cases, users have become dissatisfied with these types of multi-signature solutions. Models like DLC|BitVM that encompass two-party game scenarios may be a better direction. Leveraging DLC|BitVM technology, users could retain partial control over their assets and potentially achieve a secure escape with their assets.

+

The verification of Layer 2 state transitions operates on a principle comparable to proving one's innocence—an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin's base layer for verification enables Bitlayer to inherit Bitcoin's robust security measures, achieving an equivalent level of security to Bitcoin itself. The introduction of the BitVM paradigm challenges the conventional view that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network.

+

In terms of Layer 1 verification, autonomous asset escape, secure asset bridging, and EVM compatibility, Bitlayer exhibits superior performance compared to existing Bitcoin Layer 2 solutions such as Lightning Network and Stacks.

\ No newline at end of file diff --git a/docs/Introduction/index.html b/docs/Introduction/index.html index 5421aa9e..1b312fa6 100644 --- a/docs/Introduction/index.html +++ b/docs/Introduction/index.html @@ -1,18 +1,27 @@ - + - - - -Welcome | Bitlayer - - + +Welcome | Bitlayer + + + -
-

Welcome

The first bitcoin security-equivalent Layer 2 based on BitVM

Explore Bitlayer Technical Documentation

Bitlayer is the first Layer 2 solution for Bitcoin that offers security equivalent to Bitcoin's own and Turing completeness. It is also the first Bitcoin Layer 2 solution based on BitVM paradigm. Bitlayer aims to enhance the Bitcoin ecosystem by providing secure scalability, promoting diversity of assets, and encouraging innovation. Ultimately, it seeks to offer users a faster, safer, and more flexible experience.

Why Choose Bitlayer?

At Bitlayer, our primary focus is to address the scalability challenges of the Bitcoin network.

While Bitcoin remains the leading blockchain for value transfer, it faces limitations in terms of scalability and transaction costs. Bitlayer tackles these issues head-on by leveraging cutting-edge cryptographic protocols and virtual machine technology. Bitlayer is building a native Bitcoin Layer 2 using BitVM paradigm, it will achieve Bitcoin finality, trustless bridge, multiple virtual machine support. This means that developers can easily migrate their existing smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using familiar tools such as Ethereum JSON-RPC and Hardhat.

The ingenious integration of Bitcoin smart contracts and Ethereum compatibility sets Bitlayer apart, verifying the integrity of Bitlayer's transactions and ensuring a high level of security, decentralization, and resistance to censorship. These achievements are made possible through recent advancements in cryptography, blockchain protocol design, and hardware optimization.

For detailed insights into our technical architecture, please refer to the Bitlayer Technical Architecture section.

Can I Start Using Bitlayer Today?

According to our roadmap, we, the Bitlayer Mainnet-V1 has launched and we are also glad to offer a testnet environment where you can experiment with Bitlayer's capabilities. Please refer to our Quick Start Guide to get started with our test network and explore the infinite possibilities of Bitcoin on both Bitlayer Testnet and Mainnet.

What Lies Ahead for Bitlayer?

We have launched the Bitlayer Mainnet-V1 in early April, our journey to further security&decentralization is far from over. We are committed to decentralizing each component of the stack, ensuring a resilient and robust network. Stay updated on our progress by following our Twitter or joining our active Discord / Telegram community. You can also connect with us on Medium to stay abreast of the latest Bitlayer developments.

- - +

Welcome

+

+

The first bitcoin security-equivalent Layer 2 based on BitVM

+

Explore Bitlayer Technical Documentation

+

Bitlayer is the first Layer 2 solution for Bitcoin that offers security equivalent to Bitcoin's own and Turing completeness. It is also the first Bitcoin Layer 2 solution based on BitVM paradigm. Bitlayer aims to enhance the Bitcoin ecosystem by providing secure scalability, promoting diversity of assets, and encouraging innovation. Ultimately, it seeks to offer users a faster, safer, and more flexible experience.

+

Why Choose Bitlayer?

+

At Bitlayer, our primary focus is to address the scalability challenges of the Bitcoin network.

+

While Bitcoin remains the leading blockchain for value transfer, it faces limitations in terms of scalability and transaction costs. Bitlayer tackles these issues head-on by leveraging cutting-edge cryptographic protocols and virtual machine technology. Bitlayer is building a native Bitcoin Layer 2 using BitVM paradigm, it will achieve Bitcoin finality, trustless bridge, multiple virtual machine support. This means that developers can easily migrate their existing smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using familiar tools such as Ethereum JSON-RPC and Hardhat.

+

The ingenious integration of Bitcoin smart contracts and Ethereum compatibility sets Bitlayer apart, verifying the integrity of Bitlayer's transactions and ensuring a high level of security, decentralization, and resistance to censorship. These achievements are made possible through recent advancements in cryptography, blockchain protocol design, and hardware optimization.

+

For detailed insights into our technical architecture, please refer to the Bitlayer Technical Architecture section.

+

Can I Start Using Bitlayer Today?

+

According to our roadmap, we, the Bitlayer Mainnet-V1 has launched and we are also glad to offer a testnet environment where you can experiment with Bitlayer's capabilities. Please refer to our Quick Start Guide to get started with our test network and explore the infinite possibilities of Bitcoin on both Bitlayer Testnet and Mainnet.

+

What Lies Ahead for Bitlayer?

+

We have launched the Bitlayer Mainnet-V1 in early April, our journey to further security&decentralization is far from over. We are committed to decentralizing each component of the stack, ensuring a resilient and robust network. Stay updated on our progress by following our Twitter or joining our active Discord / Telegram community. You can also connect with us on Medium to stay abreast of the latest Bitlayer developments.

\ No newline at end of file diff --git a/docs/category/bitlayer-architecture/index.html b/docs/category/bitlayer-architecture/index.html index 8294d886..472029bd 100644 --- a/docs/category/bitlayer-architecture/index.html +++ b/docs/category/bitlayer-architecture/index.html @@ -1,18 +1,14 @@ - + - - - -Bitlayer Architecture | Bitlayer - - + +Bitlayer Architecture | Bitlayer + + + -
-
- - + \ No newline at end of file diff --git a/docs/category/bitlayer-network/index.html b/docs/category/bitlayer-network/index.html index aae07afb..eab64ad1 100644 --- a/docs/category/bitlayer-network/index.html +++ b/docs/category/bitlayer-network/index.html @@ -1,18 +1,14 @@ - + - - - -Bitlayer Network | Bitlayer - - + +Bitlayer Network | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/category/bitlayer-scan-apis/index.html b/docs/category/bitlayer-scan-apis/index.html index 2bb02b9b..04e544ed 100644 --- a/docs/category/bitlayer-scan-apis/index.html +++ b/docs/category/bitlayer-scan-apis/index.html @@ -1,18 +1,14 @@ - + - - - -Bitlayer Scan APIs | Bitlayer - - + +Bitlayer Scan APIs | Bitlayer + + + -
-

Bitlayer Scan APIs

The Bitlayer Chain Developer APIs are provided as a community service and without warranty, so please use what you need and no more. We support both GET/POST requests and there is a rate limit of 5 calls per sec/IP. Note: Source attribution via a link back or mention that your app is ''Powered by api-testnet.bitlayer.org/scan APIs'' is required except for personal/private usage.

- - +

Bitlayer Scan APIs

The Bitlayer Chain Developer APIs are provided as a community service and without warranty, so please use what you need and no more. We support both GET/POST requests and there is a rate limit of 5 calls per sec/IP. Note: Source attribution via a link back or mention that your app is ''Powered by api-testnet.bitlayer.org/scan APIs'' is required except for personal/private usage.

\ No newline at end of file diff --git a/docs/category/developer-resources/index.html b/docs/category/developer-resources/index.html index 0025c869..c94712c8 100644 --- a/docs/category/developer-resources/index.html +++ b/docs/category/developer-resources/index.html @@ -1,18 +1,14 @@ - + - - - -Developer Resources | Bitlayer - - + +Developer Resources | Bitlayer + + + -
-
- - +
\ No newline at end of file diff --git a/docs/category/faqs/index.html b/docs/category/faqs/index.html index 78d31b75..3ee470df 100644 --- a/docs/category/faqs/index.html +++ b/docs/category/faqs/index.html @@ -1,18 +1,14 @@ - + - - - -FAQs | Bitlayer - - + +FAQs | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/category/getting-started/index.html b/docs/category/getting-started/index.html index c27fd5dc..b01d0e63 100644 --- a/docs/category/getting-started/index.html +++ b/docs/category/getting-started/index.html @@ -1,18 +1,14 @@ - + - - - -Getting Started | Bitlayer - - + +Getting Started | Bitlayer + + + - - - + \ No newline at end of file diff --git a/docs/category/introduction/index.html b/docs/category/introduction/index.html index 5a211746..f053d198 100644 --- a/docs/category/introduction/index.html +++ b/docs/category/introduction/index.html @@ -1,18 +1,14 @@ - + - - - -Introduction | Bitlayer - - + +Introduction | Bitlayer + + + - - - + \ No newline at end of file diff --git a/index.html b/index.html index 96e71661..683aa29d 100644 --- a/index.html +++ b/index.html @@ -1,18 +1,14 @@ - - - - - - - Your Site Title Here - - - If you are not redirected automatically, follow this - link. - + + + + + +Bitlayer + + + + + +
+ \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 395de0da..bc762250 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -1,18 +1,15 @@ - + - - - -Markdown page example | Bitlayer - - + +Markdown page example | Bitlayer + + + -
-

Markdown page example

You don't need React to write simple standalone pages.

- - +

Markdown page example

+

You don't need React to write simple standalone pages.

\ No newline at end of file diff --git a/search-index.json b/search-index.json new file mode 100644 index 00000000..19ff3715 --- /dev/null +++ b/search-index.json @@ -0,0 +1 @@ +[{"documents":[{"i":1,"t":"Bitlayer: Amplifying Bitcoin","u":"/blog/Bitlayer: Amplifying Bitcoin","b":[]},{"i":3,"t":"Blocks","u":"/docs/Bitlayer Scan APIs/Blocks","b":["Build Now","Bitlayer Scan APIs"]},{"i":8,"t":"Logs","u":"/docs/Bitlayer Scan APIs/Logs","b":["Build Now","Bitlayer Scan APIs"]},{"i":13,"t":"","u":"/blog/archive","b":[]},{"i":14,"t":"Transactions","u":"/docs/Bitlayer Scan APIs/Transactions","b":["Build Now","Bitlayer Scan APIs"]},{"i":17,"t":"Overview of Bitlayer's Design","u":"/docs/BitlayerArchitecture/BitlayerDesign","b":["Build Now","Bitlayer Architecture"]},{"i":28,"t":"Bitlayer's Transaction Lifecycle","u":"/docs/BitlayerArchitecture/TransactionLifecycle","b":["Build Now","Bitlayer Architecture"]},{"i":38,"t":"Layered Virtual Machine (LVM)","u":"/docs/BitlayerArchitecture/LVM","b":["Build Now","Bitlayer Architecture"]},{"i":40,"t":"About Gas","u":"/docs/BitlayerNetwork/AboutGas","b":["Build Now","Bitlayer Network"]},{"i":45,"t":"Bridges","u":"/docs/BitlayerNetwork/Bridges","b":["Build Now","Bitlayer Network"]},{"i":55,"t":"Contracts","u":"/docs/BitlayerNetwork/Contracts","b":["Build Now","Bitlayer Network"]},{"i":60,"t":"Accounts","u":"/docs/Bitlayer Scan APIs/Accounts","b":["Build Now","Bitlayer Scan APIs"]},{"i":81,"t":"Contracts","u":"/docs/Bitlayer Scan APIs/Contracts","b":["Build Now","Bitlayer Scan APIs"]},{"i":103,"t":"Networks and RPC Enpoints","u":"/docs/BitlayerNetwork/Networks","b":["Build Now","Bitlayer Network"]},{"i":111,"t":"JSON-RPC","u":"/docs/BitlayerNetwork/Json-RPC","b":["Build Now","Bitlayer Network"]},{"i":137,"t":"Peg Tokens","u":"/docs/BitlayerNetwork/PegTokens","b":["Build Now","Bitlayer Network"]},{"i":140,"t":"Block Explorers","u":"/docs/DeveloperResources/Block Explorers","b":["Build Now","Developer Resources"]},{"i":146,"t":"Compile, Run and Deploy","u":"/docs/Build/Compile and Run","b":["Build Now","Getting Started"]},{"i":166,"t":"Faucets","u":"/docs/DeveloperResources/Faucets","b":["Build Now","Developer Resources"]},{"i":168,"t":"BTC Connect (Account Abstraction)","u":"/docs/DeveloperResources/BTC Connect","b":["Build Now","Developer Resources"]},{"i":188,"t":"Indexing-The-Graph","u":"/docs/DeveloperResources/TheGraph","b":["Build Now","Developer Resources"]},{"i":196,"t":"Indexing-3rd-Party","u":"/docs/DeveloperResources/Subgraph","b":["Build Now","Developer Resources"]},{"i":203,"t":"Quick Start Guide","u":"/docs/Build/QuickStart","b":["Build Now","Getting Started"]},{"i":210,"t":"Supported Wallets for Bitlayer","u":"/docs/DeveloperResources/Wallets","b":["Build Now","Developer Resources"]},{"i":221,"t":"Contact Details","u":"/docs/FAQs/Contact Details","b":["Build Now","FAQs"]},{"i":223,"t":"Welcome","u":"/docs/Introduction/","b":["Build Now","Introduction"]},{"i":233,"t":"DefiLlama TVL Integration","u":"/docs/FAQs/Defillama TVL integration","b":["Build Now","FAQs"]},{"i":244,"t":"About Bitlayer","u":"/docs/Introduction/AboutBitlayer","b":["Build Now","Introduction"]},{"i":246,"t":"Frequently Asked Questions","u":"/docs/FAQs/Frequently asked questions","b":["Build Now","FAQs"]},{"i":261,"t":"Bitlayer vs. Ethereum","u":"/docs/Introduction/BitlayerVsEth","b":["Build Now","Introduction"]},{"i":278,"t":"About BitVM","u":"/docs/Introduction/BitVM","b":["Build Now","Introduction"]},{"i":288,"t":"Roadmap","u":"/docs/Introduction/Roadmap","b":["Build Now","Introduction"]},{"i":296,"t":"wBTC","u":"/docs/FAQs/WBTC","b":["Build Now","FAQs"]},{"i":302,"t":"Technical Architecture","u":"/docs/Introduction/TechnicalArchitecture","b":["Build Now","Introduction"]},{"i":304,"t":"Tokens","u":"/docs/Bitlayer Scan APIs/Tokens","b":["Build Now","Bitlayer Scan APIs"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,1.701,1,2.599,2,2.599]],["t/3",[3,3.328]],["t/8",[4,3.965]],["t/13",[]],["t/14",[5,3.328]],["t/17",[6,2.599,7,2.182,8,2.599]],["t/28",[5,2.182,7,2.182,9,2.599]],["t/38",[10,2.218,11,2.218,12,2.218,13,2.218]],["t/40",[14,3.965]],["t/45",[15,3.965]],["t/55",[16,3.328]],["t/60",[17,3.328]],["t/81",[16,3.328]],["t/103",[18,2.599,19,2.182,20,2.599]],["t/111",[19,2.636,21,3.14]],["t/137",[22,3.14,23,2.636]],["t/140",[3,2.636,24,3.14]],["t/146",[25,2.599,26,2.599,27,2.599]],["t/166",[28,3.965]],["t/168",[17,1.861,29,2.218,30,2.218,31,2.218]],["t/188",[32,2.636,33,3.14]],["t/196",[32,2.182,34,2.599,35,2.599]],["t/203",[36,2.599,37,2.599,38,2.599]],["t/210",[0,1.701,39,2.599,40,2.599]],["t/221",[41,3.14,42,3.14]],["t/223",[43,3.965]],["t/233",[44,2.599,45,2.599,46,2.599]],["t/244",[0,2.595]],["t/246",[47,2.599,48,2.599,49,2.599]],["t/261",[0,1.701,50,2.599,51,2.599]],["t/278",[52,3.965]],["t/288",[53,3.965]],["t/296",[54,3.965]],["t/302",[55,3.14,56,3.14]],["t/304",[23,3.328]]],"invertedIndex":[["3rd",{"_index":34,"t":{"196":{"position":[[9,3]]}}}],["abstract",{"_index":31,"t":{"168":{"position":[[21,12]]}}}],["account",{"_index":17,"t":{"60":{"position":[[0,8]]},"168":{"position":[[12,8]]}}}],["amplifi",{"_index":1,"t":{"1":{"position":[[10,10]]}}}],["architectur",{"_index":56,"t":{"302":{"position":[[10,12]]}}}],["ask",{"_index":48,"t":{"246":{"position":[[11,5]]}}}],["bitcoin",{"_index":2,"t":{"1":{"position":[[21,7]]}}}],["bitlay",{"_index":0,"t":{"1":{"position":[[0,9]]},"210":{"position":[[22,8]]},"244":{"position":[[6,8]]},"261":{"position":[[0,8]]}}}],["bitlayer'",{"_index":7,"t":{"17":{"position":[[12,10]]},"28":{"position":[[0,10]]}}}],["bitvm",{"_index":52,"t":{"278":{"position":[[6,5]]}}}],["block",{"_index":3,"t":{"3":{"position":[[0,6]]},"140":{"position":[[0,5]]}}}],["bridg",{"_index":15,"t":{"45":{"position":[[0,7]]}}}],["btc",{"_index":29,"t":{"168":{"position":[[0,3]]}}}],["compil",{"_index":25,"t":{"146":{"position":[[0,8]]}}}],["connect",{"_index":30,"t":{"168":{"position":[[4,7]]}}}],["contact",{"_index":41,"t":{"221":{"position":[[0,7]]}}}],["contract",{"_index":16,"t":{"55":{"position":[[0,9]]},"81":{"position":[[0,9]]}}}],["defillama",{"_index":44,"t":{"233":{"position":[[0,9]]}}}],["deploy",{"_index":27,"t":{"146":{"position":[[17,6]]}}}],["design",{"_index":8,"t":{"17":{"position":[[23,6]]}}}],["detail",{"_index":42,"t":{"221":{"position":[[8,7]]}}}],["enpoint",{"_index":20,"t":{"103":{"position":[[17,8]]}}}],["ethereum",{"_index":51,"t":{"261":{"position":[[13,8]]}}}],["explor",{"_index":24,"t":{"140":{"position":[[6,9]]}}}],["faucet",{"_index":28,"t":{"166":{"position":[[0,7]]}}}],["frequent",{"_index":47,"t":{"246":{"position":[[0,10]]}}}],["ga",{"_index":14,"t":{"40":{"position":[[6,3]]}}}],["graph",{"_index":33,"t":{"188":{"position":[[13,5]]}}}],["guid",{"_index":38,"t":{"203":{"position":[[12,5]]}}}],["index",{"_index":32,"t":{"188":{"position":[[0,8]]},"196":{"position":[[0,8]]}}}],["integr",{"_index":46,"t":{"233":{"position":[[14,11]]}}}],["json",{"_index":21,"t":{"111":{"position":[[0,4]]}}}],["layer",{"_index":10,"t":{"38":{"position":[[0,7]]}}}],["lifecycl",{"_index":9,"t":{"28":{"position":[[23,9]]}}}],["log",{"_index":4,"t":{"8":{"position":[[0,4]]}}}],["lvm",{"_index":13,"t":{"38":{"position":[[24,5]]}}}],["machin",{"_index":12,"t":{"38":{"position":[[16,7]]}}}],["network",{"_index":18,"t":{"103":{"position":[[0,8]]}}}],["overview",{"_index":6,"t":{"17":{"position":[[0,8]]}}}],["parti",{"_index":35,"t":{"196":{"position":[[13,5]]}}}],["peg",{"_index":22,"t":{"137":{"position":[[0,3]]}}}],["question",{"_index":49,"t":{"246":{"position":[[17,9]]}}}],["quick",{"_index":36,"t":{"203":{"position":[[0,5]]}}}],["roadmap",{"_index":53,"t":{"288":{"position":[[0,7]]}}}],["rpc",{"_index":19,"t":{"103":{"position":[[13,3]]},"111":{"position":[[5,3]]}}}],["run",{"_index":26,"t":{"146":{"position":[[9,3]]}}}],["start",{"_index":37,"t":{"203":{"position":[[6,5]]}}}],["support",{"_index":39,"t":{"210":{"position":[[0,9]]}}}],["technic",{"_index":55,"t":{"302":{"position":[[0,9]]}}}],["token",{"_index":23,"t":{"137":{"position":[[4,6]]},"304":{"position":[[0,6]]}}}],["transact",{"_index":5,"t":{"14":{"position":[[0,12]]},"28":{"position":[[11,11]]}}}],["tvl",{"_index":45,"t":{"233":{"position":[[10,3]]}}}],["virtual",{"_index":11,"t":{"38":{"position":[[8,7]]}}}],["vs",{"_index":50,"t":{"261":{"position":[[9,3]]}}}],["wallet",{"_index":40,"t":{"210":{"position":[[10,7]]}}}],["wbtc",{"_index":54,"t":{"296":{"position":[[0,4]]}}}],["welcom",{"_index":43,"t":{"223":{"position":[[0,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":4,"t":"Get Block Rewards by BlockNo","u":"/docs/Bitlayer Scan APIs/Blocks","h":"#get-block-rewards-by-blockno","p":3},{"i":6,"t":"Get Block Number by Timestamp","u":"/docs/Bitlayer Scan APIs/Blocks","h":"#get-block-number-by-timestamp","p":3},{"i":9,"t":"Get Event Logs by Address","u":"/docs/Bitlayer Scan APIs/Logs","h":"#get-event-logs-by-address","p":8},{"i":11,"t":"Get Event Logs by Address filtered by Topics","u":"/docs/Bitlayer Scan APIs/Logs","h":"#get-event-logs-by-address-filtered-by-topics","p":8},{"i":15,"t":"Check Transaction Receipt Status","u":"/docs/Bitlayer Scan APIs/Transactions","h":"#check-transaction-receipt-status","p":14},{"i":18,"t":"Technical White Paper","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#technical-white-paper","p":17},{"i":20,"t":"Introduction","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#introduction","p":17},{"i":22,"t":"1. Transaction Processing","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#1-transaction-processing","p":17},{"i":24,"t":"2. Transaction Verification","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#2-transaction-verification","p":17},{"i":26,"t":"3. Asset Bridge","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#3-asset-bridge","p":17},{"i":30,"t":"1. BitVM Federation","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#1-bitvm-federation","p":28},{"i":32,"t":"2. DLC Components","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#2-dlc-components","p":28},{"i":34,"t":"3. Layer 2 Smart Contracts","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#3-layer-2-smart-contracts","p":28},{"i":36,"t":"4. Relayers","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#4-relayers","p":28},{"i":41,"t":"Important: about gas price","u":"/docs/BitlayerNetwork/AboutGas","h":"#important-about-gas-price","p":40},{"i":43,"t":"Get BTC Gas","u":"/docs/BitlayerNetwork/AboutGas","h":"#get-btc-gas","p":40},{"i":47,"t":"Bitlayer to Blockchains","u":"/docs/BitlayerNetwork/Bridges","h":"#bitlayer-to-blockchains","p":45},{"i":49,"t":"BTC to Bitlayer","u":"/docs/BitlayerNetwork/Bridges","h":"#btc-to-bitlayer","p":45},{"i":51,"t":"EVM to Bitlayer","u":"/docs/BitlayerNetwork/Bridges","h":"#evm-to-bitlayer","p":45},{"i":53,"t":"Bitlayer to CEXs (Centralized Exchanges)","u":"/docs/BitlayerNetwork/Bridges","h":"#bitlayer-to-cexs-centralized-exchanges","p":45},{"i":56,"t":"Contract Addresses (Mainnet)","u":"/docs/BitlayerNetwork/Contracts","h":"#contract-addresses-mainnet","p":55},{"i":58,"t":"Contract Addresses (Testnet)","u":"/docs/BitlayerNetwork/Contracts","h":"#contract-addresses-testnet","p":55},{"i":61,"t":"Endpoint URLs","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#endpoint-urls","p":60},{"i":63,"t":"Get BTC Balance for a single address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-btc-balance-for-a-single-address","p":60},{"i":65,"t":"Get BTC Balance for multiple addresses in a single call","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-btc-balance-for-multiple-addresses-in-a-single-call","p":60},{"i":67,"t":"Get a list of 'Normal' Transactions By Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-normal-transactions-by-address","p":60},{"i":69,"t":"Get a list of 'Internal' Transactions By Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-internal-transactions-by-address","p":60},{"i":71,"t":"Get \"Internal Transactions\" by Transaction Hash","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-internal-transactions-by-transaction-hash","p":60},{"i":73,"t":"Get \"Internal Transactions\" by Block Range","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-internal-transactions-by-block-range","p":60},{"i":75,"t":"Get a list of \"ERC-20 - Token Transfer Events\" by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-erc-20---token-transfer-events-by-address","p":60},{"i":77,"t":"Get a list of \"ERC-721 - Token Transfer Events\" by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-erc-721---token-transfer-events-by-address","p":60},{"i":79,"t":"Get list of Blocks Validated by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-list-of-blocks-validated-by-address","p":60},{"i":82,"t":"Verify the contract through hardhat verify","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#verify-the-contract-through-hardhat-verify","p":81},{"i":84,"t":"An example of Hardhat Project Configuration and Contract Verification","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#an-example-of-hardhat-project-configuration-and-contract-verification","p":81},{"i":86,"t":"The configuration in the hardhat.config.js file is as follows:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#the-configuration-in-the-hardhatconfigjs-file-is-as-follows","p":81},{"i":88,"t":"Steps to Verify a Contract:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#steps-to-verify-a-contract","p":81},{"i":90,"t":"Contract-related APls:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#contract-related-apls","p":81},{"i":91,"t":"Get Contract ABI for Verified Contract Source Codes","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-abi-for-verified-contract-source-codes","p":81},{"i":93,"t":"Get Contract Source Code for Verified Contract Source Codes","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-source-code-for-verified-contract-source-codes","p":81},{"i":95,"t":"Get Contract Creator and Creation Tx Hash","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-creator-and-creation-tx-hash","p":81},{"i":97,"t":"Verify Source Code (beta)","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#verify-source-code-beta","p":81},{"i":99,"t":"Source Code Submission Gist (returns a guid as part of the result upon success):","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success","p":81},{"i":101,"t":"Check Source code verification submission status:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#check-source-code-verification-submission-status","p":81},{"i":105,"t":"Bitlayer Mainnet","u":"/docs/BitlayerNetwork/Networks","h":"#bitlayer-mainnet","p":103},{"i":107,"t":"Bitlayer Testnet","u":"/docs/BitlayerNetwork/Networks","h":"#bitlayer-testnet","p":103},{"i":109,"t":"Node Providers","u":"/docs/BitlayerNetwork/Networks","h":"#node-providers","p":103},{"i":113,"t":"eth_getTraceActionByTxHash","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbytxhash","p":111},{"i":115,"t":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters","p":111},{"i":117,"t":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns","p":111},{"i":119,"t":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example","p":111},{"i":121,"t":"eth_getTraceActionByBlockNumber","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbyblocknumber","p":111},{"i":123,"t":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters-1","p":111},{"i":125,"t":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns-1","p":111},{"i":127,"t":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example-1","p":111},{"i":129,"t":"eth_getTraceActionByBlockHash","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbyblockhash","p":111},{"i":131,"t":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters-2","p":111},{"i":133,"t":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns-2","p":111},{"i":135,"t":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example-2","p":111},{"i":138,"t":"Mainnet","u":"/docs/BitlayerNetwork/PegTokens","h":"#mainnet","p":137},{"i":142,"t":"Mainnet","u":"/docs/DeveloperResources/Block Explorers","h":"#mainnet","p":140},{"i":144,"t":"Testnet","u":"/docs/DeveloperResources/Block Explorers","h":"#testnet","p":140},{"i":148,"t":"Download","u":"/docs/Build/Compile and Run","h":"#download","p":146},{"i":150,"t":"Install Golang","u":"/docs/Build/Compile and Run","h":"#install-golang","p":146},{"i":152,"t":"Compile","u":"/docs/Build/Compile and Run","h":"#compile","p":146},{"i":154,"t":"Run","u":"/docs/Build/Compile and Run","h":"#run","p":146},{"i":156,"t":"Deployment","u":"/docs/Build/Compile and Run","h":"#deployment","p":146},{"i":158,"t":"Hardware","u":"/docs/Build/Compile and Run","h":"#hardware","p":146},{"i":160,"t":"Chain Node","u":"/docs/Build/Compile and Run","h":"#chain-node","p":146},{"i":162,"t":"Start Bash","u":"/docs/Build/Compile and Run","h":"#start-bash","p":146},{"i":164,"t":"systemd config","u":"/docs/Build/Compile and Run","h":"#systemd-config","p":146},{"i":170,"t":"Introduction","u":"/docs/DeveloperResources/BTC Connect","h":"#introduction","p":168},{"i":172,"t":"Dashboard Configuration","u":"/docs/DeveloperResources/BTC Connect","h":"#dashboard-configuration","p":168},{"i":174,"t":"Dependency Installation","u":"/docs/DeveloperResources/BTC Connect","h":"#dependency-installation","p":168},{"i":176,"t":"Configuring BTC Connect","u":"/docs/DeveloperResources/BTC Connect","h":"#configuring-btc-connect","p":168},{"i":178,"t":"Application Implementation","u":"/docs/DeveloperResources/BTC Connect","h":"#application-implementation","p":168},{"i":180,"t":"Part 1: Interacting with BTC Connect through an EIP-1193 Provider","u":"/docs/DeveloperResources/BTC Connect","h":"#part-1-interacting-with-btc-connect-through-an-eip-1193-provider","p":168},{"i":182,"t":"Part 2: Facilitating Wallet Connection","u":"/docs/DeveloperResources/BTC Connect","h":"#part-2-facilitating-wallet-connection","p":168},{"i":184,"t":"Part 3: Transaction Execution","u":"/docs/DeveloperResources/BTC Connect","h":"#part-3-transaction-execution","p":168},{"i":186,"t":"Conclusion","u":"/docs/DeveloperResources/BTC Connect","h":"#conclusion","p":168},{"i":190,"t":"The Graph Official","u":"/docs/DeveloperResources/TheGraph","h":"#the-graph-official","p":188},{"i":192,"t":"Project Local Graph Node","u":"/docs/DeveloperResources/TheGraph","h":"#project-local-graph-node","p":188},{"i":194,"t":"Migration","u":"/docs/DeveloperResources/TheGraph","h":"#migration","p":188},{"i":197,"t":"What is a Subgraph?","u":"/docs/DeveloperResources/Subgraph","h":"#what-is-a-subgraph","p":196},{"i":199,"t":"Prerequisites","u":"/docs/DeveloperResources/Subgraph","h":"#prerequisites","p":196},{"i":201,"t":"Creating a Subgraph","u":"/docs/DeveloperResources/Subgraph","h":"#creating-a-subgraph","p":196},{"i":205,"t":"Network Configuration","u":"/docs/Build/QuickStart","h":"#network-configuration","p":203},{"i":206,"t":"Bitlayer Mainnet","u":"/docs/Build/QuickStart","h":"#bitlayer-mainnet","p":203},{"i":208,"t":"Bitlayer Testnet","u":"/docs/Build/QuickStart","h":"#bitlayer-testnet","p":203},{"i":211,"t":"EVM-Compatible Wallets","u":"/docs/DeveloperResources/Wallets","h":"#evm-compatible-wallets","p":210},{"i":213,"t":"Bitcoin-Exclusive Wallets","u":"/docs/DeveloperResources/Wallets","h":"#bitcoin-exclusive-wallets","p":210},{"i":215,"t":"Networks Supported","u":"/docs/DeveloperResources/Wallets","h":"#networks-supported","p":210},{"i":217,"t":"Multi-Signature Smart Contract Wallet","u":"/docs/DeveloperResources/Wallets","h":"#multi-signature-smart-contract-wallet","p":210},{"i":219,"t":"MPC Wallet","u":"/docs/DeveloperResources/Wallets","h":"#mpc-wallet","p":210},{"i":224,"t":"","u":"/docs/Introduction/","h":"","p":223},{"i":225,"t":"Explore Bitlayer Technical Documentation","u":"/docs/Introduction/","h":"#explore-bitlayer-technical-documentation","p":223},{"i":227,"t":"Why Choose Bitlayer?","u":"/docs/Introduction/","h":"#why-choose-bitlayer","p":223},{"i":229,"t":"Can I Start Using Bitlayer Today?","u":"/docs/Introduction/","h":"#can-i-start-using-bitlayer-today","p":223},{"i":231,"t":"What Lies Ahead for Bitlayer?","u":"/docs/Introduction/","h":"#what-lies-ahead-for-bitlayer","p":223},{"i":234,"t":"Introduction","u":"/docs/FAQs/Defillama TVL integration","h":"#introduction","p":233},{"i":236,"t":"Step 1: Add adapter locally","u":"/docs/FAQs/Defillama TVL integration","h":"#step-1-add-adapter-locally","p":233},{"i":238,"t":"Step 2: Submit PR","u":"/docs/FAQs/Defillama TVL integration","h":"#step-2-submit-pr","p":233},{"i":240,"t":"Reference","u":"/docs/FAQs/Defillama TVL integration","h":"#reference","p":233},{"i":242,"t":"Projects built on bitlayer","u":"/docs/FAQs/Defillama TVL integration","h":"#projects-built-on-bitlayer","p":233},{"i":247,"t":"Q: When does Bitlayer launch?","u":"/docs/FAQs/Frequently asked questions","h":"#q-when-does-bitlayer-launch","p":246},{"i":249,"t":"Q: Is Bitlayer EVM compatible?","u":"/docs/FAQs/Frequently asked questions","h":"#q-is-bitlayer-evm-compatible","p":246},{"i":251,"t":"Q: How can I join the community?","u":"/docs/FAQs/Frequently asked questions","h":"#q-how-can-i-join-the-community","p":246},{"i":253,"t":"Q: How can I help support Bitlayer?","u":"/docs/FAQs/Frequently asked questions","h":"#q-how-can-i-help-support-bitlayer","p":246},{"i":255,"t":"Q: Who is building Bitlayer?","u":"/docs/FAQs/Frequently asked questions","h":"#q-who-is-building-bitlayer","p":246},{"i":257,"t":"Q: Who can I contact regarding a press inquiry?","u":"/docs/FAQs/Frequently asked questions","h":"#q-who-can-i-contact-regarding-a-press-inquiry","p":246},{"i":259,"t":"Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?","u":"/docs/FAQs/Frequently asked questions","h":"#q-is-there-a-rate-limits-on-public-rpc-urls-what-should-i-do-if-i-hit-the-rate-limits-issue","p":246},{"i":263,"t":"Gas Price","u":"/docs/Introduction/BitlayerVsEth","h":"#gas-price","p":261},{"i":264,"t":"Bitlayer","u":"/docs/Introduction/BitlayerVsEth","h":"#bitlayer","p":261},{"i":266,"t":"Ethereum","u":"/docs/Introduction/BitlayerVsEth","h":"#ethereum","p":261},{"i":268,"t":"Supported EVM and Solidity Versions","u":"/docs/Introduction/BitlayerVsEth","h":"#supported-evm-and-solidity-versions","p":261},{"i":269,"t":"Bitlayer","u":"/docs/Introduction/BitlayerVsEth","h":"#bitlayer-1","p":261},{"i":271,"t":"Ethereum","u":"/docs/Introduction/BitlayerVsEth","h":"#ethereum-1","p":261},{"i":273,"t":"Implications","u":"/docs/Introduction/BitlayerVsEth","h":"#implications","p":261},{"i":274,"t":"For Developers","u":"/docs/Introduction/BitlayerVsEth","h":"#for-developers","p":261},{"i":276,"t":"For Users","u":"/docs/Introduction/BitlayerVsEth","h":"#for-users","p":261},{"i":280,"t":"What is BitVM?","u":"/docs/Introduction/BitVM","h":"#what-is-bitvm","p":278},{"i":282,"t":"Benefits of BitVM","u":"/docs/Introduction/BitVM","h":"#benefits-of-bitvm","p":278},{"i":284,"t":"Experiment of BitVM White Paper","u":"/docs/Introduction/BitVM","h":"#experiment-of-bitvm-white-paper","p":278},{"i":286,"t":"Engage with the Community","u":"/docs/Introduction/BitVM","h":"#engage-with-the-community","p":278},{"i":290,"t":"First Stage: Bitlayer Mainnet-V1","u":"/docs/Introduction/Roadmap","h":"#first-stage-bitlayer-mainnet-v1","p":288},{"i":292,"t":"Second Stage: Bitlayer Mainnet-V2","u":"/docs/Introduction/Roadmap","h":"#second-stage-bitlayer-mainnet-v2","p":288},{"i":294,"t":"Third Stage: Bitlayer Mainnet V3","u":"/docs/Introduction/Roadmap","h":"#third-stage-bitlayer-mainnet-v3","p":288},{"i":297,"t":"中文版本","u":"/docs/FAQs/WBTC","h":"#中文版本","p":296},{"i":298,"t":"wBTC 兑换","u":"/docs/FAQs/WBTC","h":"#wbtc-兑换","p":296},{"i":300,"t":"English Version","u":"/docs/FAQs/WBTC","h":"#english-version","p":296},{"i":305,"t":"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress","u":"/docs/Bitlayer Scan APIs/Tokens","h":"#get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress","p":304},{"i":307,"t":"Get ERC20-Token Account Balance for TokenContractAddress","u":"/docs/Bitlayer Scan APIs/Tokens","h":"#get-erc20-token-account-balance-for-tokencontractaddress","p":304}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/4",[0,3.321,1,4.401,2,4.401]],["t/6",[0,3.321,3,4.401,4,4.401]],["t/9",[5,3.321,6,3.899,7,2.399]],["t/11",[5,2.596,6,3.047,7,1.875,8,3.44,9,3.44]],["t/15",[10,3.421,11,2.365,12,3.861,13,3.421]],["t/18",[14,3.899,15,3.899,16,3.899]],["t/20",[17,4.952]],["t/22",[11,2.696,18,3.321,19,4.401]],["t/24",[11,2.696,20,3.124,21,3.568]],["t/26",[22,3.568,23,4.401,24,4.401]],["t/30",[18,3.321,25,3.321,26,4.401]],["t/32",[20,3.124,27,4.401,28,4.401]],["t/34",[20,2.442,22,2.789,29,3.44,30,3.047,31,1.875]],["t/36",[32,5.116,33,5.116]],["t/41",[34,4.401,35,3.568,36,3.899]],["t/43",[35,4.148,37,3.44]],["t/47",[38,2.022,39,5.116]],["t/49",[37,3.44,38,2.022]],["t/51",[38,2.022,40,3.86]],["t/53",[38,1.526,41,3.861,42,3.861,43,3.861]],["t/56",[7,2.399,31,2.399,44,2.696]],["t/58",[7,2.399,31,2.399,45,3.321]],["t/61",[46,5.116,47,4.532]],["t/63",[7,2.105,37,2.597,48,3.131,49,3.421]],["t/65",[7,1.69,37,2.085,48,2.514,49,2.747,50,3.101,51,3.101]],["t/67",[7,2.105,11,2.365,52,2.741,53,3.861]],["t/69",[7,2.105,11,2.365,52,2.741,54,3.131]],["t/71",[11,3.399,54,3.131,55,3.421]],["t/73",[0,2.914,11,2.365,54,3.131,56,3.861]],["t/75",[5,2.13,7,1.539,52,2.004,57,2.501,58,2.823,59,2.13,60,2.501]],["t/77",[5,2.13,7,1.539,52,2.004,57,2.501,59,2.13,60,2.501,61,2.823]],["t/79",[0,2.914,7,2.105,52,2.741,62,3.861]],["t/82",[31,1.875,63,3.619,64,3.047,65,3.047]],["t/84",[21,2.514,31,1.69,65,2.747,66,2.34,67,2.514,68,2.201]],["t/86",[68,2.741,69,3.861,70,3.861,71,3.861]],["t/88",[31,2.399,63,3.124,72,3.568]],["t/90",[31,2.399,73,4.401,74,4.401]],["t/91",[31,2.571,63,2.201,75,3.101,76,2.201,77,2.201]],["t/93",[31,2.392,63,2.004,76,3.115,77,3.115]],["t/95",[31,1.875,55,3.047,78,3.44,79,3.44,80,3.44]],["t/97",[63,2.741,76,2.741,77,2.741,81,3.861]],["t/99",[76,1.579,77,1.579,82,1.971,83,2.225,84,1.679,85,2.225,86,1.679,87,2.225,88,2.225,89,2.225]],["t/101",[10,2.747,13,2.747,21,2.514,76,2.201,77,2.201,82,2.747]],["t/105",[38,2.022,44,3.134]],["t/107",[38,2.022,45,3.86]],["t/109",[90,4.148,91,4.532]],["t/113",[92,6.108]],["t/115",[93,4.952]],["t/117",[84,4.609]],["t/119",[66,4.609]],["t/121",[94,6.108]],["t/123",[93,4.952]],["t/125",[84,4.609]],["t/127",[66,4.609]],["t/129",[95,6.108]],["t/131",[93,4.952]],["t/133",[84,4.609]],["t/135",[66,4.609]],["t/138",[44,3.741]],["t/142",[44,3.741]],["t/144",[45,4.609]],["t/148",[96,6.108]],["t/150",[97,4.532,98,5.116]],["t/152",[99,6.108]],["t/154",[100,6.108]],["t/156",[101,6.108]],["t/158",[102,6.108]],["t/160",[90,4.148,103,5.116]],["t/162",[104,4.532,105,5.116]],["t/164",[106,5.116,107,5.116]],["t/170",[17,4.952]],["t/172",[68,3.631,108,5.116]],["t/174",[97,4.532,109,5.116]],["t/176",[37,2.96,68,3.124,110,3.568]],["t/178",[111,5.116,112,5.116]],["t/180",[18,1.807,37,1.61,64,2.121,86,1.807,91,2.121,110,1.941,113,2.394,114,2.394,115,2.394]],["t/182",[20,2.442,86,2.596,110,2.789,116,3.44,117,2.442]],["t/184",[11,2.365,22,3.131,86,2.914,118,3.861]],["t/186",[119,6.108]],["t/190",[120,4.532,121,5.116]],["t/192",[67,3.131,90,3.131,120,3.421,122,3.421]],["t/194",[123,6.108]],["t/197",[124,5.411]],["t/199",[125,6.108]],["t/201",[124,4.532,126,5.116]],["t/205",[68,3.631,127,4.532]],["t/206",[38,2.022,44,3.134]],["t/208",[38,2.022,45,3.86]],["t/211",[40,3.321,117,3.124,128,3.899]],["t/213",[117,3.124,129,4.401,130,4.401]],["t/215",[127,4.532,131,4.148]],["t/217",[30,3.047,31,1.875,117,2.442,132,3.44,133,3.44]],["t/219",[117,3.631,134,5.116]],["t/224",[]],["t/225",[14,3.421,38,1.526,135,3.861,136,3.861]],["t/227",[38,2.022,137,5.116]],["t/229",[38,1.526,104,3.421,138,3.861,139,3.861]],["t/231",[38,1.739,140,4.401,141,4.401]],["t/234",[17,4.952]],["t/236",[18,2.596,72,2.789,122,3.047,142,3.44,143,3.44]],["t/238",[20,2.741,72,3.131,144,3.861,145,3.861]],["t/240",[146,6.108]],["t/242",[38,1.739,67,3.568,147,4.401]],["t/247",[38,1.739,148,2.819,149,4.401]],["t/249",[38,1.526,40,2.914,128,3.421,148,2.473]],["t/251",[148,2.819,150,4.401,151,3.899]],["t/253",[38,1.526,131,3.131,148,2.473,152,3.861]],["t/255",[38,1.739,148,2.819,153,4.401]],["t/257",[148,2.203,154,3.44,155,3.44,156,3.44,157,3.44]],["t/259",[47,1.971,148,1.425,158,3.63,159,3.63,160,2.225,161,2.225,162,2.225,163,2.225]],["t/263",[35,4.148,36,4.532]],["t/264",[38,2.414]],["t/266",[164,5.411]],["t/268",[40,2.914,131,3.131,165,3.861,166,3.421]],["t/269",[38,2.414]],["t/271",[164,5.411]],["t/273",[167,6.108]],["t/274",[168,6.108]],["t/276",[169,6.108]],["t/280",[25,4.609]],["t/282",[25,3.86,170,5.116]],["t/284",[15,3.421,16,3.421,25,2.914,171,3.861]],["t/286",[151,4.532,172,5.116]],["t/290",[38,1.359,44,2.107,173,3.44,174,2.789,175,3.44]],["t/292",[38,1.359,44,2.107,174,2.789,176,3.44,177,3.44]],["t/294",[38,1.359,44,2.107,174,2.789,178,3.44,179,3.44]],["t/297",[180,5.411]],["t/298",[180,4.532,181,5.116]],["t/300",[166,4.532,182,5.116]],["t/305",[59,2.34,183,2.747,184,3.101,185,3.101,186,3.101,187,3.101]],["t/307",[48,2.789,59,2.596,183,3.047,188,3.44,189,3.44]]],"invertedIndex":[["",{"_index":180,"t":{"297":{"position":[[0,4]]},"298":{"position":[[5,2]]}}}],["1",{"_index":18,"t":{"22":{"position":[[0,2]]},"30":{"position":[[0,2]]},"180":{"position":[[5,2]]},"236":{"position":[[5,2]]}}}],["1193",{"_index":115,"t":{"180":{"position":[[52,4]]}}}],["2",{"_index":20,"t":{"24":{"position":[[0,2]]},"32":{"position":[[0,2]]},"34":{"position":[[9,1]]},"182":{"position":[[5,2]]},"238":{"position":[[5,2]]}}}],["20",{"_index":58,"t":{"75":{"position":[[19,2]]}}}],["3",{"_index":22,"t":{"26":{"position":[[0,2]]},"34":{"position":[[0,2]]},"184":{"position":[[5,2]]}}}],["4",{"_index":32,"t":{"36":{"position":[[0,2]]}}}],["721",{"_index":61,"t":{"77":{"position":[[19,3]]}}}],["abi",{"_index":75,"t":{"91":{"position":[[13,3]]}}}],["account",{"_index":188,"t":{"307":{"position":[[16,7]]}}}],["adapt",{"_index":143,"t":{"236":{"position":[[12,7]]}}}],["add",{"_index":142,"t":{"236":{"position":[[8,3]]}}}],["address",{"_index":7,"t":{"9":{"position":[[18,7]]},"11":{"position":[[18,7]]},"56":{"position":[[9,9]]},"58":{"position":[[9,9]]},"63":{"position":[[29,7]]},"65":{"position":[[29,9]]},"67":{"position":[[39,7]]},"69":{"position":[[41,7]]},"75":{"position":[[50,7]]},"77":{"position":[[51,7]]},"79":{"position":[[32,7]]}}}],["ahead",{"_index":141,"t":{"231":{"position":[[10,5]]}}}],["aka",{"_index":185,"t":{"305":{"position":[[28,4]]}}}],["apl",{"_index":74,"t":{"90":{"position":[[17,5]]}}}],["applic",{"_index":111,"t":{"178":{"position":[[0,11]]}}}],["asset",{"_index":23,"t":{"26":{"position":[[3,5]]}}}],["balanc",{"_index":48,"t":{"63":{"position":[[8,7]]},"65":{"position":[[8,7]]},"307":{"position":[[24,7]]}}}],["bash",{"_index":105,"t":{"162":{"position":[[6,4]]}}}],["benefit",{"_index":170,"t":{"282":{"position":[[0,8]]}}}],["beta",{"_index":81,"t":{"97":{"position":[[19,6]]}}}],["bitcoin",{"_index":129,"t":{"213":{"position":[[0,7]]}}}],["bitlay",{"_index":38,"t":{"47":{"position":[[0,8]]},"49":{"position":[[7,8]]},"51":{"position":[[7,8]]},"53":{"position":[[0,8]]},"105":{"position":[[0,8]]},"107":{"position":[[0,8]]},"206":{"position":[[0,8]]},"208":{"position":[[0,8]]},"225":{"position":[[8,8]]},"227":{"position":[[11,9]]},"229":{"position":[[18,8]]},"231":{"position":[[20,9]]},"242":{"position":[[18,8]]},"247":{"position":[[13,8]]},"249":{"position":[[6,8]]},"253":{"position":[[26,9]]},"255":{"position":[[19,9]]},"264":{"position":[[0,8]]},"269":{"position":[[0,8]]},"290":{"position":[[13,8]]},"292":{"position":[[14,8]]},"294":{"position":[[13,8]]}}}],["bitvm",{"_index":25,"t":{"30":{"position":[[3,5]]},"280":{"position":[[8,6]]},"282":{"position":[[12,5]]},"284":{"position":[[14,5]]}}}],["block",{"_index":0,"t":{"4":{"position":[[4,5]]},"6":{"position":[[4,5]]},"73":{"position":[[31,5]]},"79":{"position":[[12,6]]}}}],["blockchain",{"_index":39,"t":{"47":{"position":[[12,11]]}}}],["blockno",{"_index":2,"t":{"4":{"position":[[21,7]]}}}],["bridg",{"_index":24,"t":{"26":{"position":[[9,6]]}}}],["btc",{"_index":37,"t":{"43":{"position":[[4,3]]},"49":{"position":[[0,3]]},"63":{"position":[[4,3]]},"65":{"position":[[4,3]]},"176":{"position":[[12,3]]},"180":{"position":[[25,3]]}}}],["build",{"_index":153,"t":{"255":{"position":[[10,8]]}}}],["built",{"_index":147,"t":{"242":{"position":[[9,5]]}}}],["call",{"_index":51,"t":{"65":{"position":[[51,4]]}}}],["central",{"_index":42,"t":{"53":{"position":[[17,12]]}}}],["cex",{"_index":41,"t":{"53":{"position":[[12,4]]}}}],["chain",{"_index":103,"t":{"160":{"position":[[0,5]]}}}],["check",{"_index":10,"t":{"15":{"position":[[0,5]]},"101":{"position":[[0,5]]}}}],["choos",{"_index":137,"t":{"227":{"position":[[4,6]]}}}],["code",{"_index":77,"t":{"91":{"position":[[46,5]]},"93":{"position":[[20,4],[54,5]]},"97":{"position":[[14,4]]},"99":{"position":[[7,4]]},"101":{"position":[[13,4]]}}}],["commun",{"_index":151,"t":{"251":{"position":[[22,10]]},"286":{"position":[[16,9]]}}}],["compat",{"_index":128,"t":{"211":{"position":[[4,10]]},"249":{"position":[[19,11]]}}}],["compil",{"_index":99,"t":{"152":{"position":[[0,7]]}}}],["compon",{"_index":28,"t":{"32":{"position":[[7,10]]}}}],["conclus",{"_index":119,"t":{"186":{"position":[[0,10]]}}}],["config",{"_index":107,"t":{"164":{"position":[[8,6]]}}}],["configur",{"_index":68,"t":{"84":{"position":[[30,13]]},"86":{"position":[[4,13]]},"172":{"position":[[10,13]]},"176":{"position":[[0,11]]},"205":{"position":[[8,13]]}}}],["connect",{"_index":110,"t":{"176":{"position":[[16,7]]},"180":{"position":[[29,7]]},"182":{"position":[[28,10]]}}}],["contact",{"_index":154,"t":{"257":{"position":[[13,7]]}}}],["contract",{"_index":31,"t":{"34":{"position":[[17,9]]},"56":{"position":[[0,8]]},"58":{"position":[[0,8]]},"82":{"position":[[11,8]]},"84":{"position":[[48,8]]},"88":{"position":[[18,9]]},"90":{"position":[[0,8]]},"91":{"position":[[4,8],[30,8]]},"93":{"position":[[4,8],[38,8]]},"95":{"position":[[4,8]]},"217":{"position":[[22,8]]}}}],["contractaddress",{"_index":187,"t":{"305":{"position":[[47,15]]}}}],["creat",{"_index":126,"t":{"201":{"position":[[0,8]]}}}],["creation",{"_index":79,"t":{"95":{"position":[[25,8]]}}}],["creator",{"_index":78,"t":{"95":{"position":[[13,7]]}}}],["dashboard",{"_index":108,"t":{"172":{"position":[[0,9]]}}}],["depend",{"_index":109,"t":{"174":{"position":[[0,10]]}}}],["deploy",{"_index":101,"t":{"156":{"position":[[0,10]]}}}],["develop",{"_index":168,"t":{"274":{"position":[[4,10]]}}}],["dlc",{"_index":27,"t":{"32":{"position":[[3,3]]}}}],["document",{"_index":136,"t":{"225":{"position":[[27,13]]}}}],["download",{"_index":96,"t":{"148":{"position":[[0,8]]}}}],["eip",{"_index":114,"t":{"180":{"position":[[48,3]]}}}],["endpoint",{"_index":46,"t":{"61":{"position":[[0,8]]}}}],["engag",{"_index":172,"t":{"286":{"position":[[0,6]]}}}],["english",{"_index":182,"t":{"300":{"position":[[0,7]]}}}],["erc",{"_index":57,"t":{"75":{"position":[[14,4]]},"77":{"position":[[14,4]]}}}],["erc20",{"_index":183,"t":{"305":{"position":[[4,5]]},"307":{"position":[[4,5]]}}}],["eth_gettraceactionbyblockhash",{"_index":95,"t":{"129":{"position":[[0,29]]}}}],["eth_gettraceactionbyblocknumb",{"_index":94,"t":{"121":{"position":[[0,31]]}}}],["eth_gettraceactionbytxhash",{"_index":92,"t":{"113":{"position":[[0,26]]}}}],["ethereum",{"_index":164,"t":{"266":{"position":[[0,8]]},"271":{"position":[[0,8]]}}}],["event",{"_index":5,"t":{"9":{"position":[[4,5]]},"11":{"position":[[4,5]]},"75":{"position":[[39,7]]},"77":{"position":[[40,7]]}}}],["evm",{"_index":40,"t":{"51":{"position":[[0,3]]},"211":{"position":[[0,3]]},"249":{"position":[[15,3]]},"268":{"position":[[10,3]]}}}],["exampl",{"_index":66,"t":{"84":{"position":[[3,7]]},"119":{"position":[[0,7]]},"127":{"position":[[0,7]]},"135":{"position":[[0,7]]}}}],["exchang",{"_index":43,"t":{"53":{"position":[[30,10]]}}}],["exclus",{"_index":130,"t":{"213":{"position":[[8,9]]}}}],["execut",{"_index":118,"t":{"184":{"position":[[20,9]]}}}],["experi",{"_index":171,"t":{"284":{"position":[[0,10]]}}}],["explor",{"_index":135,"t":{"225":{"position":[[0,7]]}}}],["facilit",{"_index":116,"t":{"182":{"position":[[8,12]]}}}],["feder",{"_index":26,"t":{"30":{"position":[[9,10]]}}}],["file",{"_index":70,"t":{"86":{"position":[[43,4]]}}}],["filter",{"_index":8,"t":{"11":{"position":[[26,8]]}}}],["first",{"_index":173,"t":{"290":{"position":[[0,5]]}}}],["follow",{"_index":71,"t":{"86":{"position":[[54,8]]}}}],["ga",{"_index":35,"t":{"41":{"position":[[17,3]]},"43":{"position":[[8,3]]},"263":{"position":[[0,3]]}}}],["gist",{"_index":83,"t":{"99":{"position":[[23,4]]}}}],["golang",{"_index":98,"t":{"150":{"position":[[8,6]]}}}],["graph",{"_index":120,"t":{"190":{"position":[[4,5]]},"192":{"position":[[14,5]]}}}],["guid",{"_index":85,"t":{"99":{"position":[[39,4]]}}}],["hardhat",{"_index":65,"t":{"82":{"position":[[28,7]]},"84":{"position":[[14,7]]}}}],["hardhat.config.j",{"_index":69,"t":{"86":{"position":[[25,17]]}}}],["hardwar",{"_index":102,"t":{"158":{"position":[[0,8]]}}}],["hash",{"_index":55,"t":{"71":{"position":[[43,4]]},"95":{"position":[[37,4]]}}}],["help",{"_index":152,"t":{"253":{"position":[[13,4]]}}}],["hit",{"_index":162,"t":{"259":{"position":[[68,3]]}}}],["implement",{"_index":112,"t":{"178":{"position":[[12,14]]}}}],["implic",{"_index":167,"t":{"273":{"position":[[0,12]]}}}],["import",{"_index":34,"t":{"41":{"position":[[0,10]]}}}],["inquiri",{"_index":157,"t":{"257":{"position":[[39,8]]}}}],["instal",{"_index":97,"t":{"150":{"position":[[0,7]]},"174":{"position":[[11,12]]}}}],["interact",{"_index":113,"t":{"180":{"position":[[8,11]]}}}],["intern",{"_index":54,"t":{"69":{"position":[[14,10]]},"71":{"position":[[4,9]]},"73":{"position":[[4,9]]}}}],["introduct",{"_index":17,"t":{"20":{"position":[[0,12]]},"170":{"position":[[0,12]]},"234":{"position":[[0,12]]}}}],["issu",{"_index":163,"t":{"259":{"position":[[88,6]]}}}],["join",{"_index":150,"t":{"251":{"position":[[13,4]]}}}],["launch",{"_index":149,"t":{"247":{"position":[[22,7]]}}}],["layer",{"_index":29,"t":{"34":{"position":[[3,5]]}}}],["li",{"_index":140,"t":{"231":{"position":[[5,4]]}}}],["limit",{"_index":159,"t":{"259":{"position":[[19,6],[81,6]]}}}],["list",{"_index":52,"t":{"67":{"position":[[6,4]]},"69":{"position":[[6,4]]},"75":{"position":[[6,4]]},"77":{"position":[[6,4]]},"79":{"position":[[4,4]]}}}],["local",{"_index":122,"t":{"192":{"position":[[8,5]]},"236":{"position":[[20,7]]}}}],["log",{"_index":6,"t":{"9":{"position":[[10,4]]},"11":{"position":[[10,4]]}}}],["mainnet",{"_index":44,"t":{"56":{"position":[[19,9]]},"105":{"position":[[9,7]]},"138":{"position":[[0,7]]},"142":{"position":[[0,7]]},"206":{"position":[[9,7]]},"290":{"position":[[22,7]]},"292":{"position":[[23,7]]},"294":{"position":[[22,7]]}}}],["maxsuppli",{"_index":186,"t":{"305":{"position":[[33,10]]}}}],["migrat",{"_index":123,"t":{"194":{"position":[[0,9]]}}}],["mpc",{"_index":134,"t":{"219":{"position":[[0,3]]}}}],["multi",{"_index":132,"t":{"217":{"position":[[0,5]]}}}],["multipl",{"_index":50,"t":{"65":{"position":[[20,8]]}}}],["network",{"_index":127,"t":{"205":{"position":[[0,7]]},"215":{"position":[[0,8]]}}}],["node",{"_index":90,"t":{"109":{"position":[[0,4]]},"160":{"position":[[6,4]]},"192":{"position":[[20,4]]}}}],["normal",{"_index":53,"t":{"67":{"position":[[14,8]]}}}],["number",{"_index":3,"t":{"6":{"position":[[10,6]]}}}],["offici",{"_index":121,"t":{"190":{"position":[[10,8]]}}}],["paper",{"_index":16,"t":{"18":{"position":[[16,5]]},"284":{"position":[[26,5]]}}}],["paramet",{"_index":93,"t":{"115":{"position":[[0,10]]},"123":{"position":[[0,10]]},"131":{"position":[[0,10]]}}}],["part",{"_index":86,"t":{"99":{"position":[[47,4]]},"180":{"position":[[0,4]]},"182":{"position":[[0,4]]},"184":{"position":[[0,4]]}}}],["pr",{"_index":145,"t":{"238":{"position":[[15,2]]}}}],["prerequisit",{"_index":125,"t":{"199":{"position":[[0,13]]}}}],["press",{"_index":156,"t":{"257":{"position":[[33,5]]}}}],["price",{"_index":36,"t":{"41":{"position":[[21,5]]},"263":{"position":[[4,5]]}}}],["process",{"_index":19,"t":{"22":{"position":[[15,10]]}}}],["project",{"_index":67,"t":{"84":{"position":[[22,7]]},"192":{"position":[[0,7]]},"242":{"position":[[0,8]]}}}],["provid",{"_index":91,"t":{"109":{"position":[[5,9]]},"180":{"position":[[57,8]]}}}],["public",{"_index":160,"t":{"259":{"position":[[29,6]]}}}],["q",{"_index":148,"t":{"247":{"position":[[0,2]]},"249":{"position":[[0,2]]},"251":{"position":[[0,2]]},"253":{"position":[[0,2]]},"255":{"position":[[0,2]]},"257":{"position":[[0,2]]},"259":{"position":[[0,2]]}}}],["rang",{"_index":56,"t":{"73":{"position":[[37,5]]}}}],["rate",{"_index":158,"t":{"259":{"position":[[14,4],[76,4]]}}}],["receipt",{"_index":12,"t":{"15":{"position":[[18,7]]}}}],["refer",{"_index":146,"t":{"240":{"position":[[0,9]]}}}],["regard",{"_index":155,"t":{"257":{"position":[[21,9]]}}}],["relat",{"_index":73,"t":{"90":{"position":[[9,7]]}}}],["relay",{"_index":33,"t":{"36":{"position":[[3,8]]}}}],["result",{"_index":87,"t":{"99":{"position":[[59,6]]}}}],["return",{"_index":84,"t":{"99":{"position":[[28,8]]},"117":{"position":[[0,7]]},"125":{"position":[[0,7]]},"133":{"position":[[0,7]]}}}],["reward",{"_index":1,"t":{"4":{"position":[[10,7]]}}}],["rpc",{"_index":161,"t":{"259":{"position":[[36,3]]}}}],["run",{"_index":100,"t":{"154":{"position":[[0,3]]}}}],["second",{"_index":176,"t":{"292":{"position":[[0,6]]}}}],["signatur",{"_index":133,"t":{"217":{"position":[[6,9]]}}}],["singl",{"_index":49,"t":{"63":{"position":[[22,6]]},"65":{"position":[[44,6]]}}}],["smart",{"_index":30,"t":{"34":{"position":[[11,5]]},"217":{"position":[[16,5]]}}}],["solid",{"_index":165,"t":{"268":{"position":[[18,8]]}}}],["sourc",{"_index":76,"t":{"91":{"position":[[39,6]]},"93":{"position":[[13,6],[47,6]]},"97":{"position":[[7,6]]},"99":{"position":[[0,6]]},"101":{"position":[[6,6]]}}}],["stage",{"_index":174,"t":{"290":{"position":[[6,6]]},"292":{"position":[[7,6]]},"294":{"position":[[6,6]]}}}],["start",{"_index":104,"t":{"162":{"position":[[0,5]]},"229":{"position":[[6,5]]}}}],["statu",{"_index":13,"t":{"15":{"position":[[26,6]]},"101":{"position":[[42,7]]}}}],["step",{"_index":72,"t":{"88":{"position":[[0,5]]},"236":{"position":[[0,4]]},"238":{"position":[[0,4]]}}}],["subgraph",{"_index":124,"t":{"197":{"position":[[10,9]]},"201":{"position":[[11,8]]}}}],["submiss",{"_index":82,"t":{"99":{"position":[[12,10]]},"101":{"position":[[31,10]]}}}],["submit",{"_index":144,"t":{"238":{"position":[[8,6]]}}}],["success",{"_index":89,"t":{"99":{"position":[[71,9]]}}}],["support",{"_index":131,"t":{"215":{"position":[[9,9]]},"253":{"position":[[18,7]]},"268":{"position":[[0,9]]}}}],["systemd",{"_index":106,"t":{"164":{"position":[[0,7]]}}}],["technic",{"_index":14,"t":{"18":{"position":[[0,9]]},"225":{"position":[[17,9]]}}}],["testnet",{"_index":45,"t":{"58":{"position":[[19,9]]},"107":{"position":[[9,7]]},"144":{"position":[[0,7]]},"208":{"position":[[9,7]]}}}],["third",{"_index":178,"t":{"294":{"position":[[0,5]]}}}],["through",{"_index":64,"t":{"82":{"position":[[20,7]]},"180":{"position":[[37,7]]}}}],["timestamp",{"_index":4,"t":{"6":{"position":[[20,9]]}}}],["today",{"_index":139,"t":{"229":{"position":[[27,6]]}}}],["token",{"_index":59,"t":{"75":{"position":[[24,5]]},"77":{"position":[[25,5]]},"305":{"position":[[10,5]]},"307":{"position":[[10,5]]}}}],["tokencontractaddress",{"_index":189,"t":{"307":{"position":[[36,20]]}}}],["topic",{"_index":9,"t":{"11":{"position":[[38,6]]}}}],["totalsuppli",{"_index":184,"t":{"305":{"position":[[16,11]]}}}],["transact",{"_index":11,"t":{"15":{"position":[[6,11]]},"22":{"position":[[3,11]]},"24":{"position":[[3,11]]},"67":{"position":[[23,12]]},"69":{"position":[[25,12]]},"71":{"position":[[14,13],[31,11]]},"73":{"position":[[14,13]]},"184":{"position":[[8,11]]}}}],["transfer",{"_index":60,"t":{"75":{"position":[[30,8]]},"77":{"position":[[31,8]]}}}],["tx",{"_index":80,"t":{"95":{"position":[[34,2]]}}}],["upon",{"_index":88,"t":{"99":{"position":[[66,4]]}}}],["url",{"_index":47,"t":{"61":{"position":[[9,4]]},"259":{"position":[[40,5]]}}}],["us",{"_index":138,"t":{"229":{"position":[[12,5]]}}}],["user",{"_index":169,"t":{"276":{"position":[[4,5]]}}}],["v1",{"_index":175,"t":{"290":{"position":[[30,2]]}}}],["v2",{"_index":177,"t":{"292":{"position":[[31,2]]}}}],["v3",{"_index":179,"t":{"294":{"position":[[30,2]]}}}],["valid",{"_index":62,"t":{"79":{"position":[[19,9]]}}}],["verif",{"_index":21,"t":{"24":{"position":[[15,12]]},"84":{"position":[[57,12]]},"101":{"position":[[18,12]]}}}],["verifi",{"_index":63,"t":{"82":{"position":[[0,6],[36,6]]},"88":{"position":[[9,6]]},"91":{"position":[[21,8]]},"93":{"position":[[29,8]]},"97":{"position":[[0,6]]}}}],["version",{"_index":166,"t":{"268":{"position":[[27,8]]},"300":{"position":[[8,7]]}}}],["wallet",{"_index":117,"t":{"182":{"position":[[21,6]]},"211":{"position":[[15,7]]},"213":{"position":[[18,7]]},"217":{"position":[[31,6]]},"219":{"position":[[4,6]]}}}],["wbtc",{"_index":181,"t":{"298":{"position":[[0,4]]}}}],["white",{"_index":15,"t":{"18":{"position":[[10,5]]},"284":{"position":[[20,5]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":1,"t":"Bitcoin is changing. Drastically.","s":"Bitlayer: Amplifying Bitcoin","u":"/blog/Bitlayer: Amplifying Bitcoin","p":1},{"i":3,"t":"Get Block Rewards by BlockNo","s":"Blocks","u":"/docs/Bitlayer Scan APIs/Blocks","p":3},{"i":8,"t":"Get Event Logs by Address","s":"Logs","u":"/docs/Bitlayer Scan APIs/Logs","p":8},{"i":13,"t":"Archive","s":"","u":"/blog/archive","p":13},{"i":14,"t":"Check Transaction Receipt Status","s":"Transactions","u":"/docs/Bitlayer Scan APIs/Transactions","p":14},{"i":17,"t":"Technical White Paper","s":"Overview of Bitlayer's Design","u":"/docs/BitlayerArchitecture/BitlayerDesign","p":17},{"i":28,"t":"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:","s":"Bitlayer's Transaction Lifecycle","u":"/docs/BitlayerArchitecture/TransactionLifecycle","p":28},{"i":38,"t":"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility.","s":"Layered Virtual Machine (LVM)","u":"/docs/BitlayerArchitecture/LVM","p":38},{"i":40,"t":"Important: about gas price","s":"About Gas","u":"/docs/BitlayerNetwork/AboutGas","p":40},{"i":45,"t":"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.","s":"Bridges","u":"/docs/BitlayerNetwork/Bridges","p":45},{"i":55,"t":"Contract Addresses (Mainnet)","s":"Contracts","u":"/docs/BitlayerNetwork/Contracts","p":55},{"i":60,"t":"Endpoint URLs","s":"Accounts","u":"/docs/Bitlayer Scan APIs/Accounts","p":60},{"i":81,"t":"Verify the contract through hardhat verify","s":"Contracts","u":"/docs/Bitlayer Scan APIs/Contracts","p":81},{"i":103,"t":"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.","s":"Networks and RPC Enpoints","u":"/docs/BitlayerNetwork/Networks","p":103},{"i":111,"t":"Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.","s":"JSON-RPC","u":"/docs/BitlayerNetwork/Json-RPC","p":111},{"i":137,"t":"Mainnet","s":"Peg Tokens","u":"/docs/BitlayerNetwork/PegTokens","p":137},{"i":140,"t":"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.","s":"Block Explorers","u":"/docs/DeveloperResources/Block Explorers","p":140},{"i":146,"t":"This guide walks you through compiling and running Bitlayer.","s":"Compile, Run and Deploy","u":"/docs/Build/Compile and Run","p":146},{"i":166,"t":"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites.","s":"Faucets","u":"/docs/DeveloperResources/Faucets","p":166},{"i":168,"t":"Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts.","s":"BTC Connect (Account Abstraction)","u":"/docs/DeveloperResources/BTC Connect","p":168},{"i":188,"t":"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.","s":"Indexing-The-Graph","u":"/docs/DeveloperResources/TheGraph","p":188},{"i":196,"t":"What is a Subgraph?","s":"Indexing-3rd-Party","u":"/docs/DeveloperResources/Subgraph","p":196},{"i":203,"t":"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility.","s":"Quick Start Guide","u":"/docs/Build/QuickStart","p":203},{"i":210,"t":"EVM-Compatible Wallets","s":"Supported Wallets for Bitlayer","u":"/docs/DeveloperResources/Wallets","p":210},{"i":221,"t":"Website:https://www.bitlayer.org/","s":"Contact Details","u":"/docs/FAQs/Contact Details","p":221},{"i":223,"t":"The first bitcoin security-equivalent Layer 2 based on BitVM","s":"Welcome","u":"/docs/Introduction/","p":223},{"i":233,"t":"Introduction","s":"DefiLlama TVL Integration","u":"/docs/FAQs/Defillama TVL integration","p":233},{"i":244,"t":"For users and developers alike, the fundamental concept of Bitlayer is outlined below:","s":"About Bitlayer","u":"/docs/Introduction/AboutBitlayer","p":244},{"i":246,"t":"Q: When does Bitlayer launch?","s":"Frequently Asked Questions","u":"/docs/FAQs/Frequently asked questions","p":246},{"i":261,"t":"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users.","s":"Bitlayer vs. Ethereum","u":"/docs/Introduction/BitlayerVsEth","p":261},{"i":278,"t":"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.","s":"About BitVM","u":"/docs/Introduction/BitVM","p":278},{"i":288,"t":"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.","s":"Roadmap","u":"/docs/Introduction/Roadmap","p":288},{"i":296,"t":"中文版本","s":"wBTC","u":"/docs/FAQs/WBTC","p":296},{"i":302,"t":"Technical Architecture","s":"Technical Architecture","u":"/docs/Introduction/TechnicalArchitecture","p":302},{"i":304,"t":"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress","s":"Tokens","u":"/docs/Bitlayer Scan APIs/Tokens","p":304}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,2.461,1,4.57,2,4.57]],["t/3",[3,3.835,4,4.57,5,4.57]],["t/8",[6,4.57,7,4.57,8,3.352]],["t/13",[9,5.079]],["t/14",[10,4.352,11,3.652,12,4.352,13,4.352]],["t/17",[14,3.835,15,4.57,16,4.57]],["t/28",[0,0.622,17,0.612,18,2.186,19,2.186,20,0.622,21,1.54,22,1.983,23,0.97,24,1.155,25,1.155,26,1.155,27,1.155,28,2.022,29,2.186,30,0.97,31,0.97,32,1.155,33,0.97,34,1.155,35,0.97,36,0.97,37,1.155,38,1.155,39,1.155,40,1.155,41,1.155,42,1.155,43,1.155,44,0.97,45,1.155,46,0.97,47,1.155,48,1.983,49,1.155,50,1.155,51,1.155,52,0.847,53,1.155,54,1.983,55,1.155,56,0.847,57,1.155,58,0.97,59,1.155,60,0.756,61,0.622,62,1.155]],["t/38",[28,0.995,35,1.277,60,1.635,61,1.346,63,1.521,64,1.521,65,1.521,66,1.521,67,1.521,68,1.521,69,1.521,70,1.521,71,1.521,72,1.521,73,1.116,74,1.116,75,1.277,76,1.521,77,1.521,78,1.521,79,1.521,80,1.521,81,1.521,82,1.521,83,1.277,84,1.116,85,1.277,86,2.499,87,1.521,88,1.521,89,1.521,90,1.521,91,1.521,92,1.521,93,1.521,94,1.116,95,1.521,96,1.277,97,1.277,98,1.521]],["t/40",[99,4.57,100,3.835,101,3.835]],["t/45",[17,1.136,18,1.277,19,3.09,20,0.819,21,0.899,30,1.277,31,1.277,73,1.116,74,1.116,75,1.277,102,1.521,103,1.521,104,1.521,105,1.277,106,2.669,107,0.995,108,1.521,109,1.521,110,1.521,111,0.899,112,0.819,113,1.277,114,1.521,115,1.277,116,1.833,117,1.277,118,1.521,119,1.521,120,1.521,121,1.521,122,1.277,123,1.521,124,1.521,125,1.521]],["t/55",[8,3.352,61,2.461,126,2.99]],["t/60",[127,4.038,128,4.811]],["t/81",[61,2.237,84,3.822,111,2.456,129,4.154]],["t/103",[17,1.044,20,1.822,107,2.214,122,2.84,127,2.84,130,3.383,131,2.84,132,2.84,133,3.383,134,2.84]],["t/111",[17,0.972,20,1.697,132,2.644,134,2.644,135,3.15,136,3.15,137,4.343,138,1.862,139,3.15,140,2.644,141,3.15]],["t/137",[126,3.323]],["t/140",[3,3.062,8,1.81,11,2.071,17,0.762,20,1.329,36,2.071,107,2.387,126,1.615,142,3.648,143,2.071,144,2.071,145,2.468,146,2.071,147,2.071,148,2.071,149,2.468,150,2.468]],["t/146",[17,1.226,111,2.349,131,3.334,151,3.973,152,3.973,153,3.973]],["t/166",[17,1.149,44,2.129,73,1.86,106,2.129,112,1.366,116,1.86,138,1.5,154,1.66,155,1.86,156,2.129,157,2.537,158,2.537,159,2.537,160,2.537,161,2.537,162,2.537,163,2.537,164,2.537]],["t/168",[0,1.445,17,0.512,28,1.086,46,2.252,52,1.967,60,1.755,105,1.393,107,1.086,111,0.981,112,0.894,113,1.393,116,1.217,165,2.683,166,1.66,167,1.393,168,3.878,169,1.66,170,1.393,171,1.66,172,1.66,173,1.66,174,1.393,175,1.66,176,1.66,177,1.66,178,1.66,179,1.66,180,1.66,181,1.66,182,1.66]],["t/188",[23,2.644,58,2.644,138,1.862,143,2.644,156,2.644,170,2.644,183,3.15,184,2.31,185,3.15,186,3.15,187,3.15,188,3.15]],["t/196",[189,5.079]],["t/203",[17,1.251,60,1.868,61,1.537,138,1.687,144,2.395,154,1.868,155,2.093,184,2.093,190,2.854,191,2.854,192,2.854,193,2.854,194,2.854,195,2.854]],["t/210",[154,2.99,155,3.352,174,3.835]],["t/221",[196,5.079]],["t/223",[0,1.968,28,2.391,29,3.067,33,3.067,56,2.68,94,2.68,167,3.067,197,3.655]],["t/233",[198,5.079]],["t/244",[17,1.128,21,2.16,112,1.968,199,3.655,200,3.655,201,3.655,202,3.655,203,3.655]],["t/246",[17,1.41,204,4.57,205,4.57]],["t/261",[17,0.783,20,1.366,21,1.5,74,1.86,85,2.129,100,2.129,101,2.129,112,1.366,138,1.5,140,2.129,146,2.129,148,2.129,154,1.66,206,2.537,207,2.537,208,2.537,209,2.537,210,2.537,211,2.537]],["t/278",[0,2.198,52,1.633,56,2.477,61,1.2,84,1.633,97,2.835,112,1.2,184,1.633,212,2.227,213,2.227,214,2.227,215,2.227,216,2.227,217,2.227,218,2.227,219,2.227,220,2.227,221,2.227,222,2.227,223,2.227]],["t/288",[0,1.23,17,0.705,21,1.35,83,1.916,94,1.674,96,1.916,111,2.035,115,1.916,117,1.916,126,1.494,147,1.916,224,2.283,225,2.283,226,2.283,227,2.283,228,2.283,229,2.283,230,2.283,231,2.283,232,2.283,233,2.283,234,2.283]],["t/296",[235,5.079]],["t/302",[14,4.038,236,4.811]],["t/304",[237,3.973,238,3.973,239,3.973,240,3.973,241,3.973,242,3.973]]],"invertedIndex":[["",{"_index":235,"t":{"296":{"position":[[0,4]]}}}],["1",{"_index":45,"t":{"28":{"position":[[281,1]]}}}],["100",{"_index":194,"t":{"203":{"position":[[103,4]]}}}],["2",{"_index":29,"t":{"28":{"position":[[116,1],[391,1],[497,1]]},"223":{"position":[[44,1]]}}}],["2s",{"_index":172,"t":{"168":{"position":[[143,2]]}}}],["4337",{"_index":179,"t":{"168":{"position":[[257,4]]}}}],["aa",{"_index":180,"t":{"168":{"position":[[262,2]]}}}],["abstract",{"_index":169,"t":{"168":{"position":[[52,11]]}}}],["account",{"_index":168,"t":{"168":{"position":[[44,7],[117,8],[163,8],[350,9]]}}}],["achiev",{"_index":176,"t":{"168":{"position":[[209,7]]}}}],["activ",{"_index":147,"t":{"140":{"position":[[153,8]]},"288":{"position":[[231,9]]}}}],["address",{"_index":8,"t":{"8":{"position":[[18,7]]},"55":{"position":[[9,9]]},"140":{"position":[[34,9]]}}}],["advanc",{"_index":68,"t":{"38":{"position":[[66,11]]}}}],["aka",{"_index":240,"t":{"304":{"position":[[28,4]]}}}],["alik",{"_index":199,"t":{"244":{"position":[[25,6]]}}}],["along",{"_index":139,"t":{"111":{"position":[[62,5]]}}}],["api",{"_index":136,"t":{"111":{"position":[[31,3]]}}}],["applic",{"_index":156,"t":{"166":{"position":[[57,12]]},"188":{"position":[[52,12]]}}}],["approach",{"_index":72,"t":{"38":{"position":[[132,8]]}}}],["architectur",{"_index":236,"t":{"302":{"position":[[10,12]]}}}],["archiv",{"_index":9,"t":{"13":{"position":[[0,7]]}}}],["aspect",{"_index":209,"t":{"261":{"position":[[64,7]]}}}],["asset",{"_index":18,"t":{"28":{"position":[[13,5],[260,5],[427,5]]},"45":{"position":[[134,5]]}}}],["avail",{"_index":125,"t":{"45":{"position":[[419,9]]}}}],["backend",{"_index":80,"t":{"38":{"position":[[228,7]]}}}],["base",{"_index":33,"t":{"28":{"position":[[139,5]]},"223":{"position":[[46,5]]}}}],["below",{"_index":203,"t":{"244":{"position":[[80,6]]}}}],["between",{"_index":121,"t":{"45":{"position":[[347,7]]}}}],["bitcoin",{"_index":0,"t":{"1":{"position":[[0,7]]},"28":{"position":[[102,7]]},"168":{"position":[[81,7],[129,7]]},"223":{"position":[[10,7]]},"278":{"position":[[57,7],[139,8],[243,8]]},"288":{"position":[[201,7]]}}}],["bitlay",{"_index":17,"t":{"28":{"position":[[4,8],[170,8]]},"45":{"position":[[42,8],[168,8],[256,8],[444,8]]},"103":{"position":[[57,8]]},"111":{"position":[[0,8]]},"140":{"position":[[51,8]]},"146":{"position":[[51,9]]},"166":{"position":[[0,8],[136,8]]},"168":{"position":[[292,9]]},"203":{"position":[[64,8],[85,8]]},"244":{"position":[[59,8]]},"246":{"position":[[13,8]]},"261":{"position":[[23,8]]},"288":{"position":[[14,8]]}}}],["bitvm",{"_index":56,"t":{"28":{"position":[[451,5]]},"223":{"position":[[55,5]]},"278":{"position":[[0,5],[202,5]]}}}],["bitvm+dlc",{"_index":34,"t":{"28":{"position":[[148,9]]}}}],["block",{"_index":3,"t":{"3":{"position":[[4,5]]},"140":{"position":[[22,7],[87,5]]}}}],["blockchain",{"_index":106,"t":{"45":{"position":[[62,10],[233,10],[365,12]]},"166":{"position":[[30,11]]}}}],["blockno",{"_index":5,"t":{"3":{"position":[[21,7]]}}}],["boast",{"_index":193,"t":{"203":{"position":[[94,8]]}}}],["bolster",{"_index":231,"t":{"288":{"position":[[153,7]]}}}],["both",{"_index":148,"t":{"140":{"position":[[165,4]]},"261":{"position":[[160,4]]}}}],["bridg",{"_index":19,"t":{"28":{"position":[[19,6],[213,6],[433,6]]},"45":{"position":[[0,7],[159,8],[296,6],[429,7]]}}}],["btc",{"_index":46,"t":{"28":{"position":[[293,3]]},"168":{"position":[[19,3],[159,3]]}}}],["build",{"_index":184,"t":{"188":{"position":[[29,8]]},"203":{"position":[[15,8]]},"278":{"position":[[111,5]]}}}],["chain",{"_index":31,"t":{"28":{"position":[[124,5]]},"45":{"position":[[128,5]]}}}],["chang",{"_index":1,"t":{"1":{"position":[[11,9]]}}}],["channel",{"_index":38,"t":{"28":{"position":[[193,7]]}}}],["check",{"_index":10,"t":{"14":{"position":[[0,5]]}}}],["commun",{"_index":120,"t":{"45":{"position":[[333,13]]}}}],["compar",{"_index":207,"t":{"261":{"position":[[14,8]]}}}],["compat",{"_index":155,"t":{"166":{"position":[[19,10]]},"203":{"position":[[135,14]]},"210":{"position":[[4,10]]}}}],["compil",{"_index":152,"t":{"146":{"position":[[29,9]]}}}],["complet",{"_index":215,"t":{"278":{"position":[[48,8]]}}}],["compon",{"_index":54,"t":{"28":{"position":[[409,10],[479,11]]}}}],["comput",{"_index":97,"t":{"38":{"position":[[383,13]]},"278":{"position":[[11,9],[228,11]]}}}],["concept",{"_index":201,"t":{"244":{"position":[[48,7]]}}}],["connect",{"_index":105,"t":{"45":{"position":[[31,10]]},"168":{"position":[[23,7]]}}}],["consensu",{"_index":233,"t":{"288":{"position":[[209,9]]}}}],["consist",{"_index":55,"t":{"28":{"position":[[440,7]]}}}],["contract",{"_index":61,"t":{"28":{"position":[[505,10]]},"38":{"position":[[96,8],[187,8]]},"55":{"position":[[0,8]]},"81":{"position":[[11,8]]},"203":{"position":[[42,9]]},"278":{"position":[[65,10]]}}}],["contractaddress",{"_index":242,"t":{"304":{"position":[[47,15]]}}}],["control",{"_index":22,"t":{"28":{"position":[[40,10],[249,10]]}}}],["core",{"_index":53,"t":{"28":{"position":[[404,4]]}}}],["cost",{"_index":160,"t":{"166":{"position":[[152,5]]}}}],["cross",{"_index":30,"t":{"28":{"position":[[118,5]]},"45":{"position":[[122,5]]}}}],["crucial",{"_index":103,"t":{"45":{"position":[[15,7]]}}}],["cryptograph",{"_index":232,"t":{"288":{"position":[[178,13]]}}}],["custodi",{"_index":24,"t":{"28":{"position":[[65,8]]}}}],["custom",{"_index":141,"t":{"111":{"position":[[81,6]]}}}],["dapp",{"_index":185,"t":{"188":{"position":[[65,7]]}}}],["decentr",{"_index":23,"t":{"28":{"position":[[51,13]]},"188":{"position":[[38,13]]}}}],["deploy",{"_index":177,"t":{"168":{"position":[[244,8]]}}}],["deposit",{"_index":47,"t":{"28":{"position":[[297,7]]}}}],["design",{"_index":117,"t":{"45":{"position":[[268,8]]},"288":{"position":[[109,8]]}}}],["detail",{"_index":145,"t":{"140":{"position":[[122,8]]}}}],["develop",{"_index":112,"t":{"45":{"position":[[187,10]]},"166":{"position":[[74,10]]},"168":{"position":[[308,10]]},"244":{"position":[[14,10]]},"261":{"position":[[165,10]]},"278":{"position":[[208,9]]}}}],["differ",{"_index":122,"t":{"45":{"position":[[355,9]]},"103":{"position":[[47,9]]}}}],["dlc",{"_index":59,"t":{"28":{"position":[[475,3]]}}}],["document",{"_index":206,"t":{"261":{"position":[[5,8]]}}}],["drastic",{"_index":2,"t":{"1":{"position":[[21,12]]}}}],["dual",{"_index":37,"t":{"28":{"position":[[188,4]]}}}],["each",{"_index":228,"t":{"288":{"position":[[98,4]]}}}],["ecosystem",{"_index":116,"t":{"45":{"position":[[244,11],[453,10]]},"166":{"position":[[112,9]]},"168":{"position":[[89,10]]}}}],["elimin",{"_index":161,"t":{"166":{"position":[[158,11]]}}}],["enabl",{"_index":73,"t":{"38":{"position":[[141,7]]},"45":{"position":[[83,8]]},"166":{"position":[[50,6]]}}}],["endpoint",{"_index":127,"t":{"60":{"position":[[0,8]]},"103":{"position":[[90,10]]}}}],["enhanc",{"_index":96,"t":{"38":{"position":[[373,9]]},"288":{"position":[[121,7]]}}}],["environ",{"_index":150,"t":{"140":{"position":[[194,13]]}}}],["equival",{"_index":197,"t":{"223":{"position":[[27,10]]}}}],["erc",{"_index":178,"t":{"168":{"position":[[253,3]]}}}],["erc20",{"_index":237,"t":{"304":{"position":[[4,5]]}}}],["etc",{"_index":91,"t":{"38":{"position":[[319,6]]}}}],["ethereum",{"_index":138,"t":{"111":{"position":[[53,8]]},"166":{"position":[[103,8]]},"188":{"position":[[84,8]]},"203":{"position":[[116,8]]},"261":{"position":[[36,8]]}}}],["event",{"_index":6,"t":{"8":{"position":[[4,5]]}}}],["evm",{"_index":154,"t":{"166":{"position":[[15,3]]},"203":{"position":[[108,3]]},"210":{"position":[[0,3]]},"261":{"position":[[110,3]]}}}],["evm/cairovm",{"_index":79,"t":{"38":{"position":[[211,12]]}}}],["execut",{"_index":70,"t":{"38":{"position":[[105,10]]}}}],["exist",{"_index":157,"t":{"166":{"position":[[94,8]]}}}],["experi",{"_index":230,"t":{"288":{"position":[[138,10]]}}}],["explor",{"_index":142,"t":{"140":{"position":[[0,7],[93,10]]}}}],["express",{"_index":213,"t":{"278":{"position":[[33,7]]}}}],["facilit",{"_index":119,"t":{"45":{"position":[[322,10]]}}}],["feder",{"_index":57,"t":{"28":{"position":[[457,10]]}}}],["first",{"_index":167,"t":{"168":{"position":[[38,5]]},"223":{"position":[[4,5]]}}}],["flexibl",{"_index":98,"t":{"38":{"position":[[397,12]]}}}],["foundament",{"_index":216,"t":{"278":{"position":[[89,12]]}}}],["frontend",{"_index":76,"t":{"38":{"position":[[172,8]]}}}],["fundament",{"_index":200,"t":{"244":{"position":[[36,11]]}}}],["ga",{"_index":100,"t":{"40":{"position":[[17,3]]},"261":{"position":[[82,3]]}}}],["graph",{"_index":183,"t":{"188":{"position":[[0,5]]}}}],["graphql",{"_index":188,"t":{"188":{"position":[[108,8]]}}}],["groth16",{"_index":89,"t":{"38":{"position":[[302,9]]}}}],["guid",{"_index":131,"t":{"103":{"position":[[15,5]]},"146":{"position":[[5,5]]}}}],["hardfork(which",{"_index":221,"t":{"278":{"position":[[168,14]]}}}],["hardhat",{"_index":129,"t":{"81":{"position":[[28,7]]}}}],["high",{"_index":26,"t":{"28":{"position":[[87,4]]}}}],["implement",{"_index":118,"t":{"45":{"position":[[303,15]]}}}],["import",{"_index":99,"t":{"40":{"position":[[0,10]]}}}],["includ",{"_index":85,"t":{"38":{"position":[[268,9]]},"261":{"position":[[72,9]]}}}],["infrastructur",{"_index":181,"t":{"168":{"position":[[265,14]]}}}],["innov",{"_index":71,"t":{"38":{"position":[[121,10]]}}}],["insight",{"_index":146,"t":{"140":{"position":[[131,8]]},"261":{"position":[[147,8]]}}}],["interfac",{"_index":175,"t":{"168":{"position":[[194,11]]}}}],["interoper",{"_index":109,"t":{"45":{"position":[[101,16]]}}}],["introduct",{"_index":198,"t":{"233":{"position":[[0,12]]}}}],["ipf",{"_index":187,"t":{"188":{"position":[[97,4]]}}}],["json",{"_index":135,"t":{"111":{"position":[[22,4]]}}}],["key",{"_index":208,"t":{"261":{"position":[[60,3]]}}}],["knowledg",{"_index":82,"t":{"38":{"position":[[241,9]]}}}],["launch",{"_index":205,"t":{"246":{"position":[[22,7]]}}}],["layer",{"_index":28,"t":{"28":{"position":[[110,5],[275,5],[385,5],[491,5]]},"38":{"position":[[0,7]]},"168":{"position":[[137,5]]},"223":{"position":[[38,5]]}}}],["layer2",{"_index":218,"t":{"278":{"position":[[128,6]]}}}],["leverag",{"_index":113,"t":{"45":{"position":[[202,8]]},"168":{"position":[[335,8]]}}}],["liquid",{"_index":27,"t":{"28":{"position":[[92,9]]}}}],["list",{"_index":132,"t":{"103":{"position":[[32,7]]},"111":{"position":[[43,6]]}}}],["log",{"_index":7,"t":{"8":{"position":[[10,4]]}}}],["low",{"_index":159,"t":{"166":{"position":[[148,3]]}}}],["lvm",{"_index":65,"t":{"38":{"position":[[24,5]]}}}],["machin",{"_index":64,"t":{"38":{"position":[[16,7]]}}}],["mainnet",{"_index":126,"t":{"55":{"position":[[19,9]]},"137":{"position":[[0,7]]},"140":{"position":[[186,7]]},"288":{"position":[[65,7]]}}}],["maintain",{"_index":92,"t":{"38":{"position":[[332,11]]}}}],["maxsuppli",{"_index":241,"t":{"304":{"position":[[33,10]]}}}],["measur",{"_index":95,"t":{"38":{"position":[[360,8]]}}}],["meet",{"_index":42,"t":{"28":{"position":[[234,5]]}}}],["method",{"_index":137,"t":{"111":{"position":[[35,7],[88,8]]}}}],["migrat",{"_index":158,"t":{"166":{"position":[[125,7]]}}}],["modif",{"_index":163,"t":{"166":{"position":[[195,13]]}}}],["multipl",{"_index":115,"t":{"45":{"position":[[224,8]]},"288":{"position":[[76,8]]}}}],["nativ",{"_index":52,"t":{"28":{"position":[[378,6]]},"168":{"position":[[180,6],[280,8]]},"278":{"position":[[121,6]]}}}],["need",{"_index":44,"t":{"28":{"position":[[266,5]]},"166":{"position":[[174,4]]}}}],["network",{"_index":107,"t":{"45":{"position":[[73,9]]},"103":{"position":[[66,8]]},"140":{"position":[[60,7],[145,7]]},"168":{"position":[[232,7]]}}}],["network'",{"_index":166,"t":{"168":{"position":[[9,9]]}}}],["node",{"_index":58,"t":{"28":{"position":[[468,6]]},"188":{"position":[[6,4]]}}}],["offer",{"_index":36,"t":{"28":{"position":[[179,6]]},"140":{"position":[[116,5]]}}}],["onchain",{"_index":234,"t":{"288":{"position":[[223,7]]}}}],["outlin",{"_index":202,"t":{"244":{"position":[[71,8]]}}}],["overview",{"_index":124,"t":{"45":{"position":[[403,8]]}}}],["paper",{"_index":16,"t":{"17":{"position":[[16,5]]}}}],["paradigm",{"_index":212,"t":{"278":{"position":[[21,8]]}}}],["particl",{"_index":165,"t":{"168":{"position":[[0,8],[223,8]]}}}],["peg",{"_index":41,"t":{"28":{"position":[[209,3]]}}}],["phase",{"_index":229,"t":{"288":{"position":[[103,5]]}}}],["pilar",{"_index":217,"t":{"278":{"position":[[102,5]]}}}],["play",{"_index":102,"t":{"45":{"position":[[8,4]]}}}],["plonk",{"_index":90,"t":{"38":{"position":[[312,6]]}}}],["power",{"_index":114,"t":{"45":{"position":[[215,5]]}}}],["price",{"_index":101,"t":{"40":{"position":[[21,5]]},"261":{"position":[[86,7]]}}}],["proof",{"_index":83,"t":{"38":{"position":[[251,5]]},"288":{"position":[[192,5]]}}}],["protocol",{"_index":170,"t":{"168":{"position":[[64,8]]},"188":{"position":[[16,8]]}}}],["provid",{"_index":20,"t":{"28":{"position":[[26,8]]},"45":{"position":[[391,8]]},"103":{"position":[[21,8]]},"111":{"position":[[9,8]]},"140":{"position":[[78,8]]},"261":{"position":[[137,9]]}}}],["public",{"_index":133,"t":{"103":{"position":[[79,6]]}}}],["q",{"_index":204,"t":{"246":{"position":[[0,2]]}}}],["quickli",{"_index":186,"t":{"188":{"position":[[73,7]]}}}],["realiz",{"_index":225,"t":{"288":{"position":[[31,8]]}}}],["receipt",{"_index":12,"t":{"14":{"position":[[18,7]]}}}],["refer",{"_index":130,"t":{"103":{"position":[[5,9]]}}}],["relay",{"_index":62,"t":{"28":{"position":[[520,9]]}}}],["repres",{"_index":66,"t":{"38":{"position":[[41,10]]}}}],["requir",{"_index":51,"t":{"28":{"position":[[362,12]]}}}],["reward",{"_index":4,"t":{"3":{"position":[[10,7]]}}}],["rewrit",{"_index":164,"t":{"166":{"position":[[212,9]]}}}],["robust",{"_index":93,"t":{"38":{"position":[[344,6]]}}}],["role",{"_index":104,"t":{"45":{"position":[[23,4]]}}}],["rollout",{"_index":226,"t":{"288":{"position":[[52,7]]}}}],["rpc",{"_index":134,"t":{"103":{"position":[[86,3]]},"111":{"position":[[27,3]]}}}],["run",{"_index":153,"t":{"146":{"position":[[43,7]]}}}],["satisfi",{"_index":49,"t":{"28":{"position":[[330,9]]}}}],["seamless",{"_index":108,"t":{"45":{"position":[[92,8]]}}}],["section",{"_index":123,"t":{"45":{"position":[[383,7]]}}}],["secur",{"_index":94,"t":{"38":{"position":[[351,8]]},"223":{"position":[[18,8]]},"288":{"position":[[161,8]]}}}],["self",{"_index":43,"t":{"28":{"position":[[244,4]]}}}],["sever",{"_index":140,"t":{"111":{"position":[[73,7]]},"261":{"position":[[52,7]]}}}],["signific",{"_index":67,"t":{"38":{"position":[[54,11]]}}}],["smart",{"_index":60,"t":{"28":{"position":[[499,5]]},"38":{"position":[[90,5],[181,5]]},"168":{"position":[[111,5],[344,5]]},"203":{"position":[[36,5]]}}}],["smooth",{"_index":50,"t":{"28":{"position":[[344,6]]}}}],["smoothli",{"_index":192,"t":{"203":{"position":[[73,8]]}}}],["snark",{"_index":88,"t":{"38":{"position":[[295,6]]}}}],["softfork",{"_index":220,"t":{"278":{"position":[[156,8]]}}}],["solid",{"_index":210,"t":{"261":{"position":[[118,8]]}}}],["solut",{"_index":32,"t":{"28":{"position":[[130,8]]}}}],["stage",{"_index":227,"t":{"288":{"position":[[85,7]]}}}],["standard",{"_index":173,"t":{"168":{"position":[[150,8]]}}}],["stark",{"_index":87,"t":{"38":{"position":[[281,6]]}}}],["statu",{"_index":13,"t":{"14":{"position":[[26,6]]}}}],["subgraph",{"_index":189,"t":{"196":{"position":[[10,9]]}}}],["substanti",{"_index":162,"t":{"166":{"position":[[183,11]]}}}],["such",{"_index":78,"t":{"38":{"position":[[203,4]]}}}],["support",{"_index":74,"t":{"38":{"position":[[153,7]]},"45":{"position":[[280,7]]},"261":{"position":[[98,7]]}}}],["take",{"_index":222,"t":{"278":{"position":[[189,4]]}}}],["tap",{"_index":182,"t":{"168":{"position":[[323,3]]}}}],["technic",{"_index":14,"t":{"17":{"position":[[0,9]]},"302":{"position":[[0,9]]}}}],["technolog",{"_index":35,"t":{"28":{"position":[[158,11]]},"38":{"position":[[30,10]]}}}],["term",{"_index":69,"t":{"38":{"position":[[81,5]]}}}],["test",{"_index":190,"t":{"203":{"position":[[28,7]]}}}],["testnet",{"_index":149,"t":{"140":{"position":[[174,7]]}}}],["through",{"_index":111,"t":{"45":{"position":[[151,7]]},"81":{"position":[[20,7]]},"146":{"position":[[21,7]]},"168":{"position":[[172,7]]},"288":{"position":[[40,7],[170,7]]}}}],["token",{"_index":238,"t":{"304":{"position":[[10,5]]}}}],["tool",{"_index":144,"t":{"140":{"position":[[110,5]]},"203":{"position":[[5,5]]}}}],["toolchain",{"_index":195,"t":{"203":{"position":[[125,9]]}}}],["totalsuppli",{"_index":239,"t":{"304":{"position":[[16,11]]}}}],["transact",{"_index":11,"t":{"14":{"position":[[6,11]]},"140":{"position":[[8,13]]}}}],["transfer",{"_index":110,"t":{"45":{"position":[[140,10]]}}}],["ture",{"_index":214,"t":{"278":{"position":[[41,6]]}}}],["two",{"_index":39,"t":{"28":{"position":[[201,3]]}}}],["type",{"_index":77,"t":{"38":{"position":[[196,6]]}}}],["unifi",{"_index":171,"t":{"168":{"position":[[103,7]]}}}],["url",{"_index":128,"t":{"60":{"position":[[9,4]]}}}],["us",{"_index":143,"t":{"140":{"position":[[68,5]]},"188":{"position":[[102,5]]}}}],["user",{"_index":21,"t":{"28":{"position":[[35,4],[283,5],[393,6]]},"45":{"position":[[177,5]]},"244":{"position":[[4,5]]},"261":{"position":[[180,6]]},"288":{"position":[[133,4]]}}}],["variou",{"_index":75,"t":{"38":{"position":[[164,7]]},"45":{"position":[[288,7]]}}}],["verifi",{"_index":84,"t":{"38":{"position":[[257,10]]},"81":{"position":[[0,6],[36,6]]},"278":{"position":[[221,6]]}}}],["version",{"_index":211,"t":{"261":{"position":[[127,9]]}}}],["virtual",{"_index":63,"t":{"38":{"position":[[8,7]]}}}],["vision",{"_index":224,"t":{"288":{"position":[[4,6]]}}}],["walk",{"_index":151,"t":{"146":{"position":[[11,5]]}}}],["wallet",{"_index":174,"t":{"168":{"position":[[187,6]]},"210":{"position":[[15,7]]}}}],["way",{"_index":40,"t":{"28":{"position":[[205,3]]}}}],["website:https://www.bitlayer.org",{"_index":196,"t":{"221":{"position":[[0,33]]}}}],["well",{"_index":25,"t":{"28":{"position":[[77,4]]}}}],["white",{"_index":15,"t":{"17":{"position":[[10,5]]}}}],["withdraw",{"_index":48,"t":{"28":{"position":[[309,11],[351,10]]}}}],["without",{"_index":219,"t":{"278":{"position":[[148,7]]}}}],["work",{"_index":191,"t":{"203":{"position":[[56,4]]}}}],["year",{"_index":223,"t":{"278":{"position":[[194,7]]}}}],["zero",{"_index":81,"t":{"38":{"position":[[236,4]]}}}],["zk",{"_index":86,"t":{"38":{"position":[[278,2],[292,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[],"invertedIndex":[],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"Bitcoin is changing. Drastically. And the Bitcoin halving is less than 60 days away…. A new “order” of Ordinals threatens to divide the community. Inscription technology is crowding out monetary transactions. Even NFTs — maybe a maxi’s worst enemy — are coming to Bitcoin. But at this point, if you don’t at least understand the trade-offs, then you’re not listening. Inscriptions, Ordinals, BRC-20s, NFTs, DeFi, Layer 2s…these developments signal a major movement in the Bitcoin paradigm towards the development of applications, infrastructure, and entire industries built on top of Bitcoin blockchain technology. Another signal, perhaps the biggest of them all, was the SEC’s approval of Bitcoin ETFs and the ensuing scramble for exposure from major TradFi companies. Bitcoin purchased through Grayscale, ARK 21Shares, Franklin Templeton, Fidelity and others totaled more than 10x that of what miners were able to extract from the protocol in late February, 2024. It’s the confluence of these factors: adoption by global markets, and the development of Bitcoin applications and infrastructure, that gives Bitcoin a new meaning. Namely: Increased security from innumerable new transaction fees (especially as mining rewards decrease) Inflows of buyers and thriving new global market economies previously blocked by regulation Countless applications, projects, companies, and entire industries built on L2s, and later L3s, L4s, and counting… Introduction of new Bitcoin buyers and consumers through NFTs, DeFi, and blockchain gaming …and all the upside we would otherwise leave on the table, all the innovations and applications we can’t currently conceive Despite searing opposition, groundbreaking developments are unfolding within the Bitcoin ecosystem. Layer 2 infrastructure and applications are not only coming to the protocol, they’re storming their way in. Though, their path is not easy. For years, the unique technical characteristics of Bitcoin and the protocol’s inherent lack of support for Turing-complete smart contracts, while partially addressed by upgrades such as SegWit and Taproot, still posed key problems and left limitations concerning the growth of the Bitcoin ecosystem. The vibrancy of the Bitcoin ecosystem has been, and still is, a far reach from that of blockchain ecosystems such as Solana and Ethereum. The Lightning Network has committed to bringing faster speeds to Bitcoin payments, but has ultimately been unable to break through the programmability limitations inherent to Bitcoin itself. Stacks introduced programmability and decentralized computation to Bitcoin, and yet still requires more upgrades and iterations to lay the foundation for bringing a broader user base to the Bitcoin ecosystem. Bitcoin developers remain hungry in their search for Bitcoin scaling solutions. The market has strong expectations for a more sophisticated Bitcoin Layer 2 solution, namely, whether it is possible to inherit the security foundations of Bitcoin while providing all the benefits of scalability such as high throughput, low cost, etc. To do all this without introducing additional risks of centralization and complexity is key. A solution then emerged in the form of BitVM, which not only aims to meet the aforementioned requirements, but is also executable and implementable in its current form. In the white paper, researcher Robin Linus elucidates how BitVM provides a brand-new computational paradigm enabling the verification of any off-chain computation on Bitcoin without requiring changes to the network’s consensus rules. The project seeks to solve the tough trade-off between security and Turing-completeness in Bitcoin’s Layer 2 solutions, offering an optimal solution for users and developers. That is, the same level of security assurance as Bitcoin, high scalability, and the possibility for seamless migration from the base layer. “As long-term observers and builders in the Bitcoin space, the emergence of BitVM has allowed us to envision a future that elevates Bitcoin beyond its simple static value storage capability, and instead construct a robust and vibrant Layer 2 ecosystem based on Bitcoin,” stated Bitlayer cofounder Charlie Hu. A disruptive new project has arrived on the world stage to build a new Bitcoin future, adopting the BitVM technical philosophy. Welcome to Bitlayer. Bitlayer’s Mission Bitlayer is the first Layer 2 solution offering Bitcoin-equivalent security and Turing completeness. It’s also the first Layer 2 built on BitVM, aiming to be the computation layer of Bitcoin. “Bitlayer can be understood as a powerful smart contract system established on top of Bitcoin. Its promise is to provide Bitcoin with programmable decentralized computing (like Ethereum), but with a potentially cheaper, faster experience, all backed by the equivalent security guarantees provided by Bitcoin,” said Kevin He, cofounder at Bitlayer. With hundreds of millions of potential users as an addressable market, Bitlayer and the Bitcoin Layer 2 landscape is positioned to bring scalability at a previously unthinkable scale. Bitlayer’s core builders include a team of engineers hailing from Huobi, Polygon, and Polkadot, to name a few. Kevin He was responsible for building blockchain infrastructure prior to the upcoming launch of Bitlayer. He also formerly served as Huobi Group’s web3 tech head. Bitlayer vies to exist as an integral part of the formidable Bitcoin system, stating that their development, goals, and philosophies neatly complement those of the larger Bitcoin ecosystem. The project aims to construct a decentralized economy and establish a competitive edge within it, driving development atop the Bitcoin base layer network. The solutions offered by Bitlayer will not fundamentally alter Bitcoin in any way, nor will they necessitate the promotion of a Bitcoin BIP upgrade. Bitcoin should function just as it always has, allowing Bitcoin maxis to maintain their identity and vision. Building on this, Bitlayer aims to unlock and expand additional use cases, elevating Bitcoin from the status of a digital gold to a productive asset that could serve as the bedrock of the entire decentralized economy. For Bitcoin holders, value lies in capturing the increasing value created by a wealth of new decentralized applications such as NFTs, DeFi, blockchain gaming and DePIN. Is Bitlayer the Next Big Thing for Bitcoin? BitVM’s value is gaining increased recognition by developers as many teams continually work towards its implementation. Bitlayer’s core stated objective is to address the trade-off between security and Turing completeness in Bitcoin Layer 2 technology. Its design is inspired by BitVM, DLC/LN (Discreet Log Contract/Lightning Network) technical protocols, and multiple VMs (including EVM, the Ethereum Virtual Machine). The project’s tech team has abstracted three key tasks from these inspirations: Trustless entry and exit of Layer 1 assets State transitions using a Turing-complete Layer 2 virtual machine Layer 1 verification of the validity of Layer 2 state transitions The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation and Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets. This traditional approach results in users completely losing control of their assets, while the platform’s multi-signature management capabilities retain the power to impact the security of those assets. In the wake of certain extreme events, users have become dissatisfied with these types of multi-signature solutions. Models like DLC/LN that encompass two-party game scenarios offer a more promising direction. Leveraging DLC/LN technology, users could retain partial control over their assets and reliably achieve a secure escape with their assets. The verification of Layer 2 state transitions operates on a principle comparable to proving one’s innocence– an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin’s base layer for verification enables Layer 2 solutions like Bitlayer to inherit Bitcoin’s robust security measures, achieving a level of security equivalent to Bitcoin itself. The introduction of the BitVM paradigm challenges the existing notion that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network. Through integrating with BitVM, Bitlayer aspires to incentivize more users and developers in the ecosystem to participate and contribute to its development. Starting with EVM compatibility, Bitlayer can then enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites (an optimal choice for the launching of new projects and applications). Compatibility with multiple VMs results in a more excellent DX/UX. So Bitlayer plans to expand the ecosystem further, providing access to more innovative applications for Bitcoin blockchain users. Above is an outline of preliminary ideation for Bitlayer. Following the publication of the Bitlayer white paper, expect more insight into the project’s economic model design and core component design solutions. A Layer 2 state commitment challenge protocol based on BitVM, as well as bi-directional message/asset protocols based on DLC/LN, among others, are expected to make the development pipeline. Bitlayer is Making History on Bitcoin Bitcoin initially emerged and endured as an asset or “store of value”. Its open-source and decentralized nature have fostered a culture of experimentation. Unfortunately, this has also contributed to relatively sluggish development within the Bitcoin ecosystem. With the viral spread of Ordinals and a cultural shift towards “building on Bitcoin”, the protocol is reaching a significant inflection point, showing potential for an ecosystem larger than Ethereum’s. At present, it appears that the full blossoming of the Bitcoin ecosystem will take some more time, as foundational issues such as the implementation of BitVM and crosschain security are in urgent need of resolution. Bitlayer is one of the earliest community advocates for BitVM. Under its advocacy, the BitVM east community has coalesced a group of enthusiasts and researchers focused on BitVM. Continued focus has been placed on summarizing the latest developments in BitVM, disseminating the concepts and vision of BitVM’s technology, and promoting the implementation of BitVM. Bitlayer also operates as a pioneer in actualizing BitVM. Building a novel protocol based on BitVM that introduces more use cases into the Bitcoin ecosystem, thereby unlocking Bitcoin’s value, and harnessing its security, is the open future we all desire and deserve. A focus on radically expanding the reach of Bitcoin by addressing the Bitcoin-equivalent security and Turing completeness issues behind Bitcoin’s scalability challenges remains a key endeavor for the team. Expansion in the level of security available to Bitcoin Layer 2 and the applications they are capable of is of increased importance. Allowing users more access to, and usability of Bitcoin, is a critical next step. With a thriving ecosystem on Ethereum, Solana, and a number of L1 blockchain ecosystems, many question why not Bitcoin? Don’t we want the future of money, technical infrastructure, decentralized computing, applications, and networking to be built on the first, largest, most decentralized and most secure blockchain ecosystem? Shouldn’t we seek to secure the future of Bitcoin when block rewards predictably and inevitably diminish? Will we not want to harness fees from flourishing Layer 2 ecosystems, incentivizing miners to continue to secure the network? Bitcoin has been left in the corner so far. But things might soon change. Satoshi Nakamoto once predicted: “In a few decades when the reward gets too small, the transaction fee will become the main compensation for nodes.” Now, at the historical juncture of Bitcoin’s fourth halving, the explosive growth of the Bitcoin ecosystem resonates with his foresight. Bitlayer contends to become the computational layer of Bitcoin, building a sustainable and vibrant ecosystem, unlocking the full potential of Bitcoin and cultivating a thriving digital economy.","s":"Bitlayer: Amplifying Bitcoin","u":"/blog/Bitlayer: Amplifying Bitcoin","h":"","p":1},{"i":5,"t":"The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions. https://api.btrscan.com/scan/api ?module=block &action=getblockreward &blockNum=426364 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description blockno the integer block number to check block rewards for eg. 12697906 Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": { \"blockNumber\": \"426364\", \"timeStamp\": \"1713555721\", \"blockMiner\": \"0x12a95f3c32e400129c7970f5d490152ad24dd869\", \"blockReward\": \"0.000000000000000000\" } }","s":"Get Block Rewards by BlockNo","u":"/docs/Bitlayer Scan APIs/Blocks","h":"#get-block-rewards-by-blockno","p":3},{"i":7,"t":"[Parameters] timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: 'before' or 'after' https://api.btrscan.com/scan/api ?module=block &action=getblocknobytime ×tamp=1715789611 &closest=before Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description timestamp the integer representing the Unix timestamp in seconds closest the closest available block to the provided timestamp, either before or after Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": \"1170994\", }","s":"Get Block Number by Timestamp","u":"/docs/Bitlayer Scan APIs/Blocks","h":"#get-block-number-by-timestamp","p":3},{"i":10,"t":"Returns the event logs from an address, with optional filtering by block range. https://api.btrscan.com/scan/api ?module=logs &action=getLogs &address=0x42857b399adba34b75d6bedcacde75c7784e87c6 &fromBlock=585180 &toBlock=585189 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check for logs startblock the integer block number to start searching for transactions toBlock the integer block number to stop searching for transactions Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": [ { \"address\": \"0x42857b399adba34b75d6bedcacde75c7784e87c6\", \"topics\": [ \"0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d\", \"0xfabf3909f1b538697092793867e2118600b63b14fa641bb49f83a02b18d47f0d\", \"0x0000000000000000000000003528c7b21cd34fe32cdda2806cb2e18a4659e8c1\", \"0x0000000000000000000000005798c0c8cc396da77aaa68c0722b70926f98946c\" ], \"data\": \"0x\", \"blockNumber\": \"0x8ede2\", \"blockHash\": \"0xfd7f02f18b6c82c765c57b9817438c93a80238b71942d58c7e3219c9a688b5c1\", \"timeStamp\": \"0x662a0e3b\", \"gasPrice\": \"0x59682f07\", \"gasUsed\": \"0xc8e1\", \"logIndex\": \"0x0\", \"transactionHash\": \"0xc914f58fafbad9ba2197cfb706c1e93ab20860de4d3fd17c8b0ae396dc8862c1\", \"transactionIndex\": \"0x0\" } ] }","s":"Get Event Logs by Address","u":"/docs/Bitlayer Scan APIs/Logs","h":"#get-event-logs-by-address","p":8},{"i":12,"t":"Returns the event logs from an address, filtered by topics and block range. https://api.btrscan.com/scan/api ?module=logs &action=logs &address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1 &fromBlock=1191962 &toBlock=1191964 &topic0=0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 &topic0_1_opr=and &topic1=0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37 Usage: For a single topic, specify the topic number such as topic0, topic1, topic2, topic3 For multiple topics, specify the topic numbers and topic operator either and or or such as belowtopic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2) topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2) topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3) Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check for logs fromBlock the integer block number to start searching for transactions toBlock the integer block number to start searching for transactions topic the topic numbers to search for limited totopic0, topic1, topic2, topic3 topicOperator the topic operator when multiple topic combinations are used limited to and or or Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": [ { \"address\": \"0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1\", \"topics\": [ \"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\", \"0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37\", \"0x0000000000000000000000006c85a831a945ba9b565d500a3a9e107a0aad868e\" ], \"data\": \"0x000000000000000000000000000000000000027716b6a0adc2d677c080000000\", \"blockNumber\": \"0x12301b\", \"blockHash\": \"0x0a6e405fac20bba7395f6f4363a4b18be6838d2b7c73ef6e7a1abca01de82951\", \"timeStamp\": \"0x6645d4e6\", \"gasPrice\": \"0x5f5e107\", \"gasUsed\": \"0xb507\", \"logIndex\": \"0x0\", \"transactionHash\": \"0x7ba24f7b5bb5dcfdfeb4bacf587e0a8e63c7d7c39b9a5d05a0337c232a8b230d\", \"transactionIndex\": \"0x0\" } ] }","s":"Get Event Logs by Address filtered by Topics","u":"/docs/Bitlayer Scan APIs/Logs","h":"#get-event-logs-by-address-filtered-by-topics","p":8},{"i":16,"t":"The status field returns 0 for failed transactions,1 for successful transactions and 2 for pending transactions. https://api.btrscan.com/scan/api ?module=transaction &action=gettxreceiptstatus &txhash=0x18498177bda7bac2d36cf43b1d5ff682d533d7114a9dd8d4b626ce6f96aa5013 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description txhash the string representing the transaction hash to check the execution status Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": { \"status\": \"1\" } }","s":"Check Transaction Receipt Status","u":"/docs/Bitlayer Scan APIs/Transactions","h":"#check-transaction-receipt-status","p":14},{"i":19,"t":"Bitlayer: A Bitcoin Computational Layer Architecture Based on the BitVM Paradigm","s":"Technical White Paper","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#technical-white-paper","p":17},{"i":21,"t":"Bitlayer has revolutionized the verification process for Layer 2 transactions using optimistic execution, while keeping the Bitcoin protocol intact. Its architecture comprises transaction processing, verification, and asset bridging components. Transaction processing involves a sequencer and a Layered Virtual Machine (LVM), optimizing transaction handling and computational efficiency. Transaction verification, managed by provers and challengers, ensures transaction validity and compliance with network rules. They collaborate to complete the entire process from Layer 2 transaction handling to Layer 1 confirmation, maintaining transaction security and integrity throughout the process. Bitlayer's assets bridge components further enhance its capabilities by enabling interoperability between Layer 2 and Layer 1 networks, facilitating secure asset transfer across blockchain layers.","s":"Introduction","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#introduction","p":17},{"i":23,"t":"Transaction Processing, as illustrated in the figure above, involves the sequencer and Layered Virtual Machine. These components are responsible for the entire transaction handling, starting from transaction acceptance to executing the output. Sequencer: Like other Layer 2 solutions, the sequencer in Bitlayer is responsible for collecting cached transactions and sorting them, serving as the entry point for transactions in Bitlayer. Layered Virtual Machine (LVM): The LVM is the computing component of Bitlayer, responsible for executing smart contracts and generating the latest states and zero-knowledge proof. Challengers then use this proof to challenge the execution results.","s":"1. Transaction Processing","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#1-transaction-processing","p":17},{"i":25,"t":"In Bitlayer, transaction verification is achieved by a zero-knowledge-based optimistic mechanism between the prover and challenger. Prover: The Prover is responsible for submitting Layer 2 transactions and states of execution to the Layer 1 chain as described above. It also reveals zero-knowledge proofs on the chain when getting challenged. Challenger: The Challenger is responsible for verifying the execution results submitted by the Prover through states of execution and zero-knowledge proof verification. If malicious behavior is detected, the Challenger initiates a challenge process to generate fraud proofs including invalid zero-knowledge proofs and submits them to the Layer 1 chain.","s":"2. Transaction Verification","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#2-transaction-verification","p":17},{"i":27,"t":"The Bridge acts as a crucial component in Bitlayer's infrastructure, facilitating the seamless movement of assets between Layer 2 and Layer 1. Its primary responsibility is to ensure the secure transfer of user assets through an innovative combination of OP-DLC and BitVM.","s":"3. Asset Bridge","u":"/docs/BitlayerArchitecture/BitlayerDesign","h":"#3-asset-bridge","p":17},{"i":29,"t":"The Bitlayer asset bridge provides user-controlled decentralized custody, as well as a high-liquidity Bitcoin Layer 2 cross-chain solution based on BitVM+DLC technology. Bitlayer offers a dual-channel two-way peg bridge that not only meets the self-controlled asset needs of Layer 1 users for BTC deposit and withdrawal, but also satisfies the smooth withdrawal requirements of native Layer 2 users. The core components of the asset bridge consist of BitVM Federation nodes, DLC components, Layer 2 smart contracts, and Relayers:","s":"Bitlayer's Transaction Lifecycle","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"","p":28},{"i":31,"t":"The nodes within the BitVM Federation act as a verification network to ensure the secure execution of Layer 2 transactions and the stable operation of the Bitlayer bridge. When Layer 2 begins, validated organizations can join the federation by depositing a specific amount of BTC. As the Layer 2 network progresses, the federation dynamically adjusts and increases its membership to boost security and decentralization. Within the cross-chain bridge, the BitVM Federation collectively manages decentralized asset custody for the BitVM bridge channel, attaining a 1 of (N) security level, meaning only one honest node is needed for network integrity. Moreover, the BitVM Federation functions as an oracle network for the OP-DCL bridge channel, requiring only some members to agree ((t) of (N)) to produce a legitimate oracle signature.","s":"1. BitVM Federation","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#1-bitvm-federation","p":28},{"i":33,"t":"Using DLC for deposits and withdrawals ensures users' autonomous control over their assets but introduces restrictions on the BTC amount for deposits and withdrawals. Because DLC requires predefined CETs to determine the withdrawal amount, supporting fine-grained CETs is necessary to meet user-friendly withdrawal requirements. The first function of the DLC component is to facilitate the creation of funding transactions, where the assets are initially output to a 2 of 2 multi-sig output, with the parties involved being the user and the BitVM Federation ((N) of (N)) address. The second function is the CET manager, which pre-creates DLCs supporting multiple future withdrawal requirements, thus realizing a user-friendly cross-chain solution.","s":"2. DLC Components","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#2-dlc-components","p":28},{"i":35,"t":"The bridge and light client are two core smart contracts on Layer 2 that implement the trustless bridge. The bridge smart contract manages the issuance and destruction of BTC assets on Layer 2. The light client contract maintains Bitcoin block header information on Layer 2, and Bitlayer uses ZKP-based Bitcoin state proofs to update and maintain the block header information. The light client contract also provides a Verify function to validate Bitcoin transactions, by submitting a Simplified Payment Verification (SPV) proof of the transaction to the light client contract to verify the legitimacy of the Bitcoin transaction. The bridge contract calls the light client's Verify function to validate the legitimacy of users' locking transactions on Bitcoin, ensuring that all BTC assets on Layer 2 are issued in a trustless manner.","s":"3. Layer 2 Smart Contracts","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#3-layer-2-smart-contracts","p":28},{"i":37,"t":"The Relayer plays a critical, trustless role in the Bitlayer asset bridge, primarily tasked with monitoring both Layer 1 and Layer 2 blockchains and updating the state of light client data on the Layer 2 blockchain. When the Bitcoin network commits a new block, the relayer submits a state update transaction for the light client, accompanied by a zero-knowledge proof. Whenever there is a bridge transaction, the relayer forwards it to a smart contract (peg-in) or a BitVM Federation node (peg-out) for further processing. The inclusion of this permissionless relayer system ensures the continuous operation of the asset bridge; the bridge remains functional as long as at least one relayer is operational.","s":"4. Relayers","u":"/docs/BitlayerArchitecture/TransactionLifecycle","h":"#4-relayers","p":28},{"i":39,"t":"Layered Virtual Machine (LVM) technology represents a significant advancement in terms of smart contract execution. This innovative approach enables the support of various frontend smart contract types, such as EVM/CairoVM, and backend zero-knowledge proof verifiers, including ZK-STARKs and ZK-SNARKs (Groth16, PLONK, etc.), while maintaining robust security measures and enhancing computational flexibility. Supporting multiple frontend smart contract types can easily attract developers from various blockchain ecosystems. For instance, EVM is a widely used smart contract platform with its own bytecode and execution environment. By integrating support for EVM within the LVM framework, developers can leverage existing EVM-based smart contracts seamlessly while also benefiting from enhanced execution capabilities provided by the layered architecture. On the backend side, supporting various zero-knowledge proof generators provides more optimization possibilities for the disputing process without compromising existing functionalities. In the future, when more succinct and efficient zero-knowledge proof systems emerge, Bitlayer's flexibility will allow for quick adaptation essential for keeping pace with evolving blockchain standards, emerging technologies, and changing user requirements.","s":"Layered Virtual Machine (LVM)","u":"/docs/BitlayerArchitecture/LVM","h":"","p":38},{"i":42,"t":"Bitlayer's native gas token is BTC. However, on Bitlayer, BTC has an 18-digit precision, which is different from the 8-digit precision of BTC on Bitcoin. This is done to maintain consistency with the default decimal of tokens of EVM-compatible chains. On the Bitlayer, there is a minimum priority fee requirement. Developers can use eth_gasPrice or eth_maxPriorityFeePerGas to estimate the gas price required for a transaction in real time. For the Mainnet/Testnet, a minimum tip of 0.1 gwei is required. Usually, 0.11 gwei gasPrice for legacy transactions, 0.1 gwei maxPriorityFeePerGas (and set enough amount to maxFeePerGas) for EIP1559 transactions SHOULD BE enough. For Dapp developers, it's recommended that setting the maxPriorityFeePerGas by code before calling apis to send the transaction, rather then leave it empty (filled by the default strategy of wallet (e.g. Metamask) or SDK).","s":"Important: about gas price","u":"/docs/BitlayerNetwork/AboutGas","h":"#important-about-gas-price","p":40},{"i":44,"t":"There are multiple way to get BTC gas on Bitlayer: Visit https://www.bitlayer.org/bridge Visit https://www.bitlayer.org/gas-swap","s":"Get BTC Gas","u":"/docs/BitlayerNetwork/AboutGas","h":"#get-btc-gas","p":40},{"i":46,"t":"Bridges play a crucial role in connecting Bitlayer with other blockchain networks, enabling seamless interoperability and cross-chain asset transfers. Through bridges, Bitlayer users and developers can leverage the power of multiple blockchain ecosystems. Bitlayer is designed to support various bridge implementations to facilitate communication between different blockchains. This section provides an overview of the available bridges in the Bitlayer ecosystem.","s":"Bridges","u":"/docs/BitlayerNetwork/Bridges","h":"","p":45},{"i":48,"t":"When integrating Bitlayer with Bitcoin or Bitcoin-compatible chains, it is recommended to utilize bridge solutions such as UniSats, OKX, or Xverse. These bridges enable the transfer of assets between Bitlayer's Layer 2 solution and the Bitcoin blockchain. By bridging the gap between Bitlayer and Bitcoin, users can enjoy the benefits of Bitlayer's EVM compatibility while leveraging the security and liquidity of the Bitcoin network.","s":"Bitlayer to Blockchains","u":"/docs/BitlayerNetwork/Bridges","h":"#bitlayer-to-blockchains","p":45},{"i":50,"t":"Mainnet-V1: The Bitlayer team is working with multiple MPC custody platforms, including Coinbase and Sinohope (HK.1611), to secure the assets.","s":"BTC to Bitlayer","u":"/docs/BitlayerNetwork/Bridges","h":"#btc-to-bitlayer","p":45},{"i":52,"t":"The Bitlayer team builds the trustless bridge together with the Polyhedra team.","s":"EVM to Bitlayer","u":"/docs/BitlayerNetwork/Bridges","h":"#evm-to-bitlayer","p":45},{"i":54,"t":"Bitlayer also supports bridges that connect with centralized exchanges (CEXs). With these bridges, users can withdraw their assets from centralized exchanges directly to Bitlayer's ETH-compatible wallet address. This allows users to seamlessly transfer funds from centralized exchanges to Bitlayer and leverage the Layer 2 capabilities provided by Bitlayer. By leveraging bridges, Bitlayer expands its reach and connectivity, enabling users to interact with a wide range of blockchain networks and centralized exchanges. Developers can explore and integrate these bridges into their applications, providing users with enhanced flexibility and access to various blockchain ecosystems.","s":"Bitlayer to CEXs (Centralized Exchanges)","u":"/docs/BitlayerNetwork/Bridges","h":"#bitlayer-to-cexs-centralized-exchanges","p":45},{"i":57,"t":"Staking : 0x000000000000000000000000000000000000f000 BTR : 0x0E4cF4Affdb72b39Ea91fA726D291781cBd020bF Deterministic Deployment Proxy : 0x4e59b44847b379578588920ca78fbf26c0b4956c Vault : 0xDDf655d9afd934b4851873ba55A678dc82282D4a Multicall : 0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234 WBTC : 0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F","s":"Contract Addresses (Mainnet)","u":"/docs/BitlayerNetwork/Contracts","h":"#contract-addresses-mainnet","p":55},{"i":59,"t":"Staking : 0x000000000000000000000000000000000000F000 BTR : 0xf4340CF5F3891A3827713b33f769b501A0b5b122 LockingContract : 0x845D2b001934a99d072EF409b719cffE468ba7e3 Vault : 0x7765992cAE0Cd7DC02e2B5857a375b0B090933b5 Multicall_v1 : 0x688f1Dac2a07BDCE6e7781Ab1177880fC8d13AE3 WBTC : 0x3e57d6946f893314324C975AA9CEBBdF3232967E","s":"Contract Addresses (Testnet)","u":"/docs/BitlayerNetwork/Contracts","h":"#contract-addresses-testnet","p":55},{"i":62,"t":"Network URL Mainnet https://api.btrscan.com/scan/api Testnet https://api-testnet.bitlayer.org/scan/api","s":"Endpoint URLs","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#endpoint-urls","p":60},{"i":64,"t":"Returns the BTC balance of a given address. https://api.btrscan.com/scan/api ?module=account &action=balance &address=0xe7564c607c663e5784031229570cbd47290dd87f Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check balance Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": \"24160814822445819116\" }","s":"Get BTC Balance for a single address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-btc-balance-for-a-single-address","p":60},{"i":66,"t":"Returns the balance of the accounts from a list of addresses. https://api.btrscan.com/scan/api ?module=account &action=balancemulti &address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check balance,separated by , up to 20 addresses in a single batch Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"account\": \"0xe7564c607c663e5784031229570cbd47290dd87f\", \"balance\": \"24160814822445819116\" }, { \"account\": \"0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d\", \"balance\": \"7152743425798252551\" } ] }","s":"Get BTC Balance for multiple addresses in a single call","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-btc-balance-for-multiple-addresses-in-a-single-call","p":60},{"i":68,"t":"Returns the list of transactions performed by an address, with optional pagination. [Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results tip Returns up to a maximum of the last 10000 transactions only https://api.btrscan.com/scan/api ?module=account &action=txlist &address=0xe7564c607c663e5784031229570cbd47290dd87f &startblock=0 &endblock=99999999 &sort=asc Try this endpoint in your browser 🔗 or tip To get paginated results use page= and offset= https://api.btrscan.com/scan/api ?module=account &action=txlist &address=0xe7564c607c663e5784031229570cbd47290dd87f &startblock=0 &endblock=99999999 &page=1 &offset=10 &sort=asc Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check balance startblock the integer block number to start searching for transactions endblock the integer block number to stop searching for transactions page the integer page number, if pagination is enabled offset the number of transactions displayed per page sort the sorting preference, use asc to sort by ascending and desc to sort by descending Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"911734\", \"timeStamp\": \"1715011831\", \"hash\": \"0x38a33c9dedf320432ab4bbfdaf5bec13fb156d81bfa96bbc853b387755f37291\", \"nonce\": \"0\", \"transactionIndex\": \"0\", \"value\": \"99800000000000000\", \"gas\": \"45358\", \"gasPrice\": \"102553563\", \"txreceipt_status\": \"1\", \"gasUsed\": \"44978\", \"methodId\": \"0xd0e30db0\", \"functionName\": \"deposit\" }, { \"blockNumber\": \"911882\", \"timeStamp\": \"1715012275\", \"hash\": \"0x50b60e5046fe4d13413737b7e886906d7511ed1fe78ba5aa4b1978145f0309da\", \"nonce\": \"1\", \"transactionIndex\": \"0\", \"value\": \"0\", \"gas\": \"140550\", \"gasPrice\": \"102581210\", \"txreceipt_status\": \"1\", \"gasUsed\": \"46143\", \"methodId\": \"0x095ea7b3\", \"functionName\": \"approve\" } ] }","s":"Get a list of 'Normal' Transactions By Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-normal-transactions-by-address","p":60},{"i":70,"t":"Returns the list of internal transactions performed by an address, with optional pagination. tip Returns up to a maximum of the last 10000 transactions only [Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results https://api.btrscan.com/scan/api ?module=account &action=txlistinternal &address=0x039bac1779933ee52abf3eff25188c4d673931ac &startblock=0 &endblock=2702578 &sort=asc Try this endpoint in your browser 🔗 or tip To get paginated results use page= and offset= https://api.btrscan.com/scan/api ?module=account &action=txlistinternal &address=0x039bac1779933ee52abf3eff25188c4d673931ac &startblock=0 &endblock=2702578 &page=1 &offset=10 &sort=asc Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the string representing the address to check balance startblock the integer block number to start searching for transactions endblock the integer block number to stop searching for transactions page the integer page number, if pagination is enabled offset the number of transactions displayed per page sort the sorting preference, use asc to sort by ascending and desc to sort by descending Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"2063492\", \"timeStamp\": \"1713324960\", \"hash\": \"0xb633b52fa2eaa2f817aa721db500766458e6b794b872f911d8f72d20c1356377\", \"transactionIndex\": \"0\", \"from\": \"0x039bac1779933ee52abf3eff25188c4d673931ac\", \"to\": \"0x0000000000000000000000000000000000000001\", \"value\": \"0\", \"gas\": \"77311\", \"txreceipt_status\": \"1\", \"gasUsed\": \"3000 }, { \"blockNumber\": \"2063508\", \"timeStamp\": \"1713325008\", \"hash\": \"0x9b169e06404b28fec2f1d20eeecc485ed8d11c0f792d872dfc78e29e05fe3a2f\", \"transactionIndex\": \"1\", \"from\": \"0x039bac1779933ee52abf3eff25188c4d673931ac\", \"to\": \"0x0000000000000000000000000000000000000001\", \"value\": \"0\", \"gas\": \"77299\", \"txreceipt_status\": \"1\", \"gasUsed\": \"3000\" }, { \"blockNumber\": \"2063521\", \"timeStamp\": \"1713325047\", \"hash\": \"0xd9e8a7407f4993d85ba80ddc05a0bcf2e45c5a70781fae58d508df45bf7bf846\", \"transactionIndex\": \"0\", \"from\": \"0x039bac1779933ee52abf3eff25188c4d673931ac\", \"to\": \"0x0000000000000000000000000000000000000001\", \"value\": \"0\", \"gas\": \"77299\", \"txreceipt_status\": \"1\", \"gasUsed\": \"3000\" } ] }","s":"Get a list of 'Internal' Transactions By Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-internal-transactions-by-address","p":60},{"i":72,"t":"Returns the list of internal transactions performed within a transaction. tip Returns up to a maximum of the last 10000 transactions only https://api.btrscan.com/scan/api ?module=account &action=txlistinternal &txhash=0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description txhash the string representing the transaction hash to check for internal transactions Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"2928943\", \"timeStamp\": \"1715921315\", \"hash\": \"0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04\", \"transactionIndex\": \"0\", \"from\": \"0x9386a8135c6a56103f14a1ed655ff7467b3b86eb\", \"to\": \"0x039bac1779933ee52abf3eff25188c4d673931ac\", \"value\": \"0\", \"gas\": \"90214\", \"txreceipt_status\": \"1\", \"input\": \"0x5eddd15700000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000041e7d4cad89769c747ecbfaab89239b64facf1be59ec2132f68d4c5ddd6e6834570b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b1c00000000000000000000000000000000000000000000000000000000000000\", \"gasUsed\": \"36357\" }, { \"blockNumber\": \"2928943\", \"timeStamp\": \"1715921315\", \"hash\": \"0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04\", \"transactionIndex\": \"0\", \"from\": \"0x039bac1779933ee52abf3eff25188c4d673931ac\", \"to\": \"0x0000000000000000000000000000000000000001\", \"value\": \"0\", \"gas\": \"90214\", \"txreceipt_status\": \"1\", \"input\": \"0x0000000000000000000000009386a8135c6a56103f14a1ed655ff7467b3b86eb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc0b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b\", \"gasUsed\": \"3000\" } ] }","s":"Get \"Internal Transactions\" by Transaction Hash","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-internal-transactions-by-transaction-hash","p":60},{"i":74,"t":"Returns the list of internal transactions performed within a block range, with optional pagination. tip Returns up to a maximum of the last 10000 transactions only https://api.btrscan.com/scan/api ?module=account &action=txlistinternal &startblock=0 &endblock=2928944 &page=1 &offset=10 &sort=asc Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description startblock the integer block number to start searching for transactions endblock the integer block number to stop searching for transactions page the integer page number, if pagination is enabled offset the number of transactions displayed per page sort the sorting preference, use asc to sort by ascending and desc to sort by descending Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"29\", \"timeStamp\": \"1707134551\", \"hash\": \"0x17b0cd2caaff5c8cf1ae1c0398b867dc9c5354caa166532b39ae6eb9dfddd626\", \"transactionIndex\": \"0\", \"from\": \"0x2e46771cff3636a42f363826ff8a94d3a738e075\", \"to\": \"0xf4340cf5f3891a3827713b33f769b501a0b5b122\", \"value\": \"0\", \"gas\": \"517789\", \"txreceipt_status\": \"1\", \"input\": \"0x60806040523480156200001157600080fd5b5060405162000a0c38038062000a0c8339810160408190526200003491620002d4565b6b033b2e3c9fd0803ce80000006002558051825160009114620000915760405162461bcd60e51b815260206004820152601060248201526f098cadccee8d0409cdee8409ac2e8c6d60831b60448201526064015b60405180910390fd5b60005b83518110156200019557828181518110620000b357620000b3620003b2565b602002602001015182620000c89190620003de565b91506002548211156200011e5760405162461bcd60e51b815260206004820152601460248201527f546f74616c537570706c79204f766572466c6f77000000000000000000000000604482015260640162000088565b828181518110620001335762000133620003b2565b6020026020010151600080868481518110620001535762000153620003b2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200018c90620003fa565b91505062000094565b508060025414620001e95760405162461bcd60e51b815260206004820152601e60248201527f546f74616c537570706c79206973206e6f742044697374726962757465640000604482015260640162000088565b50505062000416565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620002335762000233620001f2565b604052919050565b60006001600160401b03821115620002575762000257620001f2565b5060051b60200190565b600082601f8301126200027357600080fd5b815160206200028c62000286836200023b565b62000208565b82815260059290921b84018101918181019086841115620002ac57600080fd5b8286015b84811015620002c95780518352918301918301620002b0565b509695505050505050565b60008060408385031215620002e857600080fd5b82516001600160401b03808211156200030057600080fd5b818501915085601f8301126200031557600080fd5b815160206200032862000286836200023b565b82815260059290921b840181019181810190898411156200034857600080fd5b948201945b838610156200037f5785516001600160a01b03811681146200036f5760008081fd5b825294820194908201906200034d565b918801519196509093505050808211156200039957600080fd5b50620003a88582860162000261565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620003f457620003f4620003c8565b92915050565b6000600182016200040f576200040f620003c8565b5060010190565b6105e680620004266000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461012357806370a082311461013d57806395d89b4114610166578063a9059cbb14610188578063dd62ed3e1461019b57600080fd5b806306fdde0314610098578063095ea7b3146100d657806318160ddd146100f957806323b872dd14610110575b600080fd5b6100c060405180604001604052806009815260200168212921902a37b5b2b760b91b81525081565b6040516100cd9190610456565b60405180910390f35b6100e96100e43660046104c0565b6101d4565b60405190151581526020016100cd565b61010260025481565b6040519081526020016100cd565b6100e961011e3660046104ea565b610241565b61012b601281565b60405160ff90911681526020016100cd565b61010261014b366004610526565b6001600160a01b031660009081526020819052604090205490565b6100c06040518060400160405280600381526020016242524360e81b81525081565b6100e96101963660046104c0565b610391565b6101026101a9366004610541565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061022f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260208190526040812054821180159061028c57506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b80156102985750600082115b15610386576001600160a01b038316600090815260208190526040812080548492906102c590849061058a565b90915550506001600160a01b038416600090815260208190526040812080548492906102f290849061059d565b90915550506001600160a01b03841660009081526001602090815260408083203384529091528120805484929061032a90849061059d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161037691815260200190565b60405180910390a350600161038a565b5060005b9392505050565b3360009081526020819052604081205482118015906103b05750600082115b1561044e5733600090815260208190526040812080548492906103d490849061059d565b90915550506001600160a01b0383166000908152602081905260408120805484929061040190849061058a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350600161023b565b50600061023b565b600060208083528351808285015260005b8181101561048357858101830151858201604001528201610467565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104bb57600080fd5b919050565b600080604083850312156104d357600080fd5b6104dc836104a4565b946020939093013593505050565b6000806000606084860312156104ff57600080fd5b610508846104a4565b9250610516602085016104a4565b9150604084013590509250925092565b60006020828403121561053857600080fd5b61038a826104a4565b6000806040838503121561055457600080fd5b61055d836104a4565b915061056b602084016104a4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561023b5761023b610574565b8181038181111561023b5761023b61057456fea264697066735822122054ce9967d7d4eba6cafd665a64e31a65317e0cd391ee8f3adcd1a3194baebc2364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075000000000000000000000000845d2b001934a99d072ef409b719cffe468ba7e300000000000000000000000026fc26213675827d863607902c8dbc7f42f1a2b70000000000000000000000007765992cae0cd7dc02e2b5857a375b0b090933b500000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000007c13bc4b2c133c56000000000000000000000000000000000000000000000000f8277896582678ac00000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000001743b34e18439b502000000\", \"gasUsed\": \"417256\" }, { \"blockNumber\": \"33\", \"timeStamp\": \"1707134563\", \"hash\": \"0x8001fd5a7fbeca309b7c1edd81ee68008cdbf86247fcf2b5a5522f3af65e691e\", \"transactionIndex\": \"0\", \"from\": \"0x2e46771cff3636a42f363826ff8a94d3a738e075\", \"to\": \"0x845d2b001934a99d072ef409b719cffe468ba7e3\", \"value\": \"0\", \"gas\": \"785842\", \"txreceipt_status\": \"1\", \"input\": \"0x60806040523480156200001157600080fd5b5060405162000e7438038062000e748339810160408190526200003491620004bb565b8451865114801562000047575083518651145b801562000055575082518651145b620000a75760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420696e707574206c656e67746800000000000000000000000060448201526064015b60405180910390fd5b6000805b87518110156200026c576000878281518110620000cc57620000cc6200058f565b602002602001015111620001325760405162461bcd60e51b815260206004820152602660248201527f546f74616c20746f6b656e73206d7573742062652067726561746572207468616044820152656e207a65726f60d01b60648201526084016200009e565b6040518060a001604052808883815181106200015257620001526200058f565b60200260200101518152602001600081526020018783815181106200017b576200017b6200058f565b602002602001015181526020018683815181106200019d576200019d6200058f565b6020026020010151815260200160011515815250600360008a8481518110620001ca57620001ca6200058f565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905586518790829081106200024057620002406200058f565b602002602001015182620002559190620005bb565b9150806200026381620005d7565b915050620000ab565b506000839055600180546001600160a01b0319166001600160a01b038416908117909155426002556040516370a0823160e01b81523060048201526370a0823190602401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620005f3565b8114620003445760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e672042616c616e6365206e6f74204d617463680000000000000060448201526064016200009e565b505050505050506200060d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000392576200039262000351565b604052919050565b60006001600160401b03821115620003b657620003b662000351565b5060051b60200190565b80516001600160a01b0381168114620003d857600080fd5b919050565b600082601f830112620003ef57600080fd5b815160206200040862000402836200039a565b62000367565b82815260059290921b840181019181810190868411156200042857600080fd5b8286015b848110156200044e576200044081620003c0565b83529183019183016200042c565b509695505050505050565b600082601f8301126200046b57600080fd5b815160206200047e62000402836200039a565b82815260059290921b840181019181810190868411156200049e57600080fd5b8286015b848110156200044e5780518352918301918301620004a2565b60008060008060008060c08789031215620004d557600080fd5b86516001600160401b0380821115620004ed57600080fd5b620004fb8a838b01620003dd565b975060208901519150808211156200051257600080fd5b620005208a838b0162000459565b965060408901519150808211156200053757600080fd5b620005458a838b0162000459565b955060608901519150808211156200055c57600080fd5b506200056b89828a0162000459565b935050608087015191506200058360a08801620003c0565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620005d157620005d1620005a5565b92915050565b600060018201620005ec57620005ec620005a5565b5060010190565b6000602082840312156200060657600080fd5b5051919050565b610857806200061d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a3fe79501161005b578063a3fe7950146100d3578063dc070657146100e6578063e6fd48bc146100f9578063fdb20ccb1461010257600080fd5b80630faf4baa146100825780631d31fac0146100b25780634e71d92d146100c9575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bb60005481565b6040519081526020016100a9565b6100d161016d565b005b6100bb6100e1366004610706565b61043b565b6100d16100f4366004610706565b610513565b6100bb60025481565b610143610110366004610706565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016100a9565b336000908152600360205260409020600481015460ff166101a95760405162461bcd60e51b81526004016101a090610736565b60405180910390fd5b60006101b433610657565b9050816002015481116102095760405162461bcd60e51b815260206004820152601e60248201527f436c69666620706572696f6420686173206e6f7420656e64656420796574000060448201526064016101a0565b60006102143361043b565b905060008360010154826102289190610781565b90506000811161027a5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520666f722072656c656173650060448201526064016101a0565b8084600101600082825461028e919061079a565b90915550506001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff91906107ad565b8111156103455760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016101a0565b83546001850154111561038a5760405162461bcd60e51b815260206004820152600d60248201526c15995cdd1a5b99c8195b991959609a1b60448201526064016101a0565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff91906107c6565b5060405181815233907fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931799060200160405180910390a250505050565b6001600160a01b0381166000908152600360208181526040808420815160a0810183528154815260018201549381019390935260028101549183019190915291820154606082015260049091015460ff161515608082018190526104b15760405162461bcd60e51b81526004016101a090610736565b60006104bc84610657565b90506000826040015182116104d657506000949350505050565b60008360400151836104e89190610781565b905083606001518185600001516104ff91906107e8565b61050991906107ff565b9695505050505050565b336000908152600360205260409020600481015460ff166105465760405162461bcd60e51b81526004016101a090610736565b6001600160a01b03821660009081526003602052604090206004015460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f4e657742656e656669636961727920697320416374697665000000000000000060448201526064016101a0565b6001600160a01b03821660008181526003602081905260408083208554815560018087015481830155600280880154818401558488015483860155600480890154938101805460ff909516151560ff19958616179055338088528588208881559384018890559183018790559482018690559301805490911690555190917f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d91a35050565b6002546000904290829061066b9083610781565b9050600080548261067c91906107ff565b6001600160a01b038616600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201849052918201546060820181905260049092015460ff16151560808201529293506106e3919061079a565b82106106fd5780604001518160600151610509919061079a565b50949350505050565b60006020828403121561071857600080fd5b81356001600160a01b038116811461072f57600080fd5b9392505050565b6020808252818101527f4e6f206163746976652076657374696e67207363686564756c6520666f756e64604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107945761079461076b565b92915050565b808201808211156107945761079461076b565b6000602082840312156107bf57600080fd5b5051919050565b6000602082840312156107d857600080fd5b8151801515811461072f57600080fd5b80820281158282048414176107945761079461076b565b60008261081c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122072316cc586c2a8c967295ba7c6e33bc7890cf771f04ae131a2043a542556b2b264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000015180000000000000000000000000f4340cf5f3891a3827713b33f769b501a0b5b1220000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a17104869c50271fe81042c81beb3e5a694e605d000000000000000000000000b0d7b4d930f302018ee1d7caff22b0819b4d59e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000024\", \"gasUsed\": \"665332\" }, ] }","s":"Get \"Internal Transactions\" by Block Range","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-internal-transactions-by-block-range","p":60},{"i":76,"t":"Returns the list of ERC-20 tokens transferred by an address, with optional filtering by token contract. [Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results https://api.btrscan.com/scan/api ?module=account &action=tokentx &address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec &startblock=0 &endblock=999999999 &sort=asc Try this endpoint in your browser 🔗 or https://api.btrscan.com/scan/api ?module=account &action=tokentx &contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2 &page=1 &offset=100 &sort=asc Try this endpoint in your browser 🔗 or https://api.btrscan.com/scan/api ?module=account &action=tokentx &contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2 &address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec &page=1 &offset=100 &sort=asc Try this endpoint in your browser 🔗 Usage: ERC-20 transfers from an address, specify the address parameter ERC-20 transfers from a contract address, specify the contract address parameter ERC-20 transfers from an address filtered by a token contract, specify both address and contract address parameters. Request Response Query Parameters Parameter Description address the string representing the address to check balance contractaddress the string representing the token contract address to check for balance startblock the integer block number to start searching for transactions endblock the integer block number to stop searching for transactions page the integer page number, if pagination is enabled offset the number of transactions displayed per page sort the sorting preference, use asc to sort by ascending and desc to sort by descending Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"549641\", \"timeStamp\": \"1713925552\", \"hash\": \"0x8c61a31425cece813e512578358aaff625b5fc25a6a1c59380cdddd5278a9ea2\", \"nonce\": \"1\", \"blockHash\": \"0x1b3a6f75b3e44af80a846a895778317fe31edc1c84cb9bfb08898f429ea4ca03\", \"from\": \"0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\", \"contractAddress\": \"0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\", \"to\": \"0x25ab3efd52e6470681ce037cd546dc60726948d3\", \"value\": \"2107000\", \"tokenName\": \"Tether USD\", \"tokenSymbol\": \"USDT\", \"transactionIndex\": \"0\", \"gas\": \"107806\", \"gasPrice\": \"125000009\", \"gasUsed\": \"101193\", \"cumulativeGasUsed\": \"0\", \"input\": \"deprecated\", \"confirmations\": \"8236\" }, { \"blockNumber\": \"492201\", \"timeStamp\": \"1713753232\", \"hash\": \"0x172f945ea91da4e92979c2a85388151f211c1ac40aa3e21f61233bdf6c8c0232\", \"nonce\": \"32\", \"blockHash\": \"0x5ecacd9d0f8e7f843908db85add0cbd5a6e9ba12e7a6bd4df519ceeab0b4eb06\", \"from\": \"0x25ab3efd52e6470681ce037cd546dc60726948d3\", \"contractAddress\": \"0xfe9f969faf8ad72a83b761138bf25de87eff9dd2\", \"to\": \"0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec\", \"value\": \"2107000\", \"tokenName\": \"Tether USD\", \"tokenSymbol\": \"USDT\", \"transactionIndex\": \"0\", \"gas\": \"153436\", \"gasPrice\": \"105000007\", \"gasUsed\": \"125699\", \"cumulativeGasUsed\": \"0\", \"input\": \"deprecated\", \"confirmations\": \"65676\" } ] }","s":"Get a list of \"ERC-20 - Token Transfer Events\" by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-erc-20---token-transfer-events-by-address","p":60},{"i":78,"t":"Returns the list of ERC-721 ( NFT ) tokens transferred by an address, with optional filtering by token contract. [Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results https://api.btrscan.com/scan/api ?module=account &action=tokennfttx &address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184 &startblock=0 &endblock=999999999 &sort=asc Try this endpoint in your browser 🔗 or https://api.btrscan.com/scan/api ?module=account &action=tokennfttx &contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230 &page=1 &offset=100 &sort=asc Try this endpoint in your browser 🔗 or https://api.btrscan.com/scan/api ?module=account &action=tokennfttx &contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230 &address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184 &page=1 &offset=100 &sort=asc Try this endpoint in your browser 🔗 Usage: ERC-721 transfers from an address, specify the address parameter ERC-721 transfers from a contract address, specify the contract address parameter ERC-721 transfers from an address filtered by a token contract, specify both address and contract address parameters. Request Response Query Parameters Parameter Description address the string representing the address to check balance contractaddress the string representing the token contract address to check for balance startblock the integer block number to start searching for transactions endblock the integer block number to stop searching for transactions page the integer page number, if pagination is enabled offset the number of transactions displayed per page sort the sorting preference, use asc to sort by ascending and desc to sort by descending Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"557453\", \"timeStamp\": \"1713948988\", \"hash\": \"0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e\", \"nonce\": \"33\", \"blockHash\": \"0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217\", \"from\": \"0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\", \"contractAddress\": \"0x963c039406f8b10d3a0691328b4d2ae90fa43230\", \"to\": \"0xbd24dcaa72e661ecc948a654437dafa1a6384e90\", \"tokenID\": \"65001055500330754286618552158997555046548672384952399608215284533236886254591\", \"tokenName\": \".btr(XNAME on Bitlayer)\", \"tokenSymbol\": \"XNAME\", \"tokenDecimal\": \"0\", \"transactionIndex\": \"0\", \"gas\": \"520481\", \"gasPrice\": \"100000007\", \"gasUsed\": \"476443\", \"cumulativeGasUsed\": \"0\", \"input\": \"deprecated\", \"confirmations\": \"28002\" }, { \"blockNumber\": \"557453\", \"timeStamp\": \"1713948988\", \"hash\": \"0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9e\", \"nonce\": \"33\", \"blockHash\": \"0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217\", \"from\": \"0x0000000000000000000000000000000000000000\", \"contractAddress\": \"0x963c039406f8b10d3a0691328b4d2ae90fa43230\", \"to\": \"0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184\", \"tokenID\": \"65001055500330754286618552158997555046548672384952399608215284533236886254591\", \"tokenName\": \".btr(XNAME on Bitlayer)\", \"tokenSymbol\": \"XNAME\", \"tokenDecimal\": \"0\", \"transactionIndex\": \"0\", \"gas\": \"520481\", \"gasPrice\": \"100000007\", \"gasUsed\": \"476443\", \"cumulativeGasUsed\": \"0\", \"input\": \"deprecated\", \"confirmations\": \"28002\" } ] }","s":"Get a list of \"ERC-721 - Token Transfer Events\" by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-a-list-of-erc-721---token-transfer-events-by-address","p":60},{"i":80,"t":"Returns the list of blocks validated by an address. https://api.btrscan.com/scan/api ?module=account &action=getminedblocks &blocktype=blocks &address=0x0fac0285011992215edb080f14a2cc6ab629360b Try this endpoint in your browser 🔗 or tip To get paginated results use page= and offset= https://api.btrscan.com/scan/api ?module=account &action=getminedblocks &blocktype=blocks &page=1 &offset=100 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description blocktype the string pre-defined block type, either blocks for canonical blocks or uncles for uncle blocks only page the integer page number, if pagination is enabled offset the number of transactions displayed per page Sample Response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ { \"blockNumber\": \"1189703\", \"timeStamp\": \"1715845738\", \"blockReward\": \"0\" }, { \"blockNumber\": \"1189683\", \"timeStamp\": \"1715845678\", \"blockReward\": \"0\" }, { \"blockNumber\": \"1189663\", \"timeStamp\": \"1715845618\", \"blockReward\": \"0\" }, { \"blockNumber\": \"1189643\", \"timeStamp\": \"1715845558\", \"blockReward\": \"0\" }, { \"blockNumber\": \"1189623\", \"timeStamp\": \"1715845498\", \"blockReward\": \"0\" } ] }","s":"Get list of Blocks Validated by Address","u":"/docs/Bitlayer Scan APIs/Accounts","h":"#get-list-of-blocks-validated-by-address","p":60},{"i":83,"t":"The official recommendation of Hardhat is to use hardhat-verify along with hardhat-toolbox for custom browser API configurations and contract verification. tip Please use hardhat-verify for contract verification , hardhat-etherscan is not recommended. https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify","s":"Verify the contract through hardhat verify","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#verify-the-contract-through-hardhat-verify","p":81},{"i":85,"t":"The package.json file needs to add the following dependencies: tip Please use hardhat-verify for contract verification, hardhat-etherscan is not recommended. // Adjust the version according to needs \"@nomicfoundation/hardhat-toolbox\": \"^4.0.0\", \"@nomicfoundation/hardhat-verify\": \"^2.0.5\", \"hardhat\": \"^2.19.4\" Execute the npm install command to install dependencies.","s":"An example of Hardhat Project Configuration and Contract Verification","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#an-example-of-hardhat-project-configuration-and-contract-verification","p":81},{"i":87,"t":"require(\"@nomicfoundation/hardhat-toolbox\"); // The toolbox library supports customChains configuration. require(\"@nomicfoundation/hardhat-verify\"); module.exports = { solidity: { version: \"0.8.23\", // Configure the solidity version for your own project, noting that the solidity version for deploying and verifying contracts should be the same. settings: { // Configure this part according to needs. optimizer:{ enabled: true, runs: 200, } } }, networks: { bitlayertestnet: { url: 'https://testnet-rpc.bitlayer.org', chainId: 200810, accounts: [\"private key of your account\"] }, bitlayer: { url: 'https://rpc.bitlayer.org', chainId: 200901, accounts: [\"private key of your account\"] }, }, etherscan: { apiKey: { // An API key needs to be written as the hardhat-verify plugin will require it, and the verification will fail if it is not provided. // The current bitlayer browser has not yet enabled API key verification, so you can write any random string for now. bitlayertestnet: \"1234\", bitlayer: \"1234\" }, customChains: [ { network: \"bitlayertestnet\", chainId: 200810, urls: { apiURL: \"https://api-testnet.btrscan.com/scan/api\", browserURL: \"https://testnet.btrscan.com/\" } }, { network: \"bitlayer\", chainId: 200901, urls: { apiURL: \"https://api.btrscan.com/scan/api\", browserURL: \"https://www.btrscan.com/\" } } ] } };","s":"The configuration in the hardhat.config.js file is as follows:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#the-configuration-in-the-hardhatconfigjs-file-is-as-follows","p":81},{"i":89,"t":"Contract compilation requires compiling the contract according to the configuration parameters used during deployment (such as the Solidity version, whether the optimizer is enabled, etc.), otherwise the compiled bytecode will not match the bytecode of the contract on the blockchain, and verification will not be possible. When verifying a contract, you need to specify the network, contract path, contract name, etc. If the contract constructor has parameters, you need to include the constructor arguments that were passed in during the deployment of the contract. Provide as many as there are, and if there are no parameters, you don't need to write \"constructorArguments\". Here's an example: npx hardhat verify --network bitlayer --contract contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy ${contract_address} constructorArguments1 constructorArguments2 constructorArguments3... Regarding passing constructor arguments, if the constructor arguments are of complex types, such as address[] or custom structs, it can be inconvenient to pass them through the command line. Instead, you can use --constructor-args arguments.js, where arguments.js exports the parameters in order. Example of an arguments.js file module.exports = [ \"arg0\", \"arg1\" ]; Example of an arguments.js file for complex types For example, the contract is defined with the following constructor: struct Point { uint x; uint y; } contract Foo { constructor (uint x, string s, Point memory point, bytes b) { ... } } Then the arguments.js file can be written like this: module.exports = [ 50, \"a string argument\", { x: 10, y: 5, }, // bytes have to be 0x-prefixed \"0xabcdef\", ]; An example of using arguments.js file to pass arguments and execute the verify command is as follows: npx hardhat verify --constructor-args arguments.js --contract contracts/path/path/SimpleContract.sol:SimpleContract DEPLOYED_CONTRACT_ADDRESS","s":"Steps to Verify a Contract:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#steps-to-verify-a-contract","p":81},{"i":92,"t":"Returns the Contract Application Binary Interface ( ABI ) of a verified smart contract. https://api.btrscan.com/scan/api ?module=contract &action=getabi &address=0xc9121e476155ebf0b794b7b351808af3787e727d Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the contract address that has a verified source code var Web3 = require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider()); var version = web3.version.api; $.getJSON('https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d', function (data) { var contractABI = \"\"; contractABI = JSON.parse(data.result); if (contractABI != ''){ var MyContract = web3.eth.contract(contractABI); var myContractInstance = MyContract.at(\"0xc9121e476155ebf0b794b7b351808af3787e727d\"); var result = myContractInstance.memberId(\"0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715\"); console.log(\"result1 : \" + result); var result = myContractInstance.members(1); console.log(\"result2 : \" + result); } else { console.log(\"Error\"); } }); Sample Response { \"status\": 1, \"message\": \"OK\", \"result\": \"[{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"name_\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"symbol_\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"owner\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":true,\\\"name\\\":\\\"spender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"Approval\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"from\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":true,\\\"name\\\":\\\"to\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"Transfer\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"owner\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"allowance\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"approve\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint8\\\",\\\"type\\\":\\\"uint8\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"decimals\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"subtractedValue\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"decreaseAllowance\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"addedValue\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"increaseAllowance\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"name\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"symbol\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"totalSupply\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"to\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"transfer\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"from\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"to\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"transferFrom\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"}]\" }","s":"Get Contract ABI for Verified Contract Source Codes","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-abi-for-verified-contract-source-codes","p":81},{"i":94,"t":"Returns the source code of a verified smart contract. https://api.btrscan.com/scan/api ?module=contract &action=getsourcecode &address=0xc9121e476155ebf0b794b7b351808af3787e727d Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description address the contract address that has a verified source code sample response { \"status\":\"1\", \"message\":\"OK\", \"result\":[ \"proxy\": \"\", \"evmversion\": \"default\", \"abi\": \"[{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"contractName\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"target\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"AddressEmptyCode\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"AddressInsufficientBalance\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"ECDSAInvalidSignature\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"length\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"ECDSAInvalidSignatureLength\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"s\\\",\\\"internalType\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"name\\\":\\\"ECDSAInvalidSignatureS\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"FailedInnerCall\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"currentNonce\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"InvalidAccountNonce\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"InvalidShortString\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"token\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"SafeERC20FailedOperation\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"str\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"name\\\":\\\"StringTooLong\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"EIP712DomainChanged\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"approver\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenAddress\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountIn\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountOut\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"deadline\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"PermitAndSwap\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"sender\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"Received\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newValue\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"SetMaxOutput\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newOp\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"on\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"SetOperator\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"valut\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"status\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"SetVaults\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newOwner\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"TransferOwnership\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenAddress\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"receiver\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"Withdrawn\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"DOMAIN_SEPARATOR\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"MAX_BTC_AMOUNT\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"fields\\\",\\\"internalType\\\":\\\"bytes1\\\",\\\"type\\\":\\\"bytes1\\\"},{\\\"name\\\":\\\"name\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"version\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"chainId\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"verifyingContract\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"name\\\":\\\"salt\\\",\\\"internalType\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"name\\\":\\\"extensions\\\",\\\"internalType\\\":\\\"uint256[]\\\",\\\"type\\\":\\\"uint256[]\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"eip712Domain\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"name\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"_owner\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"nonces\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"operators\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"owner\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"approver\\\",\\\"internalType\\\":\\\"address payable\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenAddress\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountIn\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"deadline\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"price\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountOut\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"permitSig\\\",\\\"internalType\\\":\\\"bytes\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"swapSig\\\",\\\"internalType\\\":\\\"bytes\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"permitAndSwap\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newValue\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"setMaxOutput\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newOp\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"_on\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"setOperator\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"valut\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"status\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"setVaults\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newOwner\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"transferOwnership\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"vaults\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"receiver\\\",\\\"internalType\\\":\\\"address payable\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawBTC\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenAddress\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"receiver\\\",\\\"internalType\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internalType\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawERC20\\\",\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"anonymous\\\":false,\\\"stateMutability\\\":\\\"payable\\\",\\\"type\\\":\\\"receive\\\"}]\", \"optimizationUsed\": \"0\", \"runs\": \"200\", \"licenseType\": \"None\", \"compilerVersion\": \"v0.8.20+commit.a1b79de6\", \"constructorArguments\": \"0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d546f6b656e45786368616e676500000000000000000000000000000000000000\", \"swarmSource\": \"\", \"library\": \"\", \"implementation\": \"\", \"contractName\": \"TokenExchange\", \"SourceCode\": \"{\\\"language\\\":\\\"Solidity\\\",\\\"sources\\\":{\\\"@openzeppelin/contracts/interfaces/IERC5267.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\ninterface IERC5267 {\\\\n /**\\\\n * @dev MAY be emitted to signal that the domain could have changed.\\\\n */\\\\n event EIP712DomainChanged();\\\\n\\\\n /**\\\\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\\\n * signature.\\\\n */\\\\n function eip712Domain()\\\\n external\\\\n view\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n );\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\\\n *\\\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\\\n * need to send a transaction, and thus is not required to hold Ether at all.\\\\n *\\\\n * ==== Security Considerations\\\\n *\\\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\\\n * generally recommended is:\\\\n *\\\\n * ```solidity\\\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\\\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\\\n * doThing(..., value);\\\\n * }\\\\n *\\\\n * function doThing(..., uint256 value) public {\\\\n * token.safeTransferFrom(msg.sender, address(this), value);\\\\n * ...\\\\n * }\\\\n * ```\\\\n *\\\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\\\n * {SafeERC20-safeTransferFrom}).\\\\n *\\\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\\\n * contracts should have entry points that don't rely on permit.\\\\n */\\\\ninterface IERC20Permit {\\\\n /**\\\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\\\n * given ``owner``'s signed approval.\\\\n *\\\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\\\n * ordering also apply here.\\\\n *\\\\n * Emits an {Approval} event.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `spender` cannot be the zero address.\\\\n * - `deadline` must be a timestamp in the future.\\\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\\\n * over the EIP712-formatted function arguments.\\\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\\\n *\\\\n * For more information on the signature format, see the\\\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\\\n * section].\\\\n *\\\\n * CAUTION: See Security Considerations above.\\\\n */\\\\n function permit(\\\\n address owner,\\\\n address spender,\\\\n uint256 value,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) external;\\\\n\\\\n /**\\\\n * @dev Returns the current nonce for `owner`. This value must be\\\\n * included whenever a signature is generated for {permit}.\\\\n *\\\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\\\n * prevents a signature from being used multiple times.\\\\n */\\\\n function nonces(address owner) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\\\n */\\\\ninterface IERC20 {\\\\n /**\\\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\\\n * another (`to`).\\\\n *\\\\n * Note that `value` may be zero.\\\\n */\\\\n event Transfer(address indexed from, address indexed to, uint256 value);\\\\n\\\\n /**\\\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\\\n * a call to {approve}. `value` is the new allowance.\\\\n */\\\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens in existence.\\\\n */\\\\n function totalSupply() external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Returns the value of tokens owned by `account`.\\\\n */\\\\n function balanceOf(address account) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transfer(address to, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Returns the remaining number of tokens that `spender` will be\\\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\\\n * zero by default.\\\\n *\\\\n * This value changes when {approve} or {transferFrom} are called.\\\\n */\\\\n function allowance(address owner, address spender) external view returns (uint256);\\\\n\\\\n /**\\\\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\\\n * caller's tokens.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\\\n * that someone may use both the old and the new allowance by unfortunate\\\\n * transaction ordering. One possible solution to mitigate this race\\\\n * condition is to first reduce the spender's allowance to 0 and set the\\\\n * desired value afterwards:\\\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\\\n *\\\\n * Emits an {Approval} event.\\\\n */\\\\n function approve(address spender, uint256 value) external returns (bool);\\\\n\\\\n /**\\\\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\\\\n * allowance mechanism. `value` is then deducted from the caller's\\\\n * allowance.\\\\n *\\\\n * Returns a boolean value indicating whether the operation succeeded.\\\\n *\\\\n * Emits a {Transfer} event.\\\\n */\\\\n function transferFrom(address from, address to, uint256 value) external returns (bool);\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {IERC20} from \\\\\\\"../IERC20.sol\\\\\\\";\\\\nimport {IERC20Permit} from \\\\\\\"../extensions/IERC20Permit.sol\\\\\\\";\\\\nimport {Address} from \\\\\\\"../../../utils/Address.sol\\\\\\\";\\\\n\\\\n/**\\\\n * @title SafeERC20\\\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\\\n * contract returns false). Tokens that return no value (and instead revert or\\\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\\\n * successful.\\\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\\\n */\\\\nlibrary SafeERC20 {\\\\n using Address for address;\\\\n\\\\n /**\\\\n * @dev An operation with an ERC20 token failed.\\\\n */\\\\n error SafeERC20FailedOperation(address token);\\\\n\\\\n /**\\\\n * @dev Indicates a failed `decreaseAllowance` request.\\\\n */\\\\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\\\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\\\n uint256 oldAllowance = token.allowance(address(this), spender);\\\\n forceApprove(token, spender, oldAllowance + value);\\\\n }\\\\n\\\\n /**\\\\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\\\n * value, non-reverting calls are assumed to be successful.\\\\n */\\\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\\\n unchecked {\\\\n uint256 currentAllowance = token.allowance(address(this), spender);\\\\n if (currentAllowance < requestedDecrease) {\\\\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\\\n }\\\\n forceApprove(token, spender, currentAllowance - requestedDecrease);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\\\n */\\\\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\\\\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\\\n\\\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\\\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\\\n _callOptionalReturn(token, approvalCall);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n */\\\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\\\n // the target address contains contract code and also asserts for success in the low-level call.\\\\n\\\\n bytes memory returndata = address(token).functionCall(data);\\\\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\\\\n revert SafeERC20FailedOperation(address(token));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\\\n * @param token The token targeted by the call.\\\\n * @param data The call data (encoded using abi.encode or one of its variants).\\\\n *\\\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\\\n */\\\\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\\\n // and not revert is the subcall reverts.\\\\n\\\\n (bool success, bytes memory returndata) = address(token).call(data);\\\\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/Address.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Collection of functions related to the address type\\\\n */\\\\nlibrary Address {\\\\n /**\\\\n * @dev The ETH balance of the account is not enough to perform the operation.\\\\n */\\\\n error AddressInsufficientBalance(address account);\\\\n\\\\n /**\\\\n * @dev There's no code at `target` (it is not a contract).\\\\n */\\\\n error AddressEmptyCode(address target);\\\\n\\\\n /**\\\\n * @dev A call to an address target failed. The target may have reverted.\\\\n */\\\\n error FailedInnerCall();\\\\n\\\\n /**\\\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\\\n * `recipient`, forwarding all available gas and reverting on errors.\\\\n *\\\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\\\n * imposed by `transfer`, making them unable to receive funds via\\\\n * `transfer`. {sendValue} removes this limitation.\\\\n *\\\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\\\n *\\\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\\\n * taken to not create reentrancy vulnerabilities. Consider using\\\\n * {ReentrancyGuard} or the\\\\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\\\n */\\\\n function sendValue(address payable recipient, uint256 amount) internal {\\\\n if (address(this).balance < amount) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n\\\\n (bool success, ) = recipient.call{value: amount}(\\\\\\\"\\\\\\\");\\\\n if (!success) {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Performs a Solidity function call using a low level `call`. A\\\\n * plain `call` is an unsafe replacement for a function call: use this\\\\n * function instead.\\\\n *\\\\n * If `target` reverts with a revert reason or custom error, it is bubbled\\\\n * up by this function (like regular Solidity function calls). However, if\\\\n * the call reverted with no returned reason, this function reverts with a\\\\n * {FailedInnerCall} error.\\\\n *\\\\n * Returns the raw returned data. To convert to the expected return value,\\\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - `target` must be a contract.\\\\n * - calling `target` with `data` must not revert.\\\\n */\\\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n return functionCallWithValue(target, data, 0);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but also transferring `value` wei to `target`.\\\\n *\\\\n * Requirements:\\\\n *\\\\n * - the calling contract must have an ETH balance of at least `value`.\\\\n * - the called Solidity function must be `payable`.\\\\n */\\\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\\\n if (address(this).balance < value) {\\\\n revert AddressInsufficientBalance(address(this));\\\\n }\\\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a static call.\\\\n */\\\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.staticcall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\\\n * but performing a delegate call.\\\\n */\\\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\\\n return verifyCallResultFromTarget(target, success, returndata);\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\\\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\\\n * unsuccessful call.\\\\n */\\\\n function verifyCallResultFromTarget(\\\\n address target,\\\\n bool success,\\\\n bytes memory returndata\\\\n ) internal view returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n // only check if target is a contract if the call was successful and the return data is empty\\\\n // otherwise we already know that it was a contract\\\\n if (returndata.length == 0 && target.code.length == 0) {\\\\n revert AddressEmptyCode(target);\\\\n }\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\\\n * revert reason or with a default {FailedInnerCall} error.\\\\n */\\\\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\\\n if (!success) {\\\\n _revert(returndata);\\\\n } else {\\\\n return returndata;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\\\n */\\\\n function _revert(bytes memory returndata) private pure {\\\\n // Look for revert reason and bubble it up if present\\\\n if (returndata.length > 0) {\\\\n // The easiest way to bubble the revert reason is using memory via assembly\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let returndata_size := mload(returndata)\\\\n revert(add(32, returndata), returndata_size)\\\\n }\\\\n } else {\\\\n revert FailedInnerCall();\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\\\n *\\\\n * These functions can be used to verify that a message was signed by the holder\\\\n * of the private keys of a given address.\\\\n */\\\\nlibrary ECDSA {\\\\n enum RecoverError {\\\\n NoError,\\\\n InvalidSignature,\\\\n InvalidSignatureLength,\\\\n InvalidSignatureS\\\\n }\\\\n\\\\n /**\\\\n * @dev The signature derives the `address(0)`.\\\\n */\\\\n error ECDSAInvalidSignature();\\\\n\\\\n /**\\\\n * @dev The signature has an invalid length.\\\\n */\\\\n error ECDSAInvalidSignatureLength(uint256 length);\\\\n\\\\n /**\\\\n * @dev The signature has an S value that is in the upper half order.\\\\n */\\\\n error ECDSAInvalidSignatureS(bytes32 s);\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\\\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\\\n * and a bytes32 providing additional information about the error.\\\\n *\\\\n * If no error is returned, then the address can be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n *\\\\n * Documentation for signature generation:\\\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\\\\n if (signature.length == 65) {\\\\n bytes32 r;\\\\n bytes32 s;\\\\n uint8 v;\\\\n // ecrecover takes the signature parameters, and the only way to get them\\\\n // currently is to use assembly.\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r := mload(add(signature, 0x20))\\\\n s := mload(add(signature, 0x40))\\\\n v := byte(0, mload(add(signature, 0x60)))\\\\n }\\\\n return tryRecover(hash, v, r, s);\\\\n } else {\\\\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the address that signed a hashed message (`hash`) with\\\\n * `signature`. This address can then be used for verification purposes.\\\\n *\\\\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\\\n * this function rejects them by requiring the `s` value to be in the lower\\\\n * half order, and the `v` value to be either 27 or 28.\\\\n *\\\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\\\n * verification to be secure: it is possible to craft signatures that\\\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\\\n * this is by receiving a hash of the original message (which may otherwise\\\\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\\\n */\\\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\\\n *\\\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\\\n */\\\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\\\\n unchecked {\\\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\\\n // We do not check for an overflow here since the shift operation results in 0 or 1.\\\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\\\n return tryRecover(hash, v, r, s);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function tryRecover(\\\\n bytes32 hash,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal pure returns (address, RecoverError, bytes32) {\\\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\\\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\\\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\\\n //\\\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\\\n // these malleable signatures as well.\\\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\\\n return (address(0), RecoverError.InvalidSignatureS, s);\\\\n }\\\\n\\\\n // If the signature is valid (and not malleable), return the signer address\\\\n address signer = ecrecover(hash, v, r, s);\\\\n if (signer == address(0)) {\\\\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\\\\n }\\\\n\\\\n return (signer, RecoverError.NoError, bytes32(0));\\\\n }\\\\n\\\\n /**\\\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\\\n * `r` and `s` signature fields separately.\\\\n */\\\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\\\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\\\n _throwError(error, errorArg);\\\\n return recovered;\\\\n }\\\\n\\\\n /**\\\\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\\\n */\\\\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\\\\n if (error == RecoverError.NoError) {\\\\n return; // no error: do nothing\\\\n } else if (error == RecoverError.InvalidSignature) {\\\\n revert ECDSAInvalidSignature();\\\\n } else if (error == RecoverError.InvalidSignatureLength) {\\\\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\\\\n } else if (error == RecoverError.InvalidSignatureS) {\\\\n revert ECDSAInvalidSignatureS(errorArg);\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {MessageHashUtils} from \\\\\\\"./MessageHashUtils.sol\\\\\\\";\\\\nimport {ShortStrings, ShortString} from \\\\\\\"../ShortStrings.sol\\\\\\\";\\\\nimport {IERC5267} from \\\\\\\"../../interfaces/IERC5267.sol\\\\\\\";\\\\n\\\\n/**\\\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\\\n *\\\\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\\\\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\\\\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\\\\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\\\\n *\\\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\\\n * ({_hashTypedDataV4}).\\\\n *\\\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\\\n *\\\\n * NOTE: This contract implements the version of the encoding known as \\\\\\\"v4\\\\\\\", as implemented by the JSON RPC method\\\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\\\n *\\\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\\\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\\\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\\\n *\\\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\\\\n */\\\\nabstract contract EIP712 is IERC5267 {\\\\n using ShortStrings for *;\\\\n\\\\n bytes32 private constant TYPE_HASH =\\\\n keccak256(\\\\\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\\\\\");\\\\n\\\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\\\n // invalidate the cached domain separator if the chain id changes.\\\\n bytes32 private immutable _cachedDomainSeparator;\\\\n uint256 private immutable _cachedChainId;\\\\n address private immutable _cachedThis;\\\\n\\\\n bytes32 private immutable _hashedName;\\\\n bytes32 private immutable _hashedVersion;\\\\n\\\\n ShortString private immutable _name;\\\\n ShortString private immutable _version;\\\\n string private _nameFallback;\\\\n string private _versionFallback;\\\\n\\\\n /**\\\\n * @dev Initializes the domain separator and parameter caches.\\\\n *\\\\n * The meaning of `name` and `version` is specified in\\\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\\\n *\\\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\\\n * - `version`: the current major version of the signing domain.\\\\n *\\\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\\\n * contract upgrade].\\\\n */\\\\n constructor(string memory name, string memory version) {\\\\n _name = name.toShortStringWithFallback(_nameFallback);\\\\n _version = version.toShortStringWithFallback(_versionFallback);\\\\n _hashedName = keccak256(bytes(name));\\\\n _hashedVersion = keccak256(bytes(version));\\\\n\\\\n _cachedChainId = block.chainid;\\\\n _cachedDomainSeparator = _buildDomainSeparator();\\\\n _cachedThis = address(this);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the domain separator for the current chain.\\\\n */\\\\n function _domainSeparatorV4() internal view returns (bytes32) {\\\\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\\\n return _cachedDomainSeparator;\\\\n } else {\\\\n return _buildDomainSeparator();\\\\n }\\\\n }\\\\n\\\\n function _buildDomainSeparator() private view returns (bytes32) {\\\\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\\\n *\\\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\\\n *\\\\n * ```solidity\\\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\\\n * keccak256(\\\\\\\"Mail(address to,string contents)\\\\\\\"),\\\\n * mailTo,\\\\n * keccak256(bytes(mailContents))\\\\n * )));\\\\n * address signer = ECDSA.recover(digest, signature);\\\\n * ```\\\\n */\\\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\\\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\\\\n }\\\\n\\\\n /**\\\\n * @dev See {IERC-5267}.\\\\n */\\\\n function eip712Domain()\\\\n public\\\\n view\\\\n virtual\\\\n returns (\\\\n bytes1 fields,\\\\n string memory name,\\\\n string memory version,\\\\n uint256 chainId,\\\\n address verifyingContract,\\\\n bytes32 salt,\\\\n uint256[] memory extensions\\\\n )\\\\n {\\\\n return (\\\\n hex\\\\\\\"0f\\\\\\\", // 01111\\\\n _EIP712Name(),\\\\n _EIP712Version(),\\\\n block.chainid,\\\\n address(this),\\\\n bytes32(0),\\\\n new uint256[](0)\\\\n );\\\\n }\\\\n\\\\n /**\\\\n * @dev The name parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _name which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Name() internal view returns (string memory) {\\\\n return _name.toStringWithFallback(_nameFallback);\\\\n }\\\\n\\\\n /**\\\\n * @dev The version parameter for the EIP712 domain.\\\\n *\\\\n * NOTE: By default this function reads _version which is an immutable value.\\\\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\\\\n */\\\\n // solhint-disable-next-line func-name-mixedcase\\\\n function _EIP712Version() internal view returns (string memory) {\\\\n return _version.toStringWithFallback(_versionFallback);\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Strings} from \\\\\\\"../Strings.sol\\\\\\\";\\\\n\\\\n/**\\\\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\\\\n *\\\\n * The library provides methods for generating a hash of a message that conforms to the\\\\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\\\\n * specifications.\\\\n */\\\\nlibrary MessageHashUtils {\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing a bytes32 `messageHash` with\\\\n * `\\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\\"` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\\\\n * keccak256, although any bytes32 value can be safely used because the final digest will\\\\n * be re-hashed.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(0x00, \\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n32\\\\\\\") // 32 is the bytes-length of messageHash\\\\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\\\\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x45` (`personal_sign` messages).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `message` with\\\\n * `\\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\\" + len(message)` and hashing the result. It corresponds with the\\\\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\\\\n return\\\\n keccak256(bytes.concat(\\\\\\\"\\\\\\\\x19Ethereum Signed Message:\\\\\\\\n\\\\\\\", bytes(Strings.toString(message.length)), message));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\\\\n * `0x00` (data with intended validator).\\\\n *\\\\n * The digest is calculated by prefixing an arbitrary `data` with `\\\\\\\"\\\\\\\\x19\\\\\\\\x00\\\\\\\"` and the intended\\\\n * `validator` address. Then hashing the result.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\\\n return keccak256(abi.encodePacked(hex\\\\\\\"19_00\\\\\\\", validator, data));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\\\\n *\\\\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\\\\n * `\\\\\\\\x19\\\\\\\\x01` and hashing the result. It corresponds to the hash signed by the\\\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\\\\n *\\\\n * See {ECDSA-recover}.\\\\n */\\\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n let ptr := mload(0x40)\\\\n mstore(ptr, hex\\\\\\\"19_01\\\\\\\")\\\\n mstore(add(ptr, 0x02), domainSeparator)\\\\n mstore(add(ptr, 0x22), structHash)\\\\n digest := keccak256(ptr, 0x42)\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/math/Math.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard math utilities missing in the Solidity language.\\\\n */\\\\nlibrary Math {\\\\n /**\\\\n * @dev Muldiv operation overflow.\\\\n */\\\\n error MathOverflowedMulDiv();\\\\n\\\\n enum Rounding {\\\\n Floor, // Toward negative infinity\\\\n Ceil, // Toward positive infinity\\\\n Trunc, // Toward zero\\\\n Expand // Away from zero\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n uint256 c = a + b;\\\\n if (c < a) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\\\n */\\\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b > a) return (false, 0);\\\\n return (true, a - b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\\\n */\\\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\\\n // benefit is lost if 'b' is also tested.\\\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\\\n if (a == 0) return (true, 0);\\\\n uint256 c = a * b;\\\\n if (c / a != b) return (false, 0);\\\\n return (true, c);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a / b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\\\n */\\\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\\\n unchecked {\\\\n if (b == 0) return (false, 0);\\\\n return (true, a % b);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the largest of two numbers.\\\\n */\\\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two numbers.\\\\n */\\\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two numbers. The result is rounded towards\\\\n * zero.\\\\n */\\\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n // (a + b) / 2 can overflow.\\\\n return (a & b) + (a ^ b) / 2;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the ceiling of the division of two numbers.\\\\n *\\\\n * This differs from standard division with `/` in that it rounds towards infinity instead\\\\n * of rounding towards zero.\\\\n */\\\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\\\n if (b == 0) {\\\\n // Guarantee the same behavior as in a regular Solidity division.\\\\n return a / b;\\\\n }\\\\n\\\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\\\n return a == 0 ? 0 : (a - 1) / b + 1;\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\\\n * denominator == 0.\\\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\\\n * Uniswap Labs also under MIT license.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\\\n unchecked {\\\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\\\n // variables such that product = prod1 * 2^256 + prod0.\\\\n uint256 prod0 = x * y; // Least significant 256 bits of the product\\\\n uint256 prod1; // Most significant 256 bits of the product\\\\n assembly {\\\\n let mm := mulmod(x, y, not(0))\\\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\\\n }\\\\n\\\\n // Handle non-overflow cases, 256 by 256 division.\\\\n if (prod1 == 0) {\\\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\\\n // The surrounding unchecked block does not change this fact.\\\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\\\n return prod0 / denominator;\\\\n }\\\\n\\\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\\\n if (denominator <= prod1) {\\\\n revert MathOverflowedMulDiv();\\\\n }\\\\n\\\\n ///////////////////////////////////////////////\\\\n // 512 by 256 division.\\\\n ///////////////////////////////////////////////\\\\n\\\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\\\n uint256 remainder;\\\\n assembly {\\\\n // Compute remainder using mulmod.\\\\n remainder := mulmod(x, y, denominator)\\\\n\\\\n // Subtract 256 bit number from 512 bit number.\\\\n prod1 := sub(prod1, gt(remainder, prod0))\\\\n prod0 := sub(prod0, remainder)\\\\n }\\\\n\\\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\\\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\\\n\\\\n uint256 twos = denominator & (0 - denominator);\\\\n assembly {\\\\n // Divide denominator by twos.\\\\n denominator := div(denominator, twos)\\\\n\\\\n // Divide [prod1 prod0] by twos.\\\\n prod0 := div(prod0, twos)\\\\n\\\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\\\n twos := add(div(sub(0, twos), twos), 1)\\\\n }\\\\n\\\\n // Shift in bits from prod1 into prod0.\\\\n prod0 |= prod1 * twos;\\\\n\\\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\\\n uint256 inverse = (3 * denominator) ^ 2;\\\\n\\\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\\\n // works in modular arithmetic, doubling the correct bits in each step.\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\\\n\\\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\\\n // is no longer required.\\\\n result = prod0 * inverse;\\\\n return result;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\\\n */\\\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\\\n uint256 result = mulDiv(x, y, denominator);\\\\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\\\\n result += 1;\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\\\n * towards zero.\\\\n *\\\\n * Inspired by Henry S. Warren, Jr.'s \\\\\\\"Hacker's Delight\\\\\\\" (Chapter 11).\\\\n */\\\\n function sqrt(uint256 a) internal pure returns (uint256) {\\\\n if (a == 0) {\\\\n return 0;\\\\n }\\\\n\\\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\\\n //\\\\n // We know that the \\\\\\\"msb\\\\\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\\\n //\\\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\\\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\\\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\\\n //\\\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\\\n uint256 result = 1 << (log2(a) >> 1);\\\\n\\\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\\\n // into the expected uint128 result.\\\\n unchecked {\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n result = (result + a / result) >> 1;\\\\n return min(result, a / result);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\\\n */\\\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = sqrt(a);\\\\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 128;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 64;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 32;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 16;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n value >>= 8;\\\\n result += 8;\\\\n }\\\\n if (value >> 4 > 0) {\\\\n value >>= 4;\\\\n result += 4;\\\\n }\\\\n if (value >> 2 > 0) {\\\\n value >>= 2;\\\\n result += 2;\\\\n }\\\\n if (value >> 1 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log2(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >= 10 ** 64) {\\\\n value /= 10 ** 64;\\\\n result += 64;\\\\n }\\\\n if (value >= 10 ** 32) {\\\\n value /= 10 ** 32;\\\\n result += 32;\\\\n }\\\\n if (value >= 10 ** 16) {\\\\n value /= 10 ** 16;\\\\n result += 16;\\\\n }\\\\n if (value >= 10 ** 8) {\\\\n value /= 10 ** 8;\\\\n result += 8;\\\\n }\\\\n if (value >= 10 ** 4) {\\\\n value /= 10 ** 4;\\\\n result += 4;\\\\n }\\\\n if (value >= 10 ** 2) {\\\\n value /= 10 ** 2;\\\\n result += 2;\\\\n }\\\\n if (value >= 10 ** 1) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log10(value);\\\\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256 of a positive value rounded towards zero.\\\\n * Returns 0 if given 0.\\\\n *\\\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\\\n */\\\\n function log256(uint256 value) internal pure returns (uint256) {\\\\n uint256 result = 0;\\\\n unchecked {\\\\n if (value >> 128 > 0) {\\\\n value >>= 128;\\\\n result += 16;\\\\n }\\\\n if (value >> 64 > 0) {\\\\n value >>= 64;\\\\n result += 8;\\\\n }\\\\n if (value >> 32 > 0) {\\\\n value >>= 32;\\\\n result += 4;\\\\n }\\\\n if (value >> 16 > 0) {\\\\n value >>= 16;\\\\n result += 2;\\\\n }\\\\n if (value >> 8 > 0) {\\\\n result += 1;\\\\n }\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\\\n * Returns 0 if given 0.\\\\n */\\\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\\\n unchecked {\\\\n uint256 result = log256(value);\\\\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\\\n */\\\\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\\\n return uint8(rounding) % 2 == 1;\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/math/SignedMath.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Standard signed math utilities missing in the Solidity language.\\\\n */\\\\nlibrary SignedMath {\\\\n /**\\\\n * @dev Returns the largest of two signed numbers.\\\\n */\\\\n function max(int256 a, int256 b) internal pure returns (int256) {\\\\n return a > b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the smallest of two signed numbers.\\\\n */\\\\n function min(int256 a, int256 b) internal pure returns (int256) {\\\\n return a < b ? a : b;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the average of two signed numbers without overflow.\\\\n * The result is rounded towards zero.\\\\n */\\\\n function average(int256 a, int256 b) internal pure returns (int256) {\\\\n // Formula from the book \\\\\\\"Hacker's Delight\\\\\\\"\\\\n int256 x = (a & b) + ((a ^ b) >> 1);\\\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns the absolute unsigned value of a signed value.\\\\n */\\\\n function abs(int256 n) internal pure returns (uint256) {\\\\n unchecked {\\\\n // must be unchecked in order to support `n = type(int256).min`\\\\n return uint256(n >= 0 ? n : -n);\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/Nonces.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\\\\n */\\\\nabstract contract Nonces {\\\\n /**\\\\n * @dev The nonce used for an `account` is not the expected current nonce.\\\\n */\\\\n error InvalidAccountNonce(address account, uint256 currentNonce);\\\\n\\\\n mapping(address account => uint256) private _nonces;\\\\n\\\\n /**\\\\n * @dev Returns the next unused nonce for an address.\\\\n */\\\\n function nonces(address owner) public view virtual returns (uint256) {\\\\n return _nonces[owner];\\\\n }\\\\n\\\\n /**\\\\n * @dev Consumes a nonce.\\\\n *\\\\n * Returns the current value and increments nonce.\\\\n */\\\\n function _useNonce(address owner) internal virtual returns (uint256) {\\\\n // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\\\\n // decremented or reset. This guarantees that the nonce never overflows.\\\\n unchecked {\\\\n // It is important to do x++ and not ++x here.\\\\n return _nonces[owner]++;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\\\\n */\\\\n function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\\\\n uint256 current = _useNonce(owner);\\\\n if (nonce != current) {\\\\n revert InvalidAccountNonce(owner, current);\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/ShortStrings.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {StorageSlot} from \\\\\\\"./StorageSlot.sol\\\\\\\";\\\\n\\\\n// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |\\\\n// | length | 0x BB |\\\\ntype ShortString is bytes32;\\\\n\\\\n/**\\\\n * @dev This library provides functions to convert short memory strings\\\\n * into a `ShortString` type that can be used as an immutable variable.\\\\n *\\\\n * Strings of arbitrary length can be optimized using this library if\\\\n * they are short enough (up to 31 bytes) by packing them with their\\\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\\\n * fallback mechanism can be used for every other case.\\\\n *\\\\n * Usage example:\\\\n *\\\\n * ```solidity\\\\n * contract Named {\\\\n * using ShortStrings for *;\\\\n *\\\\n * ShortString private immutable _name;\\\\n * string private _nameFallback;\\\\n *\\\\n * constructor(string memory contractName) {\\\\n * _name = contractName.toShortStringWithFallback(_nameFallback);\\\\n * }\\\\n *\\\\n * function name() external view returns (string memory) {\\\\n * return _name.toStringWithFallback(_nameFallback);\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary ShortStrings {\\\\n // Used as an identifier for strings longer than 31 bytes.\\\\n bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\\\n\\\\n error StringTooLong(string str);\\\\n error InvalidShortString();\\\\n\\\\n /**\\\\n * @dev Encode a string of at most 31 chars into a `ShortString`.\\\\n *\\\\n * This will trigger a `StringTooLong` error is the input string is too long.\\\\n */\\\\n function toShortString(string memory str) internal pure returns (ShortString) {\\\\n bytes memory bstr = bytes(str);\\\\n if (bstr.length > 31) {\\\\n revert StringTooLong(str);\\\\n }\\\\n return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a `ShortString` back to a \\\\\\\"normal\\\\\\\" string.\\\\n */\\\\n function toString(ShortString sstr) internal pure returns (string memory) {\\\\n uint256 len = byteLength(sstr);\\\\n // using `new string(len)` would work locally but is not memory safe.\\\\n string memory str = new string(32);\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore(str, len)\\\\n mstore(add(str, 0x20), sstr)\\\\n }\\\\n return str;\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a `ShortString`.\\\\n */\\\\n function byteLength(ShortString sstr) internal pure returns (uint256) {\\\\n uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\\\n if (result > 31) {\\\\n revert InvalidShortString();\\\\n }\\\\n return result;\\\\n }\\\\n\\\\n /**\\\\n * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\\\n */\\\\n function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\\\n if (bytes(value).length < 32) {\\\\n return toShortString(value);\\\\n } else {\\\\n StorageSlot.getStringSlot(store).value = value;\\\\n return ShortString.wrap(FALLBACK_SENTINEL);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\\\n */\\\\n function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return toString(value);\\\\n } else {\\\\n return store;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\\\\n * {setWithFallback}.\\\\n *\\\\n * WARNING: This will return the \\\\\\\"byte length\\\\\\\" of the string. This may not reflect the actual length in terms of\\\\n * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\\\n */\\\\n function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\\\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\\\\n return byteLength(value);\\\\n } else {\\\\n return bytes(store).length;\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/StorageSlot.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\n/**\\\\n * @dev Library for reading and writing primitive types to specific storage slots.\\\\n *\\\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\\\n *\\\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\\\n *\\\\n * Example usage to set ERC1967 implementation slot:\\\\n * ```solidity\\\\n * contract ERC1967 {\\\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\\\n *\\\\n * function _getImplementation() internal view returns (address) {\\\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\\\n * }\\\\n *\\\\n * function _setImplementation(address newImplementation) internal {\\\\n * require(newImplementation.code.length > 0);\\\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\\\n * }\\\\n * }\\\\n * ```\\\\n */\\\\nlibrary StorageSlot {\\\\n struct AddressSlot {\\\\n address value;\\\\n }\\\\n\\\\n struct BooleanSlot {\\\\n bool value;\\\\n }\\\\n\\\\n struct Bytes32Slot {\\\\n bytes32 value;\\\\n }\\\\n\\\\n struct Uint256Slot {\\\\n uint256 value;\\\\n }\\\\n\\\\n struct StringSlot {\\\\n string value;\\\\n }\\\\n\\\\n struct BytesSlot {\\\\n bytes value;\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\\\n */\\\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\\\n */\\\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\\\n */\\\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\\\n */\\\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\\\n */\\\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\\\n */\\\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := slot\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\\\n */\\\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n r.slot := store.slot\\\\n }\\\\n }\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/utils/Strings.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: MIT\\\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\\\\n\\\\npragma solidity ^0.8.20;\\\\n\\\\nimport {Math} from \\\\\\\"./math/Math.sol\\\\\\\";\\\\nimport {SignedMath} from \\\\\\\"./math/SignedMath.sol\\\\\\\";\\\\n\\\\n/**\\\\n * @dev String operations.\\\\n */\\\\nlibrary Strings {\\\\n bytes16 private constant HEX_DIGITS = \\\\\\\"0123456789abcdef\\\\\\\";\\\\n uint8 private constant ADDRESS_LENGTH = 20;\\\\n\\\\n /**\\\\n * @dev The `value` string doesn't fit in the specified `length`.\\\\n */\\\\n error StringsInsufficientHexLength(uint256 value, uint256 length);\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n uint256 length = Math.log10(value) + 1;\\\\n string memory buffer = new string(length);\\\\n uint256 ptr;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n ptr := add(buffer, add(32, length))\\\\n }\\\\n while (true) {\\\\n ptr--;\\\\n /// @solidity memory-safe-assembly\\\\n assembly {\\\\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\\\n }\\\\n value /= 10;\\\\n if (value == 0) break;\\\\n }\\\\n return buffer;\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\\\n */\\\\n function toStringSigned(int256 value) internal pure returns (string memory) {\\\\n return string.concat(value < 0 ? \\\\\\\"-\\\\\\\" : \\\\\\\"\\\\\\\", toString(SignedMath.abs(value)));\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\\\n */\\\\n function toHexString(uint256 value) internal pure returns (string memory) {\\\\n unchecked {\\\\n return toHexString(value, Math.log256(value) + 1);\\\\n }\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\\\n */\\\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\\\n uint256 localValue = value;\\\\n bytes memory buffer = new bytes(2 * length + 2);\\\\n buffer[0] = \\\\\\\"0\\\\\\\";\\\\n buffer[1] = \\\\\\\"x\\\\\\\";\\\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\\\n buffer[i] = HEX_DIGITS[localValue & 0xf];\\\\n localValue >>= 4;\\\\n }\\\\n if (localValue != 0) {\\\\n revert StringsInsufficientHexLength(value, length);\\\\n }\\\\n return string(buffer);\\\\n }\\\\n\\\\n /**\\\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\\\n * representation.\\\\n */\\\\n function toHexString(address addr) internal pure returns (string memory) {\\\\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\\\n }\\\\n\\\\n /**\\\\n * @dev Returns true if the two strings are equal.\\\\n */\\\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\\\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\\\n }\\\\n}\\\\n\\\"},\\\"contracts/TokenExchange.sol\\\":{\\\"content\\\":\\\"// SPDX-License-Identifier: GPL-3.0\\\\npragma solidity ^0.8.0;\\\\n\\\\nimport \\\\\\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\\\\\";\\\\nimport \\\\\\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\\\\\\\";\\\\nimport \\\\\\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\\\\\";\\\\nimport \\\\\\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\\\\\";\\\\nimport \\\\\\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\\\\\";\\\\nimport \\\\\\\"@openzeppelin/contracts/utils/Nonces.sol\\\\\\\";\\\\n\\\\n// utils/cryptography/EIP712.sol\\\\\\\";\\\\n//IERC20Permit\\\\ncontract TokenExchange is EIP712, Nonces {\\\\n bytes32 private constant PERMIT_TYPEHASH =\\\\n keccak256(\\\\\\\"Swap(address owner,address tokenAddress,uint256 amountIn,uint256 price,uint256 nonce,uint256 deadline)\\\\\\\");\\\\n\\\\n address public owner;\\\\n // address public operator;\\\\n string private _nameString;\\\\n mapping (address => bool ) public vaults;\\\\n mapping (address => bool) public operators;\\\\n uint256 public MAX_BTC_AMOUNT = 0.005 ether;\\\\n\\\\n event PermitAndSwap(address indexed approver, address tokenAddress, uint256 amountIn, uint256 amountOut, uint256 deadline);\\\\n event Withdrawn(address tokenAddress,address receiver,uint256 amount);\\\\n event TransferOwnership(address newOwner);\\\\n event SetOperator(address newOp,bool on);\\\\n event Received(address sender, uint256 value);\\\\n event SetVaults(address valut, bool status);\\\\n event SetMaxOutput(uint256 newValue);\\\\n\\\\n constructor(string memory contractName) EIP712(contractName, \\\\\\\"1\\\\\\\"){\\\\n owner = msg.sender;\\\\n _nameString = contractName;\\\\n }\\\\n\\\\n modifier onlyOwner() {\\\\n require(msg.sender == owner, \\\\\\\"Only_Owner\\\\\\\");\\\\n _;\\\\n }\\\\n modifier onlyOperator() {\\\\n require(operators[msg.sender], \\\\\\\"Only_Operator\\\\\\\");\\\\n _;\\\\n }\\\\n\\\\n function permitAndSwap(\\\\n address payable approver, //\\\\n address tokenAddress, //\\\\n uint256 amountIn, //\\\\n uint256 deadline, //\\\\n uint256 price,\\\\n uint256 amountOut, // \\\\n bytes memory permitSig,\\\\n bytes memory swapSig\\\\n ) external onlyOperator {\\\\n require(vaults[tokenAddress],\\\\\\\"TokenAddress_Not_Support\\\\\\\");\\\\n require(approver != address(0),\\\\\\\"Approver_Not_Zero_Address\\\\\\\");\\\\n require(deadline >= block.timestamp,\\\\\\\"Deadline_Timeout\\\\\\\");\\\\n require(amountOut <= MAX_BTC_AMOUNT && amountOut <= address(this).balance,\\\\\\\"AmountOut_Illegal\\\\\\\");\\\\n (bytes32 pr, bytes32 ps, uint8 pv) = splitSignature(permitSig);\\\\n IERC20Permit(tokenAddress).permit(approver, address(this), amountIn, deadline, pv, pr, ps);\\\\n \\\\n (bytes32 sr, bytes32 ss, uint8 sv) = splitSignature(swapSig);\\\\n\\\\n verifySignture(approver, tokenAddress, amountIn, price, deadline, sv, sr, ss);\\\\n\\\\n\\\\n\\\\n SafeERC20.safeTransferFrom(IERC20(tokenAddress),approver,address(this),amountIn);\\\\n\\\\n (bool success, bytes memory returnData) = approver.call{value: amountOut}(\\\\\\\"\\\\\\\");\\\\n require(success, string(returnData));\\\\n emit PermitAndSwap(approver, tokenAddress, amountIn, amountOut, deadline);\\\\n }\\\\n function setVaults(address valut, bool status) external onlyOwner {\\\\n vaults[valut] = status;\\\\n emit SetVaults(valut, status);\\\\n }\\\\n function withdrawERC20(address tokenAddress, address receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= IERC20(tokenAddress).balanceOf(address(this)),\\\\\\\"Token_Not_Enough\\\\\\\");\\\\n SafeERC20.safeTransfer(IERC20(tokenAddress), receiver, amount);\\\\n emit Withdrawn(tokenAddress, receiver, amount); \\\\n }\\\\n function withdrawBTC(address payable receiver, uint256 amount) external onlyOwner {\\\\n require(amount <= address(this).balance,\\\\\\\"BTC_Not_Enough\\\\\\\");\\\\n require(receiver != address(0),\\\\\\\"Receiver_Should_Not_Zero_Address\\\\\\\");\\\\n (bool success, bytes memory returnData) = receiver.call{value: amount}(\\\\\\\"\\\\\\\");\\\\n require(success, string(returnData));\\\\n emit Withdrawn(address(0), receiver, amount);\\\\n }\\\\n\\\\n function transferOwnership(address newOwner) external onlyOwner {\\\\n require(newOwner != address(0),\\\\\\\"Owner_Should_Not_Zero_Address\\\\\\\");\\\\n owner = newOwner;\\\\n emit TransferOwnership(newOwner);\\\\n }\\\\n function setOperator(address newOp,bool _on) external onlyOwner {\\\\n require(newOp != address(0),\\\\\\\"Operator_Should_Not_Zero_Address\\\\\\\");\\\\n operators[newOp] = _on;\\\\n emit SetOperator(newOp,_on);\\\\n }\\\\n\\\\n function setMaxOutput(uint256 newValue) external onlyOwner {\\\\n MAX_BTC_AMOUNT = newValue;\\\\n emit SetMaxOutput(newValue);\\\\n }\\\\n function splitSignature(bytes memory sig)\\\\n internal\\\\n pure\\\\n returns (bytes32 r, bytes32 s, uint8 v)\\\\n {\\\\n require(sig.length == 65, \\\\\\\"Invalid_Signature_Length\\\\\\\");\\\\n\\\\n assembly {\\\\n /*\\\\n First 32 bytes stores the length of the signature\\\\n\\\\n add(sig, 32) = pointer of sig + 32\\\\n effectively, skips first 32 bytes of signature\\\\n\\\\n mload(p) loads next 32 bytes starting at the memory address p into memory\\\\n */\\\\n\\\\n // first 32 bytes, after the length prefix\\\\n r := mload(add(sig, 32))\\\\n // second 32 bytes\\\\n s := mload(add(sig, 64))\\\\n // final byte (first byte of the next 32 bytes)\\\\n v := byte(0, mload(add(sig, 96)))\\\\n }\\\\n\\\\n // implicitly return (r, s, v)\\\\n }\\\\n \\\\n function verifySignture(\\\\n address approver,\\\\n address tokenAddress,\\\\n uint256 amountIn, \\\\n uint256 price,\\\\n uint256 deadline,\\\\n uint8 v,\\\\n bytes32 r,\\\\n bytes32 s\\\\n ) internal {\\\\n bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, approver, tokenAddress, amountIn, price, _useNonce(approver), deadline));\\\\n\\\\n bytes32 hash = _hashTypedDataV4(structHash);\\\\n\\\\n address signer = ECDSA.recover(hash, v, r, s);\\\\n require(signer == approver,\\\\\\\"Signer_Not_Signture_Owner\\\\\\\");\\\\n }\\\\n\\\\n function nonces(address _owner) public view virtual override returns (uint256) {\\\\n return super.nonces(_owner);\\\\n }\\\\n\\\\n function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\\\\n return _domainSeparatorV4();\\\\n }\\\\n\\\\n function name() public view virtual returns (string memory) {\\\\n return _nameString;\\\\n }\\\\n\\\\n receive() external payable {\\\\n emit Received(msg.sender, msg.value);\\\\n }\\\\n}\\\"}},\\\"settings\\\":{\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"viaIR\\\":true,\\\"evmVersion\\\":\\\"paris\\\",\\\"outputSelection\\\":{\\\"*\\\":{\\\"*\\\":[\\\"abi\\\",\\\"evm.bytecode\\\",\\\"evm.deployedBytecode\\\",\\\"evm.methodIdentifiers\\\",\\\"metadata\\\"],\\\"\\\":[\\\"ast\\\"]}},\\\"libraries\\\":{}}}\" } ] } or","s":"Get Contract Source Code for Verified Contract Source Codes","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-source-code-for-verified-contract-source-codes","p":81},{"i":96,"t":"https://api.btrscan.com/scan/api ?module=contract &action=getcontractcreation &contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163 Try this endpoint in your browser 🔗","s":"Get Contract Creator and Creation Tx Hash","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#get-contract-creator-and-creation-tx-hash","p":81},{"i":98,"t":"1、Current daily limit of 100 submissions per day per user (subject to change) 2、Only supports HTTP POST due to max transfer size limitations for HTTP GET 3、Contracts that use \"imports\" will need to have the code concatenated into one file as we do not support \"imports\" in separate files 4、List ofsupported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1 5、Upon successful submission you will receive a GUID (50 characters) as a receipt 6、You may use this GUID to track the status of your submission 7、Verified Source Codes will be displayed at the Verified Contracts page","s":"Verify Source Code (beta)","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#verify-source-code-beta","p":81},{"i":100,"t":"//Submit Source Code for Verification $.ajax({ type: \"POST\", //Only POST supported url: \"//api.btrscan.com/scan/api\", //Set to the correct API url for Other Networks data: { apikey: $('#apikey').val(), //A valid API-Key is required module: 'contract', //Do not change action: 'verifysourcecode', //Do not change contractaddress: $('#contractaddress').val(), //Contract Address starts with 0x... sourceCode: $('#sourceCode').val(), //Contract Source Code (Flattened if necessary) codeformat: $('#codeformat').val(), //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support contractname: $('#contractname').val(), //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20) compilerversion: $('#compilerversion').val(), //see https://api-testnet.bitlayer.org/scan/solcversions for list of support versions optimizationUsed: $('#optimizationUsed').val(), //0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file) runs: 200, //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file) constructorArguements: $('#constructorArguements').val(), //if applicable evmversion: $('#evmVersion').val(), //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file) licenseType: $('#licenseType').val(), //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://api-testnet.bitlayer.org/scan/contract-license-types }, success: function (result) { console.log(result); if (result.status == \"1\") { //1 = submission success, use the guid returned (result.result) to check the status of your submission. // Average time of processing is 30-60 seconds document.getElementById(\"postresult\").innerHTML = result.status + \";\" + result.message + \";\" + result.result; // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status } else { //0 = error document.getElementById(\"postresult\").innerHTML = result.status + \";\" + result.message + \";\" + result.result; } console.log(\"status : \" + result.status); console.log(\"result : \" + result.result); }, error: function (result) { console.log(\"error!\"); document.getElementById(\"postresult\").innerHTML = \"Unexpected Error\" } });","s":"Source Code Submission Gist (returns a guid as part of the result upon success):","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#source-code-submission-gist-returns-a-guid-as-part-of-the-result-upon-success","p":81},{"i":102,"t":"//Check Source Code Verification Status $.ajax({ type: \"GET\", url: \"https://api-testnet.bitlayer.org/scan/api\", data: { apikey: $('#apikey').val(), guid: 'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn', //Replace with your Source Code GUID receipt above module: \"contract\", action: \"checkverifystatus\" }, success: function (result) { console.log(\"status : \" + result.status); //0=pending 1=pass 2=fail console.log(\"message : \" + result.message); //Pass - Verified, Fail - Unable to verify Pending in queue console.log(\"result : \" + result.result); //result explanation $('#guidstatus').html(\">> \" + result.result); }, error: function (result) { alert('error'); } });","s":"Check Source code verification submission status:","u":"/docs/Bitlayer Scan APIs/Contracts","h":"#check-source-code-verification-submission-status","p":81},{"i":104,"t":"This reference guide provides a listing of the different Bitlayer networks and public RPC endpoints.","s":"Networks and RPC Enpoints","u":"/docs/BitlayerNetwork/Networks","h":"","p":103},{"i":106,"t":"Parameter Value Network Name Bitlayer Mainnet Chain ID 200901 Currency Symbol BTC Explorer https://www.btrscan.com Public RPC URLs https://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer WebSocket wss://ws.bitlayer.org wss://ws.bitlayer-rpc.com Contract Addresses Refer to the Contract Addresses page Connect Wallet Click here to connect your wallet to Bitlayer Mainnet Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin Click the above link to know more about our Mainnet-V1.","s":"Bitlayer Mainnet","u":"/docs/BitlayerNetwork/Networks","h":"#bitlayer-mainnet","p":103},{"i":108,"t":"Parameter Value Network Bitlayer Testnet Chain ID 200810 Currency Symbol BTC Explorer https://testnet-scan.bitlayer.org Public RPC URL https://testnet-rpc.bitlayer.org WebSocket wss://testnet-ws.bitlayer.org wss://testnet-ws.bitlayer-rpc.com Contract Addresses Refer to the Contract Addresses page Connect Wallet Click here to connect your wallet to Bitlayer Testnet tip The \"currency symbol\" is required by some wallets like MetaMask.","s":"Bitlayer Testnet","u":"/docs/BitlayerNetwork/Networks","h":"#bitlayer-testnet","p":103},{"i":110,"t":"Provider Name Provider URL Ankr https://bitlayer-rpc.com/","s":"Node Providers","u":"/docs/BitlayerNetwork/Networks","h":"#node-providers","p":103},{"i":112,"t":"Bitlayer provides all JSON-RPC API methods listed on Ethereum along with several custom methods.","s":"JSON-RPC","u":"/docs/BitlayerNetwork/Json-RPC","h":"","p":111},{"i":114,"t":"This method returns logs of internal transactions by the hash of a transaction.","s":"eth_getTraceActionByTxHash","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbytxhash","p":111},{"i":116,"t":"DATA, 32 Bytes: Hash of a transaction. Object: Filter options: fromUser: DATA|Array, 20 Bytes (optional) - Address of the sender. toBlock: DATA|Array, 20 Bytes (optional) - Address of the receiver. opCode: String (optional) - An EVM opcode for a transaction's log. minValue: QUANTITY|TAG (optional) - The minimal value or amount transferred in BRC.","s":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters","p":111},{"i":118,"t":"An object containing an internal transaction's log, or null if no log was found: transactionHash: DATA, 32 Bytes - Hash of the transaction. blockHash: DATA, 32 Bytes - Hash of the block (null if pending). blockNumber: QUANTITY - Block number of the transaction. logs: Array of log objects generated by the transaction: from: DATA, 20 Bytes - Address of the sender. to: DATA, 20 Bytes - Address of the receiver (null if it's a contract creation transaction). value: QUANTITY - Value transferred in BRC. success: Boolean - Indicates whether the call was successful. opcode: DATA - The EVM opcode of the transaction's log. depth: QUANTITY - The depth of the call stack in EVM. gas: QUANTITY - Gas provided by the sender. gas_used: QUANTITY - Amount of gas used by the transaction. input: DATA - Data sent along with the transaction. trace_address: QUANTITY|Array - Array representing the call trace depth during execution.","s":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns","p":111},{"i":120,"t":"Request: curl -X POST --data '{ \"jsonrpc\":\"2.0\", \"method\":\"eth_getTraceActionByTxHash\", \"params\":[\"0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694\"], \"id\":1}' Response: { \"id\": 1, \"jsonrpc\": \"2.0\", \"result\": [ { \"transactionHash\": \"0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694\", \"blockHash\": \"0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3\", \"blockNumber\": 54, \"logs\": [ { \"from\": \"0x2e46771cff3636a42f363826ff8a94d3a738e075\", \"to\": \"0x000000000000000000000000000000000000f000\", \"value\": 0, \"success\": true, \"opcode\": \"CALL\", \"depth\": 18446744073709551615, \"gas\": 165629, \"gas_used\": 162996, \"input\": \"0x6374299e0000000000000000000000009f01eb5eb4dbea8b2cecc679050819990ab68a1a000000000000000000000000000000000000000000295be96e64066972000000\", \"trace_address\": [] }, { \"from\": \"0x000000000000000000000000000000000000f000\", \"to\": \"0x4b20bbf3652696b9afd27b8f88ff8b7c1f361336\", \"value\": 0, \"success\": true, \"opcode\": \"STATICCALL\", \"depth\": 0, \"gas\": 157800, \"gas_used\": 2443, \"input\": \"0x00000000\", \"output\": \"0x0000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075\", \"trace_address\": [ 0 ] }, { \"from\": \"0x000000000000000000000000000000000000f000\", \"to\": \"0xf4340cf5f3891a3827713b33f769b501a0b5b122\", \"value\": 0, \"success\": true, \"opcode\": \"STATICCALL\", \"depth\": 0, \"gas\": 150040, \"gas_used\": 2814, \"input\": \"0x0000000000000000000000000000000000000000007c13bc4b2c133c560000000000000000000000000000000000000000000000007c13bc4b2c133c5600000000000000\", \"output\": \"0x0000000000000000000000000000000000000000007c13bc4b2c133c56000000\", \"trace_address\": [ 1 ] } ] } ] }","s":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example","p":111},{"i":122,"t":"Returns logs of internal transactions by block number.","s":"eth_getTraceActionByBlockNumber","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbyblocknumber","p":111},{"i":124,"t":"QUANTITY|TAG - integer of a block number Object - The filter options: fromUser: DATA|Array, 20 Bytes - (optional) address of the sender. toBlock: DATA|Array, 20 Bytes - (optional) address of the receiver. opCode: String - (optional) An EVM opcode for a transaction's log. minValue: QUANTITY|TAG - (optional) the minimal value or amount transferred in BRC.","s":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters-1","p":111},{"i":126,"t":"Same as eth_getTraceActionByTxHash","s":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns-1","p":111},{"i":128,"t":"Request: curl -X POST --data '{ \"jsonrpc\":\"2.0\", \"method\":\"eth_getTraceActionByBlockNumber\", \"params\":[\"0x36\"], \"id\":1}' Result see eth_getTraceActionByTxHash","s":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example-1","p":111},{"i":130,"t":"Returns logs of internal transactions by block hash.","s":"eth_getTraceActionByBlockHash","u":"/docs/BitlayerNetwork/Json-RPC","h":"#eth_gettraceactionbyblockhash","p":111},{"i":132,"t":"DATA, 32 Bytes - Hash of a block.","s":"Parameters","u":"/docs/BitlayerNetwork/Json-RPC","h":"#parameters-2","p":111},{"i":134,"t":"Same as eth_getTraceActionByTxHash","s":"Returns","u":"/docs/BitlayerNetwork/Json-RPC","h":"#returns-2","p":111},{"i":136,"t":"Request: curl -X POST --data '{ \"jsonrpc\":\"2.0\", \"method\":\"eth_getTraceActionByBlockHash\", \"params\":[\"0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3\"], \"id\":1}' Result see eth_getTraceActionByTxHash","s":"Example","u":"/docs/BitlayerNetwork/Json-RPC","h":"#example-2","p":111},{"i":139,"t":"Name Symbol Decimal Contract Address Tether USD USDT 6 0xfe9f969faf8ad72a83b761138bf25de87eff9dd2 USD Coin USDC 6 0x9827431e8b77e87c9894bd50b055d6be56be0030 Ethereum Token ETH 18 0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2","s":"Mainnet","u":"/docs/BitlayerNetwork/PegTokens","h":"#mainnet","p":137},{"i":141,"t":"Explore transactions, blocks, and addresses on the Bitlayer network using the provided block explorers. These tools offer detailed insights into network activity on both the testnet and mainnet environments.","s":"Block Explorers","u":"/docs/DeveloperResources/Block Explorers","h":"","p":140},{"i":143,"t":"Access the Bitlayer mainnet block explorer here: BTRScan","s":"Mainnet","u":"/docs/DeveloperResources/Block Explorers","h":"#mainnet","p":140},{"i":145,"t":"Access the Bitlayer testnet block explorer here: Bitlayer Testnet Explorer","s":"Testnet","u":"/docs/DeveloperResources/Block Explorers","h":"#testnet","p":140},{"i":147,"t":"This guide walks you through compiling and running Bitlayer.","s":"Compile, Run and Deploy","u":"/docs/Build/Compile and Run","h":"","p":146},{"i":149,"t":"Download the Bitlayer source code using the following git command: git clone https://github.com/bitlayer-org/bitlayer-l2.git","s":"Download","u":"/docs/Build/Compile and Run","h":"#download","p":146},{"i":151,"t":"Before compiling Bitlayer, make sure you have Golang installed on your system. Refer to the official Golang website (https://go.dev/dl/) for download and installation instructions.","s":"Install Golang","u":"/docs/Build/Compile and Run","h":"#install-golang","p":146},{"i":153,"t":"Navigate to the directory where you cloned the Bitlayer source code using: cd /path/to/bitlayer-l2 Compile Bitlayer by running the following command: make geth This will create a compiled binary in the build/bin folder.","s":"Compile","u":"/docs/Build/Compile and Run","h":"#compile","p":146},{"i":155,"t":"Get a list of available options and their descriptions by running: ./build/bin/geth --help Refer to the Command-line Options documentation for specific usage details. Custom Option: Bitlayer offers a custom option named --traceaction: --traceaction value (default: 0) Trace internal tx call/create/suicide action, 0=no trace, 1=trace only native token > 0, 2=trace all This option allows you to enable or disable custom JSON-RPC methods for tracing internal transactions.","s":"Run","u":"/docs/Build/Compile and Run","h":"#run","p":146},{"i":157,"t":"Introduce systemd management configs.","s":"Deployment","u":"/docs/Build/Compile and Run","h":"#deployment","p":146},{"i":159,"t":"Minimum​ 8core 16g ssd iops>5k Recommended​ 16core 32g ssd iops>5k Network & Port​ External IP Address Port TCP/UDP 31031","s":"Hardware","u":"/docs/Build/Compile and Run","h":"#hardware","p":146},{"i":161,"t":"config.toml [Eth] SyncMode = \"snap\" TrieCleanCacheRejournal= 300000000000 TrieTimeout = 20000000000 [Eth.Miner] GasFloor = 40000000 GasCeil = 40000000 GasPrice = 100000000 Recommit = 3000000000 [Eth.TxPool] NoLocals = true Journal = \"transactions.rlp\" Rejournal = 600000000000 PriceLimit = 100000000 PriceBump = 10 AccountSlots = 64 GlobalSlots = 10240 AccountQueue = 32 GlobalQueue = 1024 Lifetime = 1800000000000 [Node] DataDir = \"/data/bitlayer-l2/chain/data\" InsecureUnlockAllowed = true NoUSB = true IPCPath = \"geth.ipc\" HTTPHost = \"0.0.0.0\" HTTPPort = 8545 HTTPCors = [\"*\"] HTTPVirtualHosts = [\"*\"] HTTPModules = ['eth', 'net', 'web3'] WSHost = \"0.0.0.0\" WSPort = 8546 WSModules = ['eth', 'net', 'web3'] GraphQLVirtualHosts = [\"localhost\"] [Node.P2P] MaxPeers = 50 NoDiscovery = false ListenAddr = \":31031\" EnableMsgEvents = false [Node.HTTPTimeouts] ReadTimeout = 30000000000 WriteTimeout = 30000000000 IdleTimeout = 120000000000 use snap sync in the config, if full needed - change this line SyncMode = \"snap\" to SyncMode = \"full\"","s":"Chain Node","u":"/docs/Build/Compile and Run","h":"#chain-node","p":146},{"i":163,"t":"To show full detail help info of all flags, type geth help or geth -h run.sh #!/usr/bin/env bash /data/bitlayer-l2/chain/geth-linux-amd64 \\ --config /data/bitlayer-l2/chain/config.toml \\ --log.file /data/bitlayer-l2/chain/logs/chain.log \\ --log.rotate=true \\ --authrpc.port 8445 \\ --traceaction 2 \\ --verbosity 3 if you need to use it as archive node, add: --syncmode full \\ --gcmode archive \\ so: #!/usr/bin/env bash /data/bitlayer-l2/chain/geth-linux-amd64 \\ --config /data/bitlayer-l2/chain/config.toml \\ --log.file /data/bitlayer-l2/chain/logs/chain.log \\ --log.rotate=true \\ --authrpc.port 8445 \\ --traceaction 2 \\ --syncmode full \\ --gcmode archive \\ --verbosity 3 If no network flags were provided, the node will connect the bitlayer mainnet by default. If you want to connect to bitlayer testnet, add: --testnet","s":"Start Bash","u":"/docs/Build/Compile and Run","h":"#start-bash","p":146},{"i":165,"t":"[Unit] Description=bitlayer-l2 chain service [Service] Type=simple ExecStart=/bin/sh /data/bitlayer-l2/chain/run.sh WorkingDirectory=/data/bitlayer-l2/chain TimeoutSec=600 Restart=on-failure RestartSec=5s LimitNOFILE=65536 [Install] WantedBy=multi-user.target","s":"systemd config","u":"/docs/Build/Compile and Run","h":"#systemd-config","p":146},{"i":167,"t":"Bitlayer is an EVM-compatible blockchain, and can enable applications and developers from the existing Ethereum ecosystem to migrate to Bitlayer at low cost, eliminating the need for substantial modifications or rewrites. If you want to interact with the Dapps on Bitlayer Testnet, your first stop is going to be to a “faucet” to fill up your “tank”. Here is a faucet directly distributes Bitlayer Testnet tokens: https://www.bitlayer.org/faucet It may take a few seconds for them to appear, but you can check the status by looking for a transaction for your address in Bitlayer Explorer. This faucet allows developers to request 0.05 BTC test tokens for use in development and testing. You can obtain Bitlayer Testnet tokens every 24 hours for development and the testnet token has no financial value and cannot be traded at a real price.","s":"Faucets","u":"/docs/DeveloperResources/Faucets","h":"","p":166},{"i":169,"t":"Particle Network's BTC Connect is the first account abstraction protocol for the Bitcoin ecosystem. It unifies smart accounts on Bitcoin Layer-2s and standard BTC accounts through native wallet interfaces. To achieve this, Particle Network has deployed ERC-4337 AA infrastructure natively on Bitlayer, which developers can tap into to leverage smart accounts. BTC Connect achieves this by, firstly, allowing users to connect to your dApp with their UniSat, OKX, TokenPocket, Bybit, or Bitget wallet. Upon connecting, a smart account is generated on Bitlayer and assigned to their BTC account. This smart account can then be used and authenticated directly through their BTC wallet, providing native Bitcoin users with a simple interface to interact with applications on Bitlayer. BTC Connect natively supports Bitlayer within its flagship SDK, @particle-network/btc-connectkit, and has been deployed on Testnet and Mainnet. This document will provide an initial introduction and step-by-step guide to working with BTC Connect on Bitlayer through this SDK.","s":"BTC Connect (Account Abstraction)","u":"/docs/DeveloperResources/BTC Connect","h":"","p":168},{"i":171,"t":"Throughout this page, you'll find details on installing, configuring, initializing, and completing a full integration of BTC Connect within your application on Bitlayer. Specifically, this guide will contextualize this process by building a simple create-react-app demo application. Before starting, you can find this application here. To learn more about BTC Connect, head over to Particle Network's documentation. Before configuring and implementing BTC Connect, you'll need to meet the following prerequisites: Have a project and application configured within the Particle dashboard. Prepare a create-react-app or Next.js application structure to integrate BTC Connect with the required dependencies installed.","s":"Introduction","u":"/docs/DeveloperResources/BTC Connect","h":"#introduction","p":168},{"i":173,"t":"Particle Network's dashboard acts as the central control panel for all applications that use BTC Connect or Smart Wallet-as-a-Service. To use and authenticate BTC Connect, you'll need to retrieve various keys from this dashboard, which you can be do through the following process: Head over to the Particle dashboard, and either login or create a new account. Create a new project for your application. After opening this project, create a web application representing your dApp. Finally, with an application made, copy your Project ID, Client Key, and App ID. You'll be using these three values momentarily to configure BTC Connect. If applicable, you can save these within corresponding environment variables, such as REACT_APP_PROJECT_ID, REACT_APP_CLIENT_KEY, and REACT_APP_APP_ID.","s":"Dashboard Configuration","u":"/docs/DeveloperResources/BTC Connect","h":"#dashboard-configuration","p":168},{"i":175,"t":"Within your React-based application (in this example, we'll be using create-react-app), you'll need to install two key dependencies related to BTC Connect. These are: @particle-network/btc-connectkit, the primary SDK for BTC Connect. @particle-network/chains, a collection of chain objects including BitlayerTestnet and Bitlayer. To install these libraries, run one of the following commands within your project: yarn add @particle-network/btc-connectkit @particle-network/chains # OR npm install @particle-network/btc-connectkit @particle-network/chains # Other package managers such as pnpm would work too.","s":"Dependency Installation","u":"/docs/DeveloperResources/BTC Connect","h":"#dependency-installation","p":168},{"i":177,"t":"BTC Connect (@particle-network/btc-connectkit) is a React-based SDK. Therefore, configuring it and preparing for integration will require the initialization of a corresponding React component, which will wrap your core application component or JSX. In this example, this will take place within index.tsx. Within your index.tsx file (or the equivalent location for your project), import the following objects from @particle-network/btc-connectkit: ConnectProvider, the React component used for configuration. One, or multiple of the following wallets: OKXConnector UnisatConnector BitgetConnector TokenPocketConnector BybitConnector With these imported, you're ready to configure the ConnectProvider component through its options and connectors parameters. Starting with options, you'll need to define the following properties: projectId, clientKey, and appId. These were previously retrieved from the Particle dashboard. aaOptions, which contains accountContracts, taking: BTC, the smart account implementation you'll be leveraging. chainIds, one or multiple chains that your application will support. In this case, you can either use Bitlayer's chain ID, 200810, or BitlayerTestnet.id from @particle-network/chains. version, the BTC smart account version you intend to use. For Bitlayer, this should be 2.0.0. If you intend to use more than just Bitlayer, you may need to define another instance of BTC using version 1.0.0. For more information on which chains support 1.0.0 and which support 2.0.0, head over to Particle Network's documentation. walletOptions, which contains: visible, a Boolean determining whether or not Particle Network's embedded wallet modal will be shown after a user connects their Bitcoin wallet. If set to true, users will have direct access to their associated smart accounts through this embedded interface. Otherwise, if false, developers will need to retrieve and reflect wallet information, such as balances, independently. Once you've defined options using the parameters detailed above, you'll need to select the wallets you'd like to be supported within BTC Connect through the connectors property. connectors is simply an array of wallet objects ( previously imported), such as OKXConnector. These should be initialized through syntax such as [new OKXConnector(), new UnisatConnector()]. Below is an example of what a configured instance of ConnectProvider typically looks like; this is demonstrated through a central index.tsx file: import React from 'react'; import ReactDOM from 'react-dom/client'; import { ConnectProvider, OKXConnector, // UnisatConnector, // BitgetConnector, // -- Only one connector is required, although any combination of these five may be used. TokenPocketConnector, // BybitConnector // } from '@particle-network/btc-connectkit'; import { BitlayerTestnet } from '@particle-network/chains'; // The component in which you're using BTC Connect import App from './App'; ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( ) Once ConnectProvider is configured, you're ready to implement BTC Connect through your central application component.","s":"Configuring BTC Connect","u":"/docs/DeveloperResources/BTC Connect","h":"#configuring-btc-connect","p":168},{"i":179,"t":"At this point, you should have: Created a new project and application through the Particle dashboard. Installed @particle-network/btc-connectkit and @particle-network/chains. Configured BTC Connect through ConnectProvider. Now, to integrate BTC Connect, we'll do the following: Configure Ethers, or any other standard Web3 library (such as Web3.js) using hooks from @particle-network/btc-connectkit. Prepare a \"Connect Wallet\" button. Test BTC Connect by executing transactions on both Bitlayer and native Bitcoin.","s":"Application Implementation","u":"/docs/DeveloperResources/BTC Connect","h":"#application-implementation","p":168},{"i":181,"t":"Interaction with BTC Connect can be facilitated either natively through the SDK –with functions from the useETHProvider hook, such as buildUserOp (for constructing transactions) and sendUserOp (for executing them), or through an external Web3 library such as Ethers. In this example, we'll focus on the latter. Specifically, leveraging the user's smart account on Bitlayer through Ethers requires using BTC Connect's EIP-1193 provider object. After a user connects, this object will be populated with an EVM account instance. To retrieve this object, you'll need to define provider from the useETHProvider hook. Using provider, an instance of Ethers (or Web3.js, viem, etc.) can be constructed, as shown below. import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit'; import { ethers } from 'ethers'; const App = () => { const { provider } = useETHProvider(); const customProvider = new ethers.providers.Web3Provider(provider, \"any\"); ... }; This Ethers instance can be used directly for transaction construction and execution. Signatures will be pushed to the connected Bitcoin wallet directly through the means of the EIP-1193 provider.","s":"Part 1: Interacting with BTC Connect through an EIP-1193 Provider","u":"/docs/DeveloperResources/BTC Connect","h":"#part-1-interacting-with-btc-connect-through-an-eip-1193-provider","p":168},{"i":183,"t":"Wallet connection can be implemented through one of two ways with BTC Connect: The first method requires using BTC Connect's built-in connection modal, which contains buttons for the wallets previously defined within connectors (on ConnectProvider). Below is a screenshot of this interface. Alternatively, direct shortcuts to these wallets (independent from the above interface) can be configured in scenarios where you may want to design your own wallet connection interface. Starting with the built-in modal, this can be opened by simply calling openConnectModal from the useConnectModal hook; upon calling, the aforementioned interface will be opened. An example of this has been included below: import { useETHProvider, useBTCProvider, useConnectModal, useConnector } from '@particle-network/btc-connectkit'; import { ethers } from 'ethers'; import './App.css'; const App = () => { const { openConnectModal } = useConnectModal(); ... openConnectModal(); ... } For a more hands-on approach to designing your own interface, you can connect to individual wallets using the connect function from the useConnector hook. This function will simply take a string representing the wallet you'd like to connect to, such as 'unisat', as shown below. import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit'; import { ethers } from 'ethers'; import './App.css'; const App = () => { const { connect } = useConnector(); ... connect('unisat'); // Or 'okx', 'bybit', etc. ... }","s":"Part 2: Facilitating Wallet Connection","u":"/docs/DeveloperResources/BTC Connect","h":"#part-2-facilitating-wallet-connection","p":168},{"i":185,"t":"Bitlayer (EVM)​ Now that you've facilitated wallet connection and configured a corresponding Ethers object, you're ready to execute transactions on Bitlayer using the associated smart account generated from the user's Bitcoin wallet. Using Ethers, this is done by constructing a simple transaction (using standard fields such as to, value, data, etc.) and executing it using the signer property with customProvider.getSigner(). Any transaction that can be constructed and executed through Ethers translates 1:1 within this flow. Below is an example that burns 0.001 BTC. const executeTxEvm = async () => { const signer = customProvider.getSigner(); const tx = { to: \"0x000000000000000000000000000000000000dEaD\", // Burn address value: ethers.utils.parseEther('0.001'), // 0.001 BTC data: \"0x\" // Optional, only define for contract interaction or related operations }; // Gasless due to usage of SendTransactonMode.Gasless within customProvider const txResponse = await signer.sendTransaction(tx); const txReceipt = await txResponse.wait(); notification.success({ message: \"Transaction Successful\", description: (
Transaction Hash: {txReceipt.transactionHash}
) }); }; Upon executing, a signature will be requested from the connected Bitcoin wallet. This signature will directly authenticate the associated smart account on Bitlayer. Bitcoin (L1)​ Alternatively, the same wallet connection can be used to simultaneously execute transactions on native Bitcoin. To handle this, BTC Connect has the useBTCProvider hook, containing functions such as sendBitcoin. sendBitcoin will send a standard P2P transaction on Bitcoin, requesting a signature from the user's connected Bitcoin wallet. The snippet shown below demonstrates an example of this through a custom function, executeTxBtc. import { useETHProvider, useBTCProvider, useConnector, useConnector } from '@particle-network/btc-connectkit'; import './App.css'; const App = () => { const { sendBitcoin, accounts } = useBTCProvider(); const executeTxBtc = async () => { // Sends 1 satoshi back to the sender const hash = await sendBitcoin(accounts[0], 1); notification.success({ message: 'Transaction Successful', description: (
Transaction Hash: {hash}
) }); }; };","s":"Part 3: Transaction Execution","u":"/docs/DeveloperResources/BTC Connect","h":"#part-3-transaction-execution","p":168},{"i":187,"t":"Through the above guide, you should now understand how to: Configure the Particle Network dashboard. Install and initialize BTC Connect (@particle-network/btc-connectkit). Construct a custom Ethers provider to manage the user's smart account. Facilitate wallet connection. Build and execute transactions on both Bitlayer and native Bitcoin. To view and try a complete demo application based on the snippets shown in this guide, visit our dedicated GitHub repository. Particle Network has extensive documentation covering the implementation of BTC Connect within applications built on Bitlayer, which can be found here.","s":"Conclusion","u":"/docs/DeveloperResources/BTC Connect","h":"#conclusion","p":168},{"i":189,"t":"Graph Node is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL. Official website Github","s":"Indexing-The-Graph","u":"/docs/DeveloperResources/TheGraph","h":"","p":188},{"i":191,"t":"The Graph official has not support bitlayer, will coming soon.","s":"The Graph Official","u":"/docs/DeveloperResources/TheGraph","h":"#the-graph-official","p":188},{"i":193,"t":"We recommend following the Official documentation for deployment. The next operation is only intended as a simple setup tutorial for reference. Set up graph-node​ For convenience reasons, we use the official docker compose for node, database, and IPFS deployment. Note that the value of the ethereum field in docker-compose.yml is replaced with Bitlayer's node connection information. graph-node: image: graphprotocol/graph-node ports: - '8000:8000' - '8001:8001' - '8020:8020' - '8030:8030' - '8040:8040' depends_on: - ipfs - postgres environment: postgres_host: postgres postgres_user: graph-node postgres_pass: let-me-in postgres_db: graph-node ipfs: 'ipfs:5001' ethereum: 'mainnet:http://127.0.0.1:8545' #replaced with bitlayer rpc info RUST_LOG: info Note: The node connected to graph-node needs to be in archive mode (add flag --syncmode full --gcmode archive when starting the node), we recommend each user to build their own RPC node.","s":"Project Local Graph Node","u":"/docs/DeveloperResources/TheGraph","h":"#project-local-graph-node","p":188},{"i":195,"t":"You can migrate your subgraph from bitlayer graph node or project local graph node to offical environment when the graph enables bitlayer. To migrate smoothly, please set dataSources.source.startBlock in subgraph.yaml, we suggest using the block in which the contract was created.","s":"Migration","u":"/docs/DeveloperResources/TheGraph","h":"#migration","p":188},{"i":198,"t":"Subgraph is a customized, open-source solution for indexing and accessing real-time blockchain data through the GraphQL API. They provide developers with powerful tools to build, customize, and access blockchain data according to their needs. This document will guide you through creating, deploying, and querying this subgraph.","s":"What is a Subgraph?","u":"/docs/DeveloperResources/Subgraph","h":"#what-is-a-subgraph","p":196},{"i":200,"t":"Before getting started, make sure you have: Registered a Bifrost account and obtained an API key. Please visit one of the following links and fill out the form to apply for an API key: Apply for API key Installed the Graph CLI. Installed the Yarn package manager.","s":"Prerequisites","u":"/docs/DeveloperResources/Subgraph","h":"#prerequisites","p":196},{"i":202,"t":"Choose a subgraph name in the format /, for example, \"alice/mysubgraph\". : This is your username on Bifrost. : This is the specific name you choose for your subgraph, which usually reflects the functionality of the subgraph or the smart contract it indexes. Run the following command in your terminal, replacing {apikey} with your Bifrost API key obtained from the links above and with your chosen subgraph name: graph create --node https://bifrost.bfno.de/{apikey} ","s":"Creating a Subgraph","u":"/docs/DeveloperResources/Subgraph","h":"#creating-a-subgraph","p":196},{"i":204,"t":"Your tools for building and testing smart contracts can work on Bitlayer smoothly as Bitlayer boasting 100% EVM and Ethereum toolchain compatibility. Note: We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed.","s":"Quick Start Guide","u":"/docs/Build/QuickStart","h":"","p":203},{"i":207,"t":"Parameter Value Network Name Bitlayer Mainnet Chain ID 200901 Currency Symbol BTC Explorer https://www.btrscan.com Public RPC URLs https://rpc.bitlayer.org, https://rpc.bitlayer-rpc.com, https://rpc.ankr.com/bitlayer WebSocket wss://ws.bitlayer.org wss://ws.bitlayer-rpc.com Contract Addresses Refer to the Contract Addresses page Connect Wallet Click here to connect your wallet to Bitlayer Mainnet Introducing Bitlayer Mainnet-V1: Unlocking the Potential of Bitcoin Click the above link to know more about our Mainnet-V1.","s":"Bitlayer Mainnet","u":"/docs/Build/QuickStart","h":"#bitlayer-mainnet","p":203},{"i":209,"t":"Parameter Value Network Bitlayer Testnet Chain ID 200810 Currency Symbol BTC Explorer https://testnet-scan.bitlayer.org Public RPC URL https://testnet-rpc.bitlayer.org WebSocket wss://testnet-ws.bitlayer.org wss://testnet-ws.bitlayer-rpc.com Contract Addresses Refer to the Contract Addresses page Connect Wallet Click here to connect your wallet to Bitlayer Testnet tip The \"currency symbol\" is required by some wallets like MetaMask. Here are the quick access commands for the Bitlayer Testnet: Hardhat​ Modify your Hardhat config file hardhat.config.ts to point at the Bitlayer Testnet public RPC. const config: HardhatUserConfig = { ... networks: { bitlayer: { url: \"https://testnet-rpc.bitlayer.org\" || \"\", accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], }, }, }; Foundry​ To deploy using the Bitlayer Testnet Public RPC, run: forge create ... --rpc-url=https://https://testnet-rpc.bitlayer.org/ --legacy Remix Web IDE​ After compiling your contracts, the easiest way to deploy using Remix is by setting up Metamask, then selecting the Bitlayer Testnet network. In the “Deploy and Run Transactions” tab, use the “Environment” drop-down and select “Injected Provider - MetaMask.” Connect your wallet and select the Bitlayer Testnet. Your account should be selected automatically in Remix, and you can click “Deploy.” Truffle​ caution The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Assuming you already have a Truffle environment setup, go to the Truffle configuration file, truffle.js. Make sure to have installed HDWalletProvider: npm install @truffle/hdwallet-provider@1.4.0 const HDWalletProvider = require(\"@truffle/hdwallet-provider\") ... module.exports = { networks: { bitlayer: { provider: () => new HDWalletProvider(process.env.PRIVATE_KEY, \"https://testnet-rpc.bitlayer.org\"), network_id: '*', }, } } Brownie​ To add the Bitlayer Testnet, run the following command: brownie networks add Bitlayer host=https://testnet-rpc.bitlayer.org chainid=200810 To set this as your default network, add the following in your project config file: networks: default: bitlayer Another way to add the Bitlayer Testnet is to create a yaml file and run a command to add it. This is an example of a yaml file called network-config.yaml live: - name: Ethereum networks: - chainid: 200810 explorer: https://testnet-scan.bitlayer.org host: https://testnet-rpc.bitlayer.org id: bitlayer name: Bitlayer Testnet To add the Bitlayer Testnet to the network list, run the following command: brownie networks import ./network-config.yaml To deploy on Bitlayer, run the following command. In this example, token.py is the script to deploy the smart contract. Replace this with the name of your script: brownie run token.py --network Bitlayer ethers.js​ Setting up a Bitlayer Testnet provider in an ethers script: import { ethers } from \"ethers\" const provider = new ethers.providers.JsonRpcProvider(\"https://testnet-rpc.bitlayer.org\") scaffold-eth​ To deploy using Scaffold-eth, you’ll need to point both your Hardhat and React settings at the Bitlayer Testnet. Configure Hardhat​ In the packages/hardhat/hardhat.config.js file, you’ll add the network and select it as the default network. ... // // Select the network you want to deploy to here: // const defaultNetwork = \"Bitlayer\"; ... module.exports = { ... networks: { ... Bitlayer: { url: \"https://testnet-rpc.bitlayer.org\", accounts: { mnemonic: mnemonic(), }, }, } ... } Be sure to fund the deployment wallet as well! Run yarn generate to create the wallet and yarn account to check its funds. Once funded, run yarn deploy --network Bitlayer to deploy on the Bitlayer testnet.","s":"Bitlayer Testnet","u":"/docs/Build/QuickStart","h":"#bitlayer-testnet","p":203},{"i":212,"t":"For interacting with Ethereum and other EVM networks, Bitlayer supports wallets such as: OKX Wallet - A versatile wallet for secure transactions. MetaMask - A browser extension with integrated dApp support. EVM-compatible wallets allow you to execute smart contracts and interact with decentralized applications across various EVM networks.","s":"EVM-Compatible Wallets","u":"/docs/DeveloperResources/Wallets","h":"#evm-compatible-wallets","p":210},{"i":214,"t":"For Bitcoin transactions, Bitlayer is compatible with wallets designed specifically for Bitcoin, including: Unisat - A secure wallet for Bitcoin enthusiasts. Xverse - A wallet focused on privacy and security for Bitcoin users. Bitcoin-only wallets provide optimized features for handling Bitcoin transactions and secure storage.","s":"Bitcoin-Exclusive Wallets","u":"/docs/DeveloperResources/Wallets","h":"#bitcoin-exclusive-wallets","p":210},{"i":216,"t":"EVM Networks (e.g., Ethereum Mainnet, Binance Smart Chain) Bitcoin Testnet (for testing and development purposes) Bitcoin Mainnet (for real Bitcoin transactions) Choosing the right network is essential for your transactions. The Testnet is ideal for practice and development, while the Mainnet is used for actual transactions.","s":"Networks Supported","u":"/docs/DeveloperResources/Wallets","h":"#networks-supported","p":210},{"i":218,"t":"Bitlayer provides a robust multi-signature smart contract wallet solution called Bitlayer Multisig. This wallet enhances security by requiring multiple signatures to approve transactions, ensuring that no single person can compromise the funds. Create a Bitlayer Multisig Wallet","s":"Multi-Signature Smart Contract Wallet","u":"/docs/DeveloperResources/Wallets","h":"#multi-signature-smart-contract-wallet","p":210},{"i":220,"t":"Bitlayer also supports MPC (Multi-Party Computation) wallets for enhanced security and privacy. A notable MPC wallet supported by Bitlayer is provided by Sinohope.","s":"MPC Wallet","u":"/docs/DeveloperResources/Wallets","h":"#mpc-wallet","p":210},{"i":222,"t":"Website:https://www.bitlayer.org/ Twitter: https://twitter.com/BitLayerLabs Discord: https://discord.com/invite/GGSjNyD8nj Telegram: https://t.me/bitlayerofficial Github: https://github.com/bitlayer-org Medium:https://medium.com/@Bitlayer Email: build@bitlayer.org","s":"Contact Details","u":"/docs/FAQs/Contact Details","h":"","p":221},{"i":226,"t":"Bitlayer is the first Layer 2 solution for Bitcoin that offers security equivalent to Bitcoin's own and Turing completeness. It is also the first Bitcoin Layer 2 solution based on BitVM paradigm. Bitlayer aims to enhance the Bitcoin ecosystem by providing secure scalability, promoting diversity of assets, and encouraging innovation. Ultimately, it seeks to offer users a faster, safer, and more flexible experience.","s":"Explore Bitlayer Technical Documentation","u":"/docs/Introduction/","h":"#explore-bitlayer-technical-documentation","p":223},{"i":228,"t":"At Bitlayer, our primary focus is to address the scalability challenges of the Bitcoin network. While Bitcoin remains the leading blockchain for value transfer, it faces limitations in terms of scalability and transaction costs. Bitlayer tackles these issues head-on by leveraging cutting-edge cryptographic protocols and virtual machine technology. Bitlayer is building a native Bitcoin Layer 2 using BitVM paradigm, it will achieve Bitcoin finality, trustless bridge, multiple virtual machine support. This means that developers can easily migrate their existing smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using familiar tools such as Ethereum JSON-RPC and Hardhat. The ingenious integration of Bitcoin smart contracts and Ethereum compatibility sets Bitlayer apart, verifying the integrity of Bitlayer's transactions and ensuring a high level of security, decentralization, and resistance to censorship. These achievements are made possible through recent advancements in cryptography, blockchain protocol design, and hardware optimization. For detailed insights into our technical architecture, please refer to the Bitlayer Technical Architecture section.","s":"Why Choose Bitlayer?","u":"/docs/Introduction/","h":"#why-choose-bitlayer","p":223},{"i":230,"t":"According to our roadmap, we, the Bitlayer Mainnet-V1 has launched and we are also glad to offer a testnet environment where you can experiment with Bitlayer's capabilities. Please refer to our Quick Start Guide to get started with our test network and explore the infinite possibilities of Bitcoin on both Bitlayer Testnet and Mainnet.","s":"Can I Start Using Bitlayer Today?","u":"/docs/Introduction/","h":"#can-i-start-using-bitlayer-today","p":223},{"i":232,"t":"We have launched the Bitlayer Mainnet-V1 in early April, our journey to further security&decentralization is far from over. We are committed to decentralizing each component of the stack, ensuring a resilient and robust network. Stay updated on our progress by following our Twitter or joining our active Discord / Telegram community. You can also connect with us on Medium to stay abreast of the latest Bitlayer developments.","s":"What Lies Ahead for Bitlayer?","u":"/docs/Introduction/","h":"#what-lies-ahead-for-bitlayer","p":223},{"i":235,"t":"There are two steps required to integrate into the defillama system. Add adapter to defillama Submit PR like: https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js","s":"Introduction","u":"/docs/FAQs/Defillama TVL integration","h":"#introduction","p":233},{"i":237,"t":"The following steps need to be completed: Fork repository: https://github.com/DefiLlama/DefiLlama-Adapters Create a new project adapter path under projects, for example: projects/[%PROJECT_TAG%]/index.js const { sumTokens2, } = require('../helper/unwrapLPs') async function tvl(api) { return sumTokens2({ owners: [ '[%CONTRACT_ADDR%]', ], tokens: ['[%TOKEN_ADDR_1%]', '[%TOKEN_ADDR_2%]'], api, }) //wbtc and usdt } module.exports = { btr: { tvl, } } [%PROJECT_TAG%] is the project name [%CONTRACT_ADDR%] is the contract address of the project [%TOKNE_ADDR_1%]、[%TOKEN_ADDR_2%] are the currency pair address that needs to be calculated For future references, if you add another token you can just add it here, you can do like this https://github.com/DefiLlama/DefiLlama-Adapters/pull/10229/files","s":"Step 1: Add adapter locally","u":"/docs/FAQs/Defillama TVL integration","h":"#step-1-add-adapter-locally","p":233},{"i":239,"t":"Submit PR, for example: https://github.com/DefiLlama/DefiLlama-Adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron-xyz/index.js","s":"Step 2: Submit PR","u":"/docs/FAQs/Defillama TVL integration","h":"#step-2-submit-pr","p":233},{"i":241,"t":"https://docs.llama.fi/list-your-project/submit-a-project","s":"Reference","u":"/docs/FAQs/Defillama TVL integration","h":"#reference","p":233},{"i":243,"t":"Name Category Website Defillama Project Path bitsmiley CDP https://www.bitsmiley.io/app/alphanet https://defillama.com/protocol/bitsmiley#information projects/bitsmiley-io macaron Dexes https://www.macaron.xyz/#/swap?lang=en https://defillama.com/protocol/macaron projects/macaron-xyz avalon Lending https://app.avalonfinance.xyz/ https://defillama.com/protocol/avalon-finance#information projects/avalon-finance bitcow Dexes https://bitcow.xyz/ https://defillama.com/protocol/bitcow#information projects/bitcow enzo Lending https://app.enzo.finance/ https://defillama.com/protocol/enzo#information projects/enzo trustin Lending https://www.trustin.com/ https://defillama.com/protocol/trustin-finance?borrowed=false&twitter=true&tvl=false projects/trustin","s":"Projects built on bitlayer","u":"/docs/FAQs/Defillama TVL integration","h":"#projects-built-on-bitlayer","p":233},{"i":245,"t":"For users and developers alike, the fundamental concept of Bitlayer is outlined below: Bitlayer acts as a Layer 2 solution for Bitcoin, boasting 100% EVM and Ethereum toolchain compatibility, with BTC as native token(gas token). Note on Solidity Version Support: We currently support Solidity up to version v0.8.23. Updates for newer versions might be delayed. Users can engage with it using wallets such as Metamask, imToken, or other Ethereum-compatible wallets. Developers are afforded the ease of migrating smart contracts written in Solidity, Vyper, or any other language that compiles to EVM bytecode directly to Bitlayer, using the toolchain you are familiar with: Ethereum JSON-RPC, Hardhat, etc.","s":"About Bitlayer","u":"/docs/Introduction/AboutBitlayer","h":"","p":244},{"i":248,"t":"A: The mainnet launch of Bitlayer is scheduled for early April.","s":"Q: When does Bitlayer launch?","u":"/docs/FAQs/Frequently asked questions","h":"#q-when-does-bitlayer-launch","p":246},{"i":250,"t":"A: Yes, Bitlayer is EVM-compatible. Bitlayer's deep integration with the Ethereum Virtual Machine (EVM) heralds a significant advancement for the Bitcoin network, enabling it to support smart contracts and decentralized applications (dApps) natively. This compatibility breaks new ground by combining Bitcoin's renowned security and liquidity with Ethereum's programmability and flexibility. For developers and users, this means the ability to deploy Ethereum-based applications directly on Bitcoin, leveraging the best of both worlds: the robustness of Bitcoin's blockchain with the dynamic capabilities of Ethereum's smart contract environment.","s":"Q: Is Bitlayer EVM compatible?","u":"/docs/FAQs/Frequently asked questions","h":"#q-is-bitlayer-evm-compatible","p":246},{"i":252,"t":"A: To join the Bitlayer community, you can visit the social media channels of Bitlayer, such as Telegram groups, Discord, or Twitter, where you can interact with other community members and stay updated on the latest developments. Discord: https://discord.com/invite/GGSjNyD8nj Twitter: https://twitter.com/BitLayerLabs Linkedin: https://www.linkedin.com/company/bitlayerlabs/ Telegram: https://t.me/bitlayerofficial Medium: https://medium.com/@Bitlayer GithHub: https://github.com/bitlayer-org","s":"Q: How can I join the community?","u":"/docs/FAQs/Frequently asked questions","h":"#q-how-can-i-join-the-community","p":246},{"i":254,"t":"A: There are several ways to support Bitlayer. You can actively participate in community discussions, provide feedback and suggestions, contribute to the development of applications or tools on the platform, or promote Bitlayer to others who may benefit from its services. Additionally, you can explore any specific support initiatives or programs that Bitlayer may have in place.","s":"Q: How can I help support Bitlayer?","u":"/docs/FAQs/Frequently asked questions","h":"#q-how-can-i-help-support-bitlayer","p":246},{"i":256,"t":"A: Bitlayer is being built by a team of engineers with experience in top platforms and blockchain operations. The core builders include individuals from companies such as Huobi, Polygon, and Polkadot, who bring their expertise and resources to the development of Bitlayer.","s":"Q: Who is building Bitlayer?","u":"/docs/FAQs/Frequently asked questions","h":"#q-who-is-building-bitlayer","p":246},{"i":258,"t":"A: For press inquiries related to Bitlayer, you can reach out to the Bitlayer team through our official communication channels. Website:https://www.bitlayer.org/ Twitter: https://twitter.com/BitLayerLabs Github: https://github.com/bitlayer-org Medium:https://medium.com/@Bitlayer Email: build@bitlayer.org","s":"Q: Who can I contact regarding a press inquiry?","u":"/docs/FAQs/Frequently asked questions","h":"#q-who-can-i-contact-regarding-a-press-inquiry","p":246},{"i":260,"t":"A: Yes, the rate-limits is 30 rps default for both mainnet and testnet. When requests reached rate-limits, you can (1) Refer to Compile and Run to build your own rpc node. (2) Or refer to ankr to buy a paid plan.","s":"Q: Is there a rate-limits on Public RPC URLs? What should I do if I hit the rate-limits issue?","u":"/docs/FAQs/Frequently asked questions","h":"#q-is-there-a-rate-limits-on-public-rpc-urls-what-should-i-do-if-i-hit-the-rate-limits-issue","p":246},{"i":262,"t":"This document compares Bitlayer and Ethereum across several key aspects including gas prices, and support for EVM and Solidity versions, providing insights for both developers and users. Feature Bitlayer Ethereum Gas Price Lower due to efficiency mechanisms. Variable, dependent on network demand. High demand can lead to increased gas prices. EVM Support Supports EVM-compatible smart contracts through the Layered Virtual Machine (LVM). Full EVM support as the native platform. Solidity Support Supports up to Solidity version v0.8.23. Future versions will be supported. Supports the latest versions of Solidity, with ongoing updates. Developer Implications Offers a platform leveraging Bitcoin's security. Easier transition for those familiar with Ethereum's EVM. Mature tooling and community support. User Implications Access to innovative dApps leveraging Bitcoin's security. Vast ecosystem of dApps.","s":"Bitlayer vs. Ethereum","u":"/docs/Introduction/BitlayerVsEth","h":"","p":261},{"i":265,"t":"Bitlayer aims to offer lower transaction costs through innovative efficiency mechanisms. Leveraging technologies like optimistic execution, Bitlayer seeks to optimize transaction throughput, making it a potentially more economical choice for its users. Important: About Gas Price on Bitlayer Bitlayer's native gas token is BTC, utilized with an 18-digit precision, diverging from Bitcoin's traditional 8-digit precision. This adjustment aligns with the default decimal precision of tokens on EVM-compatible chains, ensuring consistency across transactions. To accommodate transaction processing priorities, Bitlayer has established a minimum priority fee requirement. Developers can dynamically estimate the required gas price for transactions using eth_gasPrice or eth_maxPriorityFeePerGas. For transactions on the Mainnet/Testnet, a minimum tip of 0.1 gwei is necessary. Typically, setting a gasPrice of 0.11 gwei for legacy transactions or a maxPriorityFeePerGas of 0.1 gwei (with an adequately set maxFeePerGas) for EIP-1559 transactions should suffice for most operations. Dapp developers are advised to programmatically set the maxPriorityFeePerGas before initiating transactions via APIs, rather than relying on default strategies employed by wallets (like MetaMask) or SDKs, to ensure optimal transaction processing.","s":"Bitlayer","u":"/docs/Introduction/BitlayerVsEth","h":"#bitlayer","p":261},{"i":267,"t":"In contrast, Ethereum's gas prices fluctuate based on network demand. Users compete for computational resources, leading to variable gas prices that can spike significantly during periods of high demand, affecting cost-effectiveness.","s":"Ethereum","u":"/docs/Introduction/BitlayerVsEth","h":"#ethereum","p":261},{"i":270,"t":"EVM Support​ Bitlayer introduces the Layered Virtual Machine (LVM), which is fully compatible with Ethereum Virtual Machine (EVM) smart contracts. It supports EVM-compatible contracts up to the Shanghai update, with the exception of the PREVRANDAO opcode. The Cancun upgrade is expected to be supported in the next release. This enables developers to build applications on Bitcoin's secure network, mirroring the functionality available on Ethereum. Solidity Version​ Currently, Bitlayer supports Solidity up to version v0.8.23, with a commitment to incorporating future versions. This stance ensures that developers have access to a stable and secure environment for their smart contracts.","s":"Bitlayer","u":"/docs/Introduction/BitlayerVsEth","h":"#bitlayer-1","p":261},{"i":272,"t":"EVM Support​ Ethereum, as the origin of the EVM, offers support for the entire range of EVM functionalities. This allows for a wide spectrum of smart contract capabilities and decentralized application developments. Solidity Version​ Ethereum consistently supports the latest versions of Solidity, providing developers with the newest features, optimizations, and security enhancements for smart contract development.","s":"Ethereum","u":"/docs/Introduction/BitlayerVsEth","h":"#ethereum-1","p":261},{"i":275,"t":"Bitlayer emerges as an appealing platform for developers seeking to leverage Bitcoin's renowned security with the added benefit of potentially lower operational costs. The LVM's compatibility with EVM ensures a smooth transition for developers already familiar with Ethereum's ecosystem. Ethereum remains a cornerstone for smart contract and decentralized application development, supported by its extensive tooling and a vibrant community.","s":"For Developers","u":"/docs/Introduction/BitlayerVsEth","h":"#for-developers","p":261},{"i":277,"t":"Bitlayer offer more cost-effective interactions with decentralized applications, backed by the security of Bitcoin. This makes it an attractive platform for users prioritizing security and efficiency. Ethereum offers a broad and diverse ecosystem of dApps. In essence, Bitlayer introduces a strategic approach to integrating smart contract functionality within Bitcoin's secure and cost-effective framework, offering tangible benefits for both developers and users.","s":"For Users","u":"/docs/Introduction/BitlayerVsEth","h":"#for-users","p":261},{"i":279,"t":"BitVM is a computing paradigm to express Turing-complete Bitcoin contracts, which is the foundamental pilar to build the native layer2 for Bitcoin, without softfork or hardfork(which would take years), BitVM developer to verify computation on Bitcoin.","s":"About BitVM","u":"/docs/Introduction/BitVM","h":"","p":278},{"i":281,"t":"BitVM is invented by Robin Linus from ZeroSync, BitVM offers a novel computing paradigm designed specifically for the Bitcoin blockchain. This initiative was launched in late 2023 to enable more expressive contracts and efficient off-chain computations without necessitating soft forks. Unlike Ethereum, BitVM's aim is not replication but expansion, enhancing Bitcoin's capabilities to handle increased demand. This becomes increasingly important as the Bitcoin ecosystem grows, especially with upcoming events like Bitcoin halving and the rising interest from institutional investors following Bitcoin ETFs. BitVM's features include the optimistic validation of Zero-Knowledge (ZK) rollups—similar to technologies used in Ethereum's Layer 2 solutions—which process transactions off-chain to reduce mainnet congestion. These transactions are finalized on the mainnet, incorporating mechanisms to deter and identify potential fraud.","s":"What is BitVM?","u":"/docs/Introduction/BitVM","h":"#what-is-bitvm","p":278},{"i":283,"t":"Optimistic Validation of ZK Rollups: BitVM facilitates the validation of ZK rollups directly on the Bitcoin network, allowing complex layer 2 computations without changing Bitcoin's consensus rules or compromising blockchain performance. Bridging Sidechains and Rollups to Bitcoin: It aims to create more decentralized bridges between Bitcoin and layer 2 platforms like Rootstock, reducing reliance on intermediaries and lowering the risk of fraud. Reduced Transaction Fees: BitVM could significantly lower Bitcoin transaction fees by managing data and computations off-chain. This can help mitigate spikes in fees, like those seen in December 2023, when they reached $38.43. Enhanced Security: By focusing on two-party contracts, BitVM enhances security over systems that handle multi-party contracts, as is common with Ethereum. It provides mechanisms to prove and dispute fraudulent transactions effectively.","s":"Benefits of BitVM","u":"/docs/Introduction/BitVM","h":"#benefits-of-bitvm","p":278},{"i":285,"t":"Learn more about BitVM's innovations and how they can transform the Bitcoin landscape through our detailed white paper and research initiatives: Experiment of BitVM White Paper BitVM And Its Optimization Considerations","s":"Experiment of BitVM White Paper","u":"/docs/Introduction/BitVM","h":"#experiment-of-bitvm-white-paper","p":278},{"i":287,"t":"Join the discussion and contribute to the development of BitVM at Bitlayer through these community channels: BitVM Club: Twitter: BitVMclub Website: bitVM.club BitVM_CN: Twitter: bitvm_cn Website: bitvmcn.xyz Explore how Bitlayer is setting the stage for revolutionary changes in Bitcoin's functionality and scalability.","s":"Engage with the Community","u":"/docs/Introduction/BitVM","h":"#engage-with-the-community","p":278},{"i":289,"t":"The vision of Bitlayer will be realized through the rollout of a mainnet in multiple stages, with each phase designed to enhance the user experience and bolster security through cryptographic proof of Bitcoin consensus and onchain activity.","s":"Roadmap","u":"/docs/Introduction/Roadmap","h":"","p":288},{"i":291,"t":"In this initial phase, Bitlayer will support the cross-chain movement of BTC/BRC-20 assets between the Bitcoin mainnet and Bitlayer, and other mainstream assets, thereby enriching the overall value of the Bitlayer ecosystem. During this stage, we will prioritize offering a 100% EVM-compatible development kit and ecosystem support, enabling developers to quickly build, test, and deploy applications on Bitlayer. Solidity applications can be seamlessly migrated, providing early users with the benefits of low gas fees and an extensible Bitcoin framework.","s":"First Stage: Bitlayer Mainnet-V1","u":"/docs/Introduction/Roadmap","h":"#first-stage-bitlayer-mainnet-v1","p":288},{"i":293,"t":"In this phase, we plan to introduce a rollup-equivalent model, implement a BitVM component for commiting and challenging the state transition, achieving the L1 verification ability. By leveraging the vast network and security of Bitcoin, Bitlayer will continuously lead with the highest security standards, offering users enhanced flexibility and an improved onchain experience through network upgrades.","s":"Second Stage: Bitlayer Mainnet-V2","u":"/docs/Introduction/Roadmap","h":"#second-stage-bitlayer-mainnet-v2","p":288},{"i":295,"t":"In this phase, our aim is to implement trustless bridge based on the L1 verification ability. Upon the completion of this third stage, Bitlayer’s final mainnet will be fully deployed, achieving the network's original goals—Bitcoin-equivalent security combined with Turing completeness. This version is set to elevate the security standards of Bitcoin Layer 2 to an unprecedented level.","s":"Third Stage: Bitlayer Mainnet V3","u":"/docs/Introduction/Roadmap","h":"#third-stage-bitlayer-mainnet-v3","p":288},{"i":299,"t":"Bitlayer 使用 BTC 作为 Gas Token,一般情况下,都会有一个对应的 wBTC token 方便各类协议交互。 用户可以通过调用 Dex 的 swap 功能实现兑换。 Macaron Swap​ 用户在Macaron Swap界面把BTC兑换成wBTC https://www.macaron.xyz/#/swapl","s":"wBTC 兑换","u":"/docs/FAQs/WBTC","h":"#wbtc-兑换","p":296},{"i":301,"t":"Bitlayer uses BTC as a Gas Token, and typically there is a corresponding wBTC token to facilitate interactions with various protocols. Users can exchange BTC for wBTC using the swap function on a Dex. Macaron Swap​ Users can exchange BTC for wBTC on the Macaron Swap interface. https://www.macaron.xyz/#/swapl","s":"wBTC","u":"/docs/FAQs/WBTC","h":"#wbtc-1","p":296},{"i":303,"t":"Bitlayer's solution synthesizes the technical characteristics of BitVM, DLC, and various XVMs (such as EVM, CairoVM, SolVM, MoveVM), addressing three major challenges: Layer 1 verification, asset bridging, and enriching state transition expressions. From an architectural standpoint, Bitlayer is a fairly typical example of a Rollup-equivalent model. To adapt to Bitcoin's unique programming model, BitVM has been introduced as a component for state challenges. Additionally, DLC|BitVM has been incorporated as a cross-chain component for messaging/assets, and the sequencer component's XVM, in theory, can support any Turing-complete programming language. The security of bridge assets has always been a key for Layer 2 solutions, with the core issue being the method of asset control. The most common industry approach is for Layer 2 platform operators to set up multi-signature accounts based on MPC-TSS (Multi-Party Computation - Threshold Signature Scheme) or Schnorr technology, into which users transfer their assets. This traditional approach results in users completely losing control of their assets, while the platform's multi-signature management capabilities can impact the security of those assets. In the wake of certain extreme cases, users have become dissatisfied with these types of multi-signature solutions. Models like DLC|BitVM that encompass two-party game scenarios may be a better direction. Leveraging DLC|BitVM technology, users could retain partial control over their assets and potentially achieve a secure escape with their assets. The verification of Layer 2 state transitions operates on a principle comparable to proving one's innocence—an inherently secure process. Theoretically, the choice of network used for state verification determines the security level of the Layer 2 network. As one of the most secure networks available, using Bitcoin's base layer for verification enables Bitlayer to inherit Bitcoin's robust security measures, achieving an equivalent level of security to Bitcoin itself. The introduction of the BitVM paradigm challenges the conventional view that complex computations cannot be performed on Bitcoin, offering a new pathway for executing Layer 2 state verifications on the Bitcoin network. In terms of Layer 1 verification, autonomous asset escape, secure asset bridging, and EVM compatibility, Bitlayer exhibits superior performance compared to existing Bitcoin Layer 2 solutions such as Lightning Network and Stacks.","s":"Technical Architecture","u":"/docs/Introduction/TechnicalArchitecture","h":"","p":302},{"i":306,"t":"Returns the current amount of an ERC-20 token in circulation. https://api.btrscan.com/scan/api ?module=token &action=tokensupply &contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2 Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description contractaddress the contract address of the ERC-20 token Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": \"20000000000\" } The result is returned in the token's smallest decimal representation Eg. a token with a balance of 215.241526476136819398 and 18 decimal places will be returned as 215241526476136819398","s":"Get ERC20-Token TotalSupply (aka MaxSupply) by ContractAddress","u":"/docs/Bitlayer Scan APIs/Tokens","h":"#get-erc20-token-totalsupply-aka-maxsupply-by-contractaddress","p":304},{"i":308,"t":"Returns the current balance of an ERC-20 token of an address. https://api.btrscan.com/scan/api ?module=account &action=tokenbalance &contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2 &address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec &tag=latest Try this endpoint in your browser 🔗 Request Response Query Parameters Parameter Description contractaddress the contract address of the ERC-20 token address the string representing the address to check for token balance Sample Response { \"status\": \"1\", \"message\": \"OK\", \"result\": 0 }","s":"Get ERC20-Token Account Balance for TokenContractAddress","u":"/docs/Bitlayer Scan APIs/Tokens","h":"#get-erc20-token-account-balance-for-tokencontractaddress","p":304}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,2.791,1,1.507,2,0.967,3,1.567,4,0.859,5,0.859,6,0.859,7,0.859,8,2.896,9,0.787,10,2.432,11,0.967,12,0.859,13,1.447,14,1.764,15,2.532,16,0.967,17,0.691,18,0.967,19,0.648,20,0.967,21,2.664,22,0.452,23,0.967,24,0.967,25,0.967,26,0.967,27,1.567,28,1.197,29,1.764,30,0.859,31,2.16,32,0.967,33,0.967,34,0.967,35,0.734,36,0.554,37,2.432,38,2.95,39,0.967,40,2.283,41,1.567,42,1.436,43,0.787,44,1.573,45,2.16,46,2.252,47,2.841,48,1.846,49,2.16,50,2.145,51,1.567,52,2.252,53,0.691,54,0.967,55,0.859,56,0.967,57,0.734,58,0.859,59,0.967,60,0.967,61,0.967,62,0.967,63,1.567,64,0.967,65,1.162,66,0.967,67,0.967,68,0.967,69,0.967,70,0.967,71,0.967,72,1.567,73,0.967,74,2.72,75,0.967,76,1.764,77,0.967,78,2.774,79,0.859,80,0.967,81,0.967,82,1.764,83,0.967,84,0.859,85,1.764,86,1.567,87,3.001,88,0.859,89,0.656,90,1.301,91,2.145,92,2.661,93,0.967,94,1.739,95,0.859,96,0.967,97,2.16,98,0.859,99,0.967,100,1.764,101,2.432,102,3.001,103,1.436,104,0.699,105,0.967,106,0.967,107,1.866,108,0.787,109,0.967,110,0.967,111,0.967,112,0.967,113,1.436,114,0.859,115,2.16,116,0.967,117,0.691,118,0.734,119,0.967,120,1.141,121,0.967,122,1.093,123,0.967,124,0.967,125,0.967,126,0.967,127,0.967,128,0.967,129,1.222,130,3.652,131,2.6,132,0.967,133,0.967,134,1.141,135,0.967,136,0.734,137,0.967,138,0.859,139,0.787,140,2.443,141,0.859,142,0.967,143,2.16,144,0.967,145,0.35,146,2.799,147,2.552,148,0.624,149,0.461,150,1.436,151,0.956,152,1.846,153,1.526,154,0.967,155,0.967,156,2.16,157,0.967,158,2,159,0.967,160,1.764,161,1.261,162,0.859,163,1.764,164,0.967,165,1.567,166,1.739,167,1.764,168,1.451,169,0.859,170,1.565,171,1.261,172,1.98,173,1.567,174,0.967,175,0.859,176,0.859,177,0.787,178,0.859,179,2.16,180,1.436,181,0.734,182,1.447,183,2.47,184,2.627,185,1.063,186,0.859,187,0.967,188,2.432,189,0.967,190,1.832,191,2.396,192,1.261,193,0.967,194,0.599,195,1.764,196,2.995,197,0.967,198,1.98,199,0.967,200,0.691,201,1.197,202,1.567,203,1.183,204,0.599,205,2.277,206,1.197,207,0.859,208,1.339,209,1.141,210,0.626,211,1.197,212,1.567,213,0.859,214,0.734,215,1.339,216,1.98,217,1.567,218,3.063,219,2.035,220,0.734,221,0.859,222,0.813,223,1.719,224,1.567,225,1.436,226,1.567,227,0.859,228,0.859,229,0.967,230,0.967,231,0.987,232,1.909,233,0.392,234,0.967,235,0.787,236,0.787,237,1.339,238,0.967,239,0.967,240,1.05,241,3.915,242,1.752,243,0.943,244,0.656,245,2.035,246,0.967,247,0.787,248,1.141,249,0.787,250,0.691,251,0.859,252,1.567,253,0.967,254,1.394,255,0.967,256,2.367,257,1.567,258,0.967,259,0.691,260,0.859,261,1.551,262,0.787,263,1.447,264,0.787,265,1.339,266,1.197,267,1.567,268,3.043,269,1.006,270,1.764,271,0.967,272,0.967,273,0.967,274,0.967,275,0.859,276,0.691,277,2.027,278,1.764,279,0.967,280,2.16,281,0.967,282,1.573,283,2.035,284,0.967,285,1.339,286,1.197,287,1.567,288,1.764,289,1.941,290,0.859,291,0.626,292,0.734,293,0.859,294,1.764,295,0.967,296,0.967,297,0.859,298,0.859,299,0.967,300,2.035,301,0.943,302,2.145,303,0.859,304,0.967,305,1.567,306,0.859,307,0.859,308,1.567,309,0.383,310,0.967,311,0.859,312,1.261,313,0.967,314,1.567,315,0.967,316,0.691,317,1.764,318,0.691,319,0.967,320,1.739,321,0.886,322,0.787,323,0.967,324,0.967,325,0.967,326,0.967,327,1.339,328,1.764,329,0.967,330,0.859,331,0.967,332,0.967,333,0.859,334,0.967,335,0.859,336,1.436,337,0.967,338,0.412,339,1.436,340,0.967,341,0.691,342,0.967,343,1.567,344,1.98,345,1.98,346,0.86,347,1.339,348,0.472,349,1.339,350,0.967,351,0.859,352,2.524,353,0.967,354,0.859,355,0.967,356,0.967,357,0.472,358,0.967,359,0.967,360,1.339,361,0.967,362,1.764,363,1.764,364,0.967,365,0.967,366,1.567,367,1.98,368,0.656,369,0.599,370,1.507,371,1.567,372,3.001,373,0.967,374,0.535,375,0.967,376,0.943,377,1.764,378,0.683,379,1.05,380,1.093,381,1.764,382,0.859,383,0.787,384,0.859,385,0.656,386,0.787,387,0.967,388,0.638,389,1.739,390,0.575,391,0.472,392,1.739,393,0.656,394,0.626,395,1.65,396,0.787,397,1.261,398,0.554,399,1.345,400,0.486,401,0.472,402,2.035,403,1.941,404,0.501,405,0.734,406,0.859,407,1.261,408,0.859,409,0.787,410,0.859,411,0.472,412,0.787,413,0.638,414,0.859,415,0.967,416,0.535,417,1.567,418,0.859,419,0.859,420,0.787,421,0.859,422,0.691,423,1.846,424,0.859,425,0.575,426,1.436,427,0.859,428,0.575,429,0.787,430,1.261,431,0.472,432,0.575,433,0.967,434,1.141,435,0.859,436,0.859,437,0.787,438,0.787,439,0.967,440,0.967,441,0.517,442,0.859,443,1.436,444,0.734,445,1.011,446,1.141,447,0.787,448,1.573,449,0.967,450,0.599,451,0.859,452,0.967,453,1.764,454,0.859,455,1.436,456,0.446,457,0.813,458,0.859,459,0.752,460,0.859,461,0.859,462,0.859,463,0.967,464,0.967,465,0.787,466,0.691,467,1.011,468,0.535,469,0.859,470,0.967,471,0.967,472,0.434,473,0.626,474,0.734,475,0.859,476,0.554,477,0.787,478,0.967,479,0.967,480,1.093,481,0.967,482,0.967,483,0.501,484,0.967,485,0.859,486,1.339,487,0.575,488,0.967,489,0.967,490,1.764,491,0.967,492,0.967,493,0.967,494,0.967,495,0.967,496,0.967,497,0.859,498,0.734,499,0.967,500,0.859,501,0.967,502,0.859,503,0.859,504,1.141,505,0.967,506,0.656,507,0.734,508,0.967,509,0.967,510,0.967,511,0.967,512,0.967,513,0.787,514,0.967,515,0.967,516,0.967,517,0.859,518,0.859,519,0.787,520,1.436,521,0.734,522,0.967,523,0.656,524,0.967,525,0.859,526,0.967,527,0.787,528,0.859,529,0.859,530,1.764,531,0.859,532,0.967,533,0.967,534,0.967,535,0.967,536,0.859,537,0.554,538,0.967,539,0.859,540,0.691,541,0.486,542,0.734,543,0.967,544,1.261,545,0.967,546,0.859,547,0.967,548,1.764,549,0.967,550,0.967,551,0.967,552,0.967,553,0.859,554,0.859,555,0.967,556,0.787,557,0.967,558,0.787,559,0.967,560,0.967,561,0.967,562,0.535,563,0.656,564,0.967,565,0.967,566,0.967,567,0.967,568,0.967,569,0.967,570,0.967,571,0.967,572,0.967]],["t/5",[19,1.979,22,2.254,97,5.246,104,2.946,131,2.287,309,2.946,348,3.625,388,2.137,413,2.137,541,2.967,573,4.224,574,2.397,575,2.967,576,4.224,577,5.246,578,3.515,579,4.484,580,2.456,581,5.246,582,5.908,583,5.908,584,2.518,585,2.518,586,2.397,587,2.287,588,2.583,589,2.878,590,2.518,591,4.224,592,3.159,593,2.723,594,5.246,595,5.908,596,2.651,597,3.267,598,3.515,599,3.159,600,5.908,601,3.159,602,5.908,603,5.908,604,5.908,605,5.246,606,5.908]],["t/7",[22,2.097,104,2.372,145,2.166,203,2.03,261,2.372,309,2.971,348,2.919,388,2.166,413,2.166,446,3.873,580,2.489,581,5.316,584,2.552,585,2.552,586,2.43,587,2.318,588,2.618,589,3.169,590,2.552,592,3.202,596,2.687,597,3.311,598,3.562,601,4.82,607,4.544,608,8.186,609,5.36,610,8.186,611,4.85,612,5.987,613,5.987,614,5.987,615,2.76,616,5.987]],["t/10",[19,1.822,22,2.328,104,3.033,151,2.591,194,4.24,309,2.712,348,2.534,374,3.786,388,1.88,413,1.88,422,3.715,456,2.395,541,3.438,574,2.109,580,2.161,584,2.215,585,2.215,586,2.109,587,2.012,588,2.272,589,2.65,590,2.215,592,3.661,593,2.395,596,2.332,597,2.874,598,3.092,599,2.779,601,2.779,615,2.395,617,2.691,618,3.525,619,3.525,620,4.614,621,5.197,622,5.197,623,5.197,624,5.197,625,2.332,626,3.525,627,3.944,628,3.361,629,5.197,630,4.614,631,5.197,632,5.197,633,5.197,634,5.197,635,2.462,636,3.715,637,5.197,638,3.525,639,5.197,640,5.197,641,3.219,642,5.197,643,3.219,644,5.197,645,4.614,646,6.078,647,3.944,648,5.197,649,3.219]],["t/12",[19,1.532,22,2.337,104,2.658,151,2.329,153,2.516,161,4.115,194,4.155,240,4.783,309,2.281,346,0.995,348,1.968,374,3.183,376,3.078,388,1.46,399,3.183,413,1.46,422,2.886,456,2.653,541,3.883,574,1.638,580,1.678,584,1.72,585,1.72,586,1.638,587,1.563,588,1.765,589,2.228,590,1.72,592,3.078,593,1.861,596,1.811,597,2.232,598,2.402,599,2.159,601,2.159,615,1.861,618,2.738,619,2.738,620,3.584,625,1.811,627,3.064,630,7.844,635,1.913,638,2.738,641,2.5,643,2.5,645,3.584,646,5.111,647,3.064,649,2.5,650,4.037,651,4.037,652,4.037,653,4.037,654,4.037,655,4.037,656,4.037,657,2.738,658,2.886,659,4.115,660,7.313,661,7.732,662,7.732,663,7.732,664,4.037,665,8.038,666,4.037,667,4.037,668,4.037,669,4.037,670,4.037,671,4.037,672,4.037,673,4.037,674,2.738,675,4.037,676,4.037,677,4.037,678,4.037,679,4.037,680,4.037,681,4.037,682,4.037,683,4.037,684,4.037,685,4.037]],["t/16",[19,2.197,22,2.275,131,2.36,222,2.81,309,3.004,348,4.21,388,2.743,413,2.205,573,4.358,574,2.474,575,3.062,576,4.358,577,5.413,578,3.627,579,4.627,580,2.535,584,2.598,585,2.598,586,2.474,587,2.36,588,2.665,589,2.935,590,2.598,593,2.81,596,2.736,597,3.372,598,3.627,615,2.81,625,2.736,686,6.096,687,6.096,688,6.096,689,5.413,690,3.062]],["t/19",[0,2.348,38,2.921,44,4.769,184,3.943,191,3.595,218,3.493,269,1.055,691,5.271]],["t/21",[0,1.655,19,2.392,38,3.507,48,3.944,52,2.534,78,3.361,92,2.59,131,2.963,147,3.092,170,2.18,184,2.779,222,2.395,231,2.109,232,3.732,236,4.23,240,3.092,243,2.779,263,3.092,269,0.744,321,2.61,341,3.715,346,1.281,352,3.732,379,3.092,380,3.219,388,2.476,390,3.092,391,3.338,411,2.534,416,2.874,441,4.521,448,3.361,466,3.715,476,3.923,691,3.715,692,5.197,693,3.715,694,4.614,695,5.197,696,5.197,697,4.23,698,4.23,699,3.715,700,4.428,701,3.361,702,4.614,703,2.779,704,5.197,705,5.197,706,4.23,707,4.614,708,2.691,709,2.874,710,4.614,711,3.092]],["t/23",[19,2.321,28,3.887,38,3.179,48,4.349,131,2.218,148,2.028,149,1.496,184,3.065,196,3.169,222,3.698,268,3.55,269,1.148,309,3.179,314,5.088,346,1.413,379,4.339,380,4.517,386,4.665,413,2.073,441,3.065,448,4.717,456,2.641,468,3.169,476,4.179,523,3.887,697,4.665,698,6.531,699,5.214,700,3.707,712,5.731,713,5.731,714,5.731,715,4.665,716,4.349,717,5.088,718,3.887,719,3.55,720,3.887,721,4.097,722,4.946]],["t/25",[19,1.905,38,3.135,65,2.154,131,2.154,191,2.713,222,3.647,232,3.489,233,3.21,240,3.31,268,4.433,269,0.796,301,2.975,309,2.836,388,2.589,413,2.013,434,3.599,441,2.975,448,5.721,468,3.077,483,2.881,558,4.53,693,3.978,702,7.416,719,3.446,720,5.665,721,5.971,722,5.665,723,3.774,724,5.117,725,4.94,726,5.564,727,2.881,728,5.564,729,4.94,730,5.564,731,4.53,732,4.94]],["t/27",[38,3.166,43,5.406,47,5.406,65,2.571,92,2.512,120,4.296,131,2.571,190,2.35,218,3.147,240,3.951,247,5.406,309,2.631,352,3.895,388,2.402,391,3.238,411,3.238,476,3.805,674,4.504,703,3.551,708,3.439,711,3.951,733,5.04,734,5.896,735,5.406,736,5.896,737,5.04]],["t/29",[0,1.809,15,3.675,38,3.335,131,3.093,134,3.675,148,2.011,149,1.484,183,3.039,185,2.484,190,2.828,191,2.77,196,3.143,203,1.926,206,3.854,218,2.692,220,4.312,233,2.306,242,2.854,269,1.038,300,3.854,352,3.896,388,2.056,391,3.896,395,4.92,428,3.381,459,2.422,476,4.156,477,4.626,562,3.143,737,4.312,738,4.626,739,4.626,740,3.854,741,5.682,742,5.682,743,4.062,744,5.045,745,5.682,746,2.102,747,4.312,748,5.905,749,5.682,750,5.045,751,2.854,752,4.312,753,4.312,754,5.045]],["t/31",[19,1.378,38,3.027,89,3.511,91,3.701,92,2.89,129,3.429,131,2.958,170,2.587,183,3.651,185,2.263,218,3.849,222,2.386,232,2.524,233,2.101,245,3.511,269,0.741,321,2.6,338,2.206,352,2.524,388,1.873,390,3.08,391,3.961,399,2.863,403,3.348,416,2.863,445,2.966,459,2.206,562,3.776,703,2.768,716,3.929,733,3.929,736,4.596,738,4.214,740,3.511,743,4.881,746,1.915,747,3.929,753,6.409,755,4.596,756,5.177,757,5.177,758,3.929,759,3.08,760,3.206,761,4.596,762,4.214,763,4.214,764,5.177,765,5.177,766,5.177,767,5.558,768,5.177,769,5.177,770,6.828,771,5.177,772,4.214,773,5.177,774,5.177,775,4.596,776,5.177]],["t/33",[19,1.422,131,2.698,145,2.521,151,1.701,182,3.178,185,3.392,190,2.91,196,2.954,218,2.531,220,4.054,233,2.168,256,3.623,282,3.455,338,2.971,346,1.317,352,3.398,357,2.604,376,2.857,393,3.623,395,3.623,402,3.623,407,3.819,416,2.954,432,3.178,444,4.054,476,3.061,483,2.766,609,3.819,697,4.349,703,2.857,711,3.178,715,5.674,737,6.241,740,3.623,746,1.976,747,5.29,748,6.944,753,4.054,760,4.317,767,5.674,777,4.743,778,5.342,779,5.342,780,7.758,781,5.342,782,5.342,783,4.054,784,6.97,785,4.743,786,3.819,787,4.743,788,4.743,789,4.743,790,4.743]],["t/35",[0,2.679,19,2.153,38,3.204,104,2.685,131,3.13,148,2.398,149,2.257,175,4.544,190,1.811,191,2.495,203,1.735,223,2.932,232,2.495,268,3.169,269,0.732,300,3.471,338,2.888,341,4.844,346,1.261,352,3.304,385,4.596,390,4.032,391,3.943,392,3.658,416,2.83,428,3.045,703,2.736,722,4.596,724,3.31,727,3.934,746,2.506,791,7.469,792,6.583,793,5.117,794,5.117,795,6.776,796,4.844,797,5.117,798,3.045,799,5.117,800,5.117,801,6.776,802,3.169,803,5.117,804,5.117,805,5.117]],["t/37",[0,1.736,8,2.915,17,3.897,19,1.88,38,3.104,52,3.443,104,2.16,131,2.734,148,1.929,149,1.423,170,1.736,171,3.897,192,3.897,218,2.583,249,4.437,268,4.374,269,0.78,286,3.697,338,2.323,352,3.443,367,4.437,384,4.84,385,3.697,388,1.972,391,4.04,399,3.906,441,2.915,445,3.123,466,3.897,539,4.84,562,3.015,635,2.583,703,2.915,720,3.697,721,3.897,722,3.697,724,3.526,744,6.27,753,4.137,754,7.623,791,6.27,792,5.749,798,4.202,806,4.84,807,4.84,808,5.451,809,5.451,810,2.823,811,5.451,812,4.84,813,4.84,814,5.451,815,5.451]],["t/39",[1,2.74,15,3.971,38,2.432,40,2.271,52,2.993,74,3.083,92,1.674,120,2.861,129,2.222,130,2.366,145,2.755,148,2.831,149,2.089,153,1.934,184,2.366,185,1.934,190,1.566,191,2.157,201,3,203,2.081,204,2.74,210,2.861,211,3,216,4.997,222,3.25,231,1.795,243,2.366,250,3.162,254,2.535,256,3,263,2.632,266,3,286,3,301,2.366,320,4.389,321,2.222,338,1.885,341,3.162,346,1.09,376,2.366,378,2.729,379,2.632,380,2.74,397,3.162,398,2.535,425,3.652,431,2.157,441,2.366,447,3.601,498,3.357,615,2.039,691,3.162,694,3.928,699,4.389,701,2.861,708,2.291,709,3.395,719,2.74,720,4.782,721,5.04,722,4.782,727,2.291,816,3.601,817,4.56,818,6.139,819,4.424,820,6.139,821,4.997,822,4.424,823,4.424,824,4.424,825,4.424,826,4.389,827,3.928,828,3.928,829,3.601,830,3.601,831,3.357,832,2.632,833,3.601,834,3.601,835,4.424,836,3.928,837,3.601,838,4.424,839,3.601,840,3.357,841,3.928,842,4.424,843,4.424,844,2.74]],["t/42",[0,1.655,19,2.166,40,2.532,94,3.715,118,3.944,185,3.347,233,2.109,269,0.979,341,3.715,346,1.281,349,5.195,378,2.012,400,3.438,457,2.395,507,3.944,611,3.361,641,3.219,708,2.691,746,2.831,751,2.61,752,3.944,760,3.219,802,3.219,845,3.155,846,3.438,847,3.944,848,5.573,849,3.944,850,4.23,851,4.614,852,4.24,853,3.715,854,5.573,855,4.614,856,4.614,857,4.614,858,4.23,859,3.525,860,3.944,861,4.614,862,2.874,863,6.078,864,6.797,865,4.614,866,4.614,867,4.23,868,6.078,869,6.078,870,4.614,871,5.197,872,2.874,873,4.614,874,3.361,875,3.219,876,2.978,877,4.23,878,5.197,879,4.23,880,4.614,881,2.161,882,4.614,883,3.525,884,3.525]],["t/44",[134,4.717,269,1.043,376,3.9,746,2.697,845,3.361,885,6.036,886,7.292,887,7.292,888,5.936]],["t/46",[13,3.677,40,2.286,52,4.049,65,2.393,130,4.089,145,2.236,170,1.968,190,2.187,203,2.095,223,3.542,231,2.508,233,2.508,240,3.677,247,5.032,269,1.241,285,4.691,352,3.013,370,3.828,376,3.305,391,4.23,411,3.013,431,3.013,446,3.998,710,5.488,711,3.677,734,5.488,740,4.192,806,5.488,807,5.488,817,3.998,849,4.691,889,2.702,890,5.488,891,6.181]],["t/48",[0,2.847,38,2.472,52,3.042,92,2.36,131,2.415,153,2.727,170,1.987,190,2.208,196,4.254,204,3.864,231,2.531,233,2.531,240,4.576,269,1.1,321,3.133,352,3.042,378,2.415,391,4.066,411,3.042,431,3.042,457,3.545,708,3.983,739,5.079,874,4.035,892,5.079,893,4.735,894,4.735,895,5.539,896,6.238,897,6.238]],["t/50",[92,2.686,269,1.016,301,3.796,302,5.075,352,3.461,368,4.815,376,3.796,398,4.068,405,5.388,738,5.779,898,3.272,899,5.075,900,7.099,901,6.303,902,7.099]],["t/52",[269,1.055,277,3.818,302,6.075,385,5,391,3.595,903,6.546,904,7.373]],["t/54",[38,2.261,40,2.111,46,2.372,52,3.546,130,3.052,131,2.209,145,2.064,151,1.817,166,4.079,170,1.817,190,2.984,203,2.466,214,6.398,231,2.316,254,3.27,263,3.395,269,1.206,321,2.866,345,4.645,352,2.782,391,4.11,411,2.782,431,3.546,457,2.63,467,3.27,619,3.87,708,2.955,709,3.156,748,4.645,786,4.079,817,3.691,826,4.079,830,4.645,834,4.645,881,2.372,889,3.18,905,7.486,906,5.706,907,3.395,908,4.079,909,3.27,910,3.052]],["t/57",[22,2.389,911,6.14,912,5.63,913,5.63,914,6.915,915,6.915,916,3.963,917,6.14,918,6.915,919,6.14,920,6.915,921,6.915,922,6.915,923,4.944,924,6.915]],["t/59",[22,2.395,911,6.204,912,5.688,913,5.688,919,6.204,923,4.995,925,5.688,926,6.988,927,6.204,928,6.988,929,6.988,930,6.988,931,6.988]],["t/62",[170,2.361,580,3.082,898,3.417,932,4.411,933,4.1,934,5.626,935,6.582]],["t/64",[22,2.163,151,2.689,309,3.101,348,3.129,388,2.322,413,2.322,574,2.604,580,2.668,584,2.735,585,2.735,586,2.604,587,2.484,588,2.806,589,3.03,590,2.735,593,2.958,596,2.88,597,3.549,598,3.819,615,2.958,625,2.88,746,2.374,936,4.485,937,5.699,938,3.678,939,6.418,940,5.699,941,5.699]],["t/66",[22,2.387,36,3.415,151,2.728,309,2.962,401,2.906,404,4.23,413,2.156,574,2.419,580,2.478,584,2.54,585,2.54,586,2.419,587,2.307,588,2.606,589,2.894,590,2.54,593,2.747,596,2.675,615,2.747,625,2.675,658,4.261,936,4.681,938,3.415,941,5.292,942,3.087,943,5.96,944,5.96,945,5.96,946,5.96,947,3.546,948,3.546,949,5.96,950,5.96,951,5.96]],["t/68",[19,2.037,22,2.191,57,2.983,104,2.237,151,2.105,194,3.497,231,1.595,261,2.237,309,2.237,346,1.392,388,2.391,401,1.916,413,2.613,450,2.434,456,2.603,541,3.843,574,2.682,575,3.628,580,2.348,584,2.407,585,2.407,586,2.291,587,1.521,588,1.718,589,2.558,590,1.675,591,4.037,592,3.534,593,1.811,596,1.764,599,3.02,601,3.02,615,1.811,617,2.924,625,1.764,626,3.83,628,2.542,641,3.497,643,3.497,649,3.497,690,2.836,718,4.9,747,2.983,845,2.603,862,3.123,936,2.252,938,3.236,940,5.014,942,2.035,947,2.338,948,2.338,952,4.482,953,3.652,954,4.037,955,2.983,956,2.983,957,2.81,958,2.983,959,5.647,960,4.037,961,5.647,962,4.037,963,3.199,964,3.199,965,3.199,966,2.665,967,3.199,968,3.534,969,2.665,970,2.542,971,2.542,972,2.81,973,2.81,974,2.81,975,2.81,976,2.81,977,3.93,978,3.93,979,3.93,980,4.285,981,3.93,982,3.93,983,3.93,984,4.285,985,3.93,986,5.647,987,3.93,988,5.647,989,3.93,990,3.93,991,3.93,992,3.93,993,3.93,994,3.93,995,3.93]],["t/70",[19,2.017,22,2.239,104,2.196,151,2.074,194,3.432,231,1.554,261,2.581,309,2.196,346,1.366,388,2.582,401,1.867,413,2.582,450,2.371,456,2.554,541,3.804,574,2.643,575,3.804,580,2.304,584,2.362,585,2.362,586,2.249,587,1.482,588,1.674,589,2.521,590,1.632,591,3.962,592,3.483,593,1.765,596,1.718,599,3.483,601,3.483,615,1.765,617,2.87,625,1.718,626,3.758,628,2.477,643,4.034,649,4.034,690,3.27,718,4.841,845,3.002,862,3.065,936,2.194,938,3.175,942,1.983,947,2.278,948,2.278,952,4.417,953,3.584,954,3.962,955,2.906,956,2.906,957,2.737,958,2.906,960,3.962,962,3.962,963,3.117,964,3.117,965,3.117,966,2.597,967,3.117,968,3.483,969,2.597,970,2.477,971,2.477,972,2.737,973,2.737,974,2.737,975,2.737,976,2.737,984,4.943,996,2.278,997,4.511,998,5.541,999,5.541,1000,3.829,1001,3.829,1002,3.829,1003,5.782,1004,5.782,1005,3.829,1006,5.782,1007,3.829,1008,3.829,1009,3.829,1010,5.541,1011,3.829,1012,3.829,1013,3.829]],["t/72",[19,2.24,22,2.293,129,2.57,261,2.685,309,2.685,388,2.451,401,2.495,413,1.851,450,3.169,574,2.75,575,4.061,580,2.128,584,2.181,585,2.181,586,2.076,587,1.981,588,2.237,589,2.623,590,2.181,593,2.359,596,2.296,599,3.624,601,3.624,615,2.359,625,2.296,643,4.197,649,4.197,689,4.544,690,3.815,845,3.123,862,2.83,938,2.932,942,2.65,947,3.045,948,3.045,956,3.884,957,3.658,958,3.884,984,5.143,996,4.032,997,4.166,1003,6.016,1004,4.544,1006,4.544,1014,5.117,1015,6.776,1016,6.776,1017,6.776,1018,5.117,1019,6.776,1020,4.197,1021,5.117,1022,5.117,1023,5.117]],["t/74",[19,2.145,22,2.228,104,2.823,129,2.266,194,3.855,231,1.831,261,2.466,309,2.466,346,1.112,388,2.252,401,2.2,413,1.633,450,2.795,456,2.08,541,3.857,574,2.526,575,3.857,580,1.876,584,1.924,585,1.924,586,1.831,587,1.747,588,1.973,589,2.409,590,1.924,592,3.81,596,2.025,599,3.329,601,3.329,617,2.337,619,3.061,626,3.061,628,2.919,643,3.855,649,3.855,690,3.126,718,5.209,845,2.869,862,2.496,925,3.674,927,4.007,938,2.586,942,2.337,947,2.685,948,2.685,952,4.222,954,3.226,956,3.425,957,3.226,958,3.425,960,3.226,962,3.226,966,3.061,967,3.674,968,3.81,969,3.061,970,2.919,971,2.919,972,3.226,973,3.226,974,3.226,975,3.226,976,3.226,984,4.724,996,2.685,997,3.674,1020,3.855,1024,4.513,1025,4.513,1026,4.513,1027,4.513,1028,5.527,1029,4.513,1030,4.513,1031,4.513,1032,4.007,1033,4.513,1034,4.513,1035,4.513,1036,4.513,1037,4.513]],["t/76",[19,1.606,22,2.143,36,3.839,104,1.993,149,1.967,151,2.705,194,3.116,231,1.363,261,1.993,309,1.993,346,0.828,388,1.215,411,3.267,413,2.182,456,2.319,541,3.365,574,1.363,575,3.365,580,2.508,584,2.571,585,2.571,586,2.448,587,1.3,588,1.468,589,2.916,590,1.431,591,3.597,592,3.226,593,2.319,596,1.507,599,2.69,601,2.69,615,2.319,617,2.605,618,3.412,625,2.258,626,3.412,628,2.172,638,3.412,641,3.116,643,3.116,649,3.116,657,2.278,659,4.313,690,2.527,706,4.096,718,4.544,810,1.739,845,2.319,846,3.365,936,2.883,938,3.457,942,1.739,947,1.998,948,1.998,952,2.278,953,3.254,954,3.597,955,2.548,960,2.401,962,4.313,966,3.412,968,3.226,969,2.278,970,2.172,971,2.172,972,2.401,973,2.401,974,2.401,975,2.401,976,2.401,980,3.818,1020,3.116,1038,4.79,1039,6.033,1040,4.467,1041,2.982,1042,4.096,1043,4.096,1044,4.313,1045,3.358,1046,3.358,1047,3.358,1048,3.358,1049,5.031,1050,4.467,1051,5.031,1052,5.031,1053,4.467,1054,4.467,1055,4.467,1056,4.467,1057,4.096,1058,3.358,1059,3.358,1060,3.358,1061,4.467,1062,4.467,1063,3.358,1064,3.358,1065,3.358,1066,3.358,1067,2.278,1068,3.358,1069,3.358,1070,3.358,1071,3.358,1072,3.358]],["t/78",[19,1.589,21,2.93,22,2.195,104,1.968,149,1.954,151,2.694,194,3.076,231,1.339,269,0.71,309,1.968,346,0.813,411,3.238,413,2.16,456,2.289,541,3.335,574,1.339,575,3.758,580,2.482,584,2.545,585,2.545,586,2.423,587,1.277,588,1.443,589,2.897,590,1.407,591,3.55,592,3.193,593,2.289,596,1.481,599,2.655,601,2.655,615,2.289,617,2.572,618,3.368,625,2.228,626,3.368,628,2.135,638,3.368,641,3.076,643,3.076,649,3.076,657,2.238,659,4.268,690,2.494,706,4.042,718,4.505,810,1.709,845,2.289,846,3.335,936,2.845,938,3.421,942,1.709,947,1.963,948,1.963,952,2.238,953,3.212,954,3.55,955,2.504,960,2.359,962,4.268,966,3.368,968,3.193,969,2.238,970,2.135,971,2.135,972,2.359,973,2.359,974,2.359,975,2.359,976,2.359,980,3.769,1020,3.076,1032,4.409,1038,4.748,1041,2.93,1043,4.042,1044,4.268,1053,4.409,1056,4.409,1061,4.409,1062,4.409,1073,6.642,1074,5.97,1075,4.966,1076,4.966,1077,4.966,1078,4.966,1079,4.966,1080,4.966,1081,4.966,1082,4.966,1083,3.3,1084,4.966,1085,4.966,1086,4.966,1087,4.966,1088,4.966,1089,4.966,1090,4.966,1091,4.966,1092,4.966,1093,3.3]],["t/80",[19,1.252,22,2.388,104,3.24,151,1.498,231,1.909,309,2.537,346,1.159,390,2.798,413,2.316,425,2.798,541,3.656,574,2.598,575,4.106,580,2.662,584,2.729,585,2.729,586,2.598,587,1.821,588,2.056,589,2.479,590,2.005,592,2.515,596,2.111,599,4.372,601,4.372,605,7.259,625,2.111,788,4.176,862,2.601,938,3.669,942,2.436,947,2.798,948,2.798,952,4.343,963,3.829,964,3.829,965,3.829,966,3.19,968,3.893,969,3.19,970,3.042,971,3.042,1043,3.829,1094,6.403,1095,6.403,1096,4.703,1097,4.703,1098,3.042,1099,4.703,1100,6.403,1101,4.703,1102,4.703,1103,4.703,1104,4.703,1105,4.703,1106,4.703,1107,4.703,1108,4.703,1109,4.703,1110,4.703]],["t/83",[22,1.684,149,2.074,232,3.872,346,1.958,586,2.668,727,4.419,862,3.637,874,5.137,876,3.768,1111,4.46,1112,5.964,1113,5.353,1114,5.353,1115,4.073,1116,3.637,1117,4.46,1118,5.353,1119,6.576,1120,6.576]],["t/85",[22,1.644,149,1.676,222,2.958,232,3.129,346,1.582,459,3.336,472,2.88,727,4.053,763,5.225,862,3.549,874,4.151,1112,5.462,1114,5.225,1117,4.353,1118,5.225,1121,6.418,1122,4.151,1123,3.975,1124,5.94,1125,3.223,1126,4.353,1127,7.826,1128,6.418,1129,6.418,1130,6.418,1131,5.225,1132,4.656,1133,3.975]],["t/87",[22,2.47,107,2.32,122,2.687,145,1.569,149,1.133,158,4.327,170,2.222,185,1.896,203,1.471,231,2.457,232,2.952,243,2.32,244,2.942,269,1.08,322,3.531,400,2.178,404,3.91,459,2.581,563,2.942,576,3.101,580,1.803,586,1.76,625,1.946,727,3.613,876,3.47,916,2.486,932,4.492,934,3.292,1112,2.806,1114,4.93,1116,3.858,1118,3.531,1125,3.504,1126,2.942,1134,6.055,1135,3.101,1136,6.055,1137,3.292,1138,3.858,1139,4.338,1140,3.101,1141,3.101,1142,2.486,1143,3.531,1144,5.679,1145,3.531,1146,3.531,1147,6.147,1148,4.596,1149,5.377,1150,3.531,1151,4.93,1152,3.292,1153,3.101,1154,4.338,1155,3.531,1156,4.338,1157,6.055,1158,6.055,1159,4.338,1160,6.055,1161,4.338,1162,3.531]],["t/89",[9,3.099,22,2.33,28,4.403,52,1.856,65,1.474,90,2.036,117,2.722,136,2.889,149,2.304,151,1.212,153,2.413,170,1.757,185,1.664,200,2.722,201,2.582,203,1.291,210,3.57,215,4.188,222,1.755,231,1.545,232,1.856,243,2.036,264,3.099,269,0.545,301,2.036,346,1.6,366,3.38,425,3.283,459,2.767,472,2.476,589,2.756,625,2.476,636,2.722,659,2.722,727,3.687,831,4.188,916,3.162,1098,2.463,1112,3.57,1115,2.358,1116,2.105,1122,4.605,1125,1.912,1126,2.582,1133,3.418,1137,4.188,1138,2.105,1153,2.722,1155,3.099,1163,3.862,1164,4.188,1165,3.807,1166,8.326,1167,6.71,1168,6.321,1169,3.38,1170,3.099,1171,3.807,1172,4.041,1173,5.519,1174,3.807,1175,3.807,1176,3.807,1177,3.807,1178,3.807,1179,3.807,1180,4.9,1181,3.807,1182,2.889,1183,5.519,1184,8.129,1185,3.807,1186,3.807,1187,3.807,1188,6.491,1189,4.641,1190,4.9,1191,3.807,1192,3.38,1193,3.38,1194,3.743,1195,3.38,1196,3.099,1197,3.099,1198,3.807,1199,3.38,1200,3.807,1201,3.807,1202,3.807]],["t/92",[8,2.616,22,2.475,46,2.034,148,1.732,149,1.94,151,2.094,309,2.606,316,4.701,338,2.085,348,2.385,388,1.77,413,2.998,487,2.911,574,1.985,580,2.034,584,2.085,585,2.085,586,1.985,587,1.894,588,2.139,589,2.546,590,2.085,596,2.196,597,2.706,598,2.911,635,2.318,727,3.406,875,3.03,1125,2.457,1203,4.344,1204,3.318,1205,4.344,1206,3.983,1207,4.893,1208,4.344,1209,8.864,1210,4.893,1211,4.893,1212,4.893,1213,4.893,1214,4.893,1215,7.428,1216,4.893,1217,4.893,1218,4.893,1219,4.893,1220,4.893,1221,4.893,1222,4.893,1223,4.893,1224,4.893,1225,4.344,1226,4.893]],["t/94",[1,0.514,4,0.31,7,0.158,8,0.677,9,0.916,12,0.6,17,0.127,19,0.093,22,2.428,28,0.237,36,0.102,41,0.158,42,0.145,45,1.692,50,0.127,53,0.127,55,0.158,57,1.261,65,0.135,74,0.089,78,0.226,84,0.158,86,0.158,88,0.31,89,0.237,90,0.955,91,0.368,92,0.255,98,0.158,104,0.07,114,0.31,117,0.25,118,0.135,122,0.95,131,1.03,134,0.537,139,0.55,145,0.126,148,0.239,149,1.082,150,0.145,151,1.748,152,0.391,153,0.492,156,0.31,158,0.102,162,0.158,168,0.074,172,0.145,177,0.145,180,0.145,184,0.444,185,0.428,186,0.457,190,0.063,191,0.478,192,0.127,196,0.098,198,0.419,200,0.483,201,0.665,203,0.281,204,0.11,206,0.349,208,0.744,211,0.349,212,0.6,223,1.023,225,0.145,232,0.329,233,0.209,243,0.187,244,0.665,245,0.858,249,0.284,250,0.127,251,0.158,254,1.686,260,0.158,261,2.78,262,2.395,264,0.284,268,0.11,282,0.819,285,0.513,290,0.31,292,0.265,293,0.457,298,0.999,301,0.095,309,0.138,322,0.284,338,2.968,339,0.284,345,0.145,346,1.16,347,0.513,348,0.087,349,0.135,351,0.31,354,0.158,357,0.087,360,0.854,368,0.237,370,0.11,371,0.158,374,0.542,376,0.275,378,0.199,379,0.669,386,0.145,388,0.997,390,0.753,392,0.127,393,0.237,394,0.537,395,0.121,399,0.848,400,0.635,401,0.405,403,2.375,404,0.794,409,0.284,411,0.748,413,2.186,420,0.145,422,1.096,423,0.135,425,0.669,428,1.855,430,0.368,432,0.494,445,0.803,446,0.115,450,0.697,456,0.161,459,0.597,466,0.127,467,0.102,472,0.373,473,0.992,480,0.607,483,0.181,485,1.124,487,0.208,497,0.31,498,0.391,502,0.31,504,0.226,506,0.237,513,0.284,527,0.284,531,0.158,537,0.645,540,0.127,541,0.704,546,0.457,563,0.237,573,0.594,574,3.333,575,2.229,576,0.483,578,1.64,580,0.074,584,0.149,585,0.076,586,0.072,587,0.069,588,0.078,589,0.49,590,0.149,592,0.444,593,0.452,596,0.08,597,1.119,601,0.095,607,0.265,609,0.25,611,0.115,615,0.082,617,0.267,619,0.237,625,2.065,635,1.633,636,0.127,657,0.237,658,0.25,659,0.368,674,0.237,690,1.88,700,0.115,701,0.115,716,0.135,717,0.6,719,0.784,720,0.858,723,0.458,724,0.115,725,0.158,727,0.508,729,0.158,732,0.31,759,0.307,760,1.029,767,7.511,772,0.916,775,0.457,783,0.265,786,0.127,787,0.158,789,0.457,796,0.25,798,1.204,802,2.566,810,0.092,812,0.158,813,0.158,844,0.514,845,0.311,846,1.73,848,0.676,849,0.135,850,0.55,852,0.418,853,0.25,858,0.145,859,0.237,869,0.31,872,0.098,874,0.115,875,0.514,877,0.284,881,0.074,892,0.419,903,0.158,908,0.368,909,0.2,917,0.158,936,0.2,937,1.362,947,0.106,948,0.106,957,1.446,980,1.535,996,3.451,1020,0.11,1067,1.293,1098,0.333,1115,0.216,1122,0.115,1123,0.319,1125,0.704,1126,0.121,1135,1.188,1138,2.359,1140,0.905,1141,1.002,1142,0.102,1143,0.145,1149,2.691,1153,0.368,1155,0.419,1167,0.158,1169,0.31,1170,0.145,1172,0.095,1180,1.124,1182,0.391,1189,1.002,1190,1.362,1192,2.362,1193,5.206,1194,3.085,1195,3.195,1197,1.917,1199,0.737,1204,0.237,1205,0.158,1206,0.145,1208,0.158,1227,0.178,1228,0.158,1229,0.178,1230,0.178,1231,0.178,1232,0.158,1233,0.158,1234,0.178,1235,0.158,1236,0.178,1237,0.178,1238,0.178,1239,0.457,1240,0.349,1241,0.158,1242,0.178,1243,2.137,1244,1.995,1245,1.995,1246,2.023,1247,2.023,1248,2.023,1249,0.178,1250,0.178,1251,0.515,1252,6.748,1253,2.137,1254,1.661,1255,0.178,1256,0.178,1257,1.475,1258,1.248,1259,0.178,1260,0.178,1261,0.349,1262,0.178,1263,0.349,1264,0.349,1265,0.349,1266,0.349,1267,0.349,1268,6.709,1269,0.349,1270,0.349,1271,5.041,1272,0.349,1273,0.349,1274,0.178,1275,0.178,1276,1.265,1277,0.83,1278,1.661,1279,0.127,1280,0.145,1281,0.457,1282,0.349,1283,1.533,1284,0.178,1285,0.178,1286,0.178,1287,1.535,1288,0.98,1289,0.515,1290,3.031,1291,0.31,1292,0.178,1293,0.178,1294,0.115,1295,0.178,1296,0.178,1297,0.457,1298,0.349,1299,0.135,1300,0.999,1301,0.178,1302,0.178,1303,1.125,1304,0.515,1305,0.349,1306,0.515,1307,0.349,1308,0.349,1309,0.349,1310,0.178,1311,0.349,1312,0.178,1313,0.158,1314,0.178,1315,0.178,1316,0.675,1317,0.178,1318,0.98,1319,1.661,1320,2.561,1321,3.367,1322,0.178,1323,0.675,1324,0.349,1325,0.349,1326,0.675,1327,0.178,1328,0.178,1329,1.692,1330,0.178,1331,1.124,1332,0.349,1333,0.178,1334,0.178,1335,0.349,1336,0.515,1337,0.178,1338,0.284,1339,0.178,1340,2.66,1341,0.178,1342,0.178,1343,0.349,1344,0.349,1345,2.561,1346,0.675,1347,0.178,1348,0.178,1349,0.265,1350,0.178,1351,0.158,1352,0.349,1353,0.675,1354,0.515,1355,0.515,1356,0.178,1357,0.178,1358,0.178,1359,0.98,1360,0.178,1361,0.178,1362,2.137,1363,0.178,1364,0.178,1365,0.178,1366,0.158,1367,0.178,1368,0.178,1369,0.178,1370,0.178,1371,0.83,1372,0.349,1373,0.515,1374,0.515,1375,0.515,1376,0.178,1377,0.178,1378,0.515,1379,0.349,1380,0.178,1381,0.515,1382,2.002,1383,2.085,1384,0.675,1385,2.247,1386,0.178,1387,0.515,1388,0.457,1389,0.515,1390,0.515,1391,0.349,1392,0.178,1393,0.178,1394,0.178,1395,0.515,1396,0.675,1397,0.178,1398,1.265,1399,0.349,1400,0.676,1401,0.349,1402,0.349,1403,0.178,1404,0.178,1405,0.178,1406,0.178,1407,0.178,1408,0.178,1409,0.349,1410,0.178,1411,0.419,1412,0.6,1413,0.515,1414,0.349,1415,0.178,1416,0.349,1417,0.349,1418,0.178,1419,0.178,1420,0.178,1421,0.178,1422,0.178,1423,0.178,1424,0.178,1425,0.178,1426,0.178,1427,0.158,1428,0.178,1429,0.178,1430,0.145,1431,0.178,1432,0.178,1433,0.178,1434,0.178,1435,0.178,1436,0.178,1437,0.178,1438,0.178,1439,0.178,1440,0.178,1441,0.83,1442,0.178,1443,0.178,1444,0.178,1445,0.178,1446,0.178,1447,0.178,1448,0.178,1449,0.515,1450,0.31,1451,0.178,1452,0.798,1453,4.143,1454,0.515,1455,1.785,1456,0.83,1457,0.178,1458,0.178,1459,0.178,1460,0.178,1461,1.402,1462,0.178,1463,0.178,1464,2.929,1465,0.178,1466,0.178,1467,0.178,1468,0.178,1469,0.178,1470,0.83,1471,0.178,1472,0.178,1473,0.675,1474,0.178,1475,0.349,1476,6.429,1477,0.178,1478,0.178,1479,0.515,1480,0.178,1481,0.349,1482,0.349,1483,0.349,1484,0.349,1485,0.515,1486,0.178,1487,0.178,1488,2.942,1489,0.178,1490,0.349,1491,0.178,1492,0.178,1493,0.178,1494,0.178,1495,0.349,1496,0.349,1497,0.178,1498,0.178,1499,0.178,1500,0.178,1501,0.349,1502,0.515,1503,0.675,1504,0.349,1505,0.349,1506,0.349,1507,0.675,1508,2.137,1509,0.83,1510,0.515,1511,0.349,1512,0.178,1513,0.374,1514,0.349,1515,0.515,1516,0.31,1517,0.349,1518,0.349,1519,0.349,1520,0.83,1521,0.515,1522,0.25,1523,0.178,1524,0.178,1525,1.661,1526,0.178,1527,0.675,1528,0.349,1529,3.031,1530,0.178,1531,0.178,1532,0.178,1533,0.178,1534,0.349,1535,0.178,1536,0.178,1537,0.178,1538,0.178,1539,0.178,1540,0.178,1541,0.83,1542,0.178,1543,0.178,1544,0.178,1545,0.178,1546,0.178,1547,0.178,1548,0.178,1549,0.178,1550,0.178,1551,0.178,1552,0.178,1553,0.178,1554,0.25,1555,0.349,1556,0.515,1557,0.178,1558,0.178,1559,0.178,1560,0.237,1561,0.145,1562,0.178,1563,0.178,1564,0.178,1565,1.363,1566,0.178,1567,0.178,1568,0.349,1569,0.178,1570,0.178,1571,0.178,1572,0.178,1573,0.178,1574,0.178,1575,0.178,1576,0.178,1577,0.349,1578,0.178,1579,0.178,1580,0.178,1581,0.391,1582,0.178,1583,0.178,1584,0.178,1585,0.675,1586,0.349,1587,0.349,1588,0.178,1589,0.349,1590,0.349,1591,0.515,1592,0.178,1593,0.349,1594,0.87,1595,0.178,1596,0.349,1597,0.515,1598,0.515,1599,0.349,1600,1.125,1601,0.178,1602,0.178,1603,0.515,1604,0.178,1605,0.178,1606,0.178,1607,0.178,1608,0.178,1609,1.785,1610,0.515,1611,0.515,1612,0.178,1613,0.178,1614,0.178,1615,0.178,1616,0.178,1617,0.178,1618,0.515,1619,0.515,1620,0.178,1621,0.178,1622,0.178,1623,0.178,1624,0.178,1625,0.216,1626,0.178,1627,0.675,1628,0.178,1629,0.178,1630,0.178,1631,0.178,1632,0.178,1633,0.178,1634,0.178,1635,0.349,1636,0.178,1637,0.284,1638,0.419,1639,0.349,1640,0.178,1641,0.178,1642,0.349,1643,0.178,1644,0.178,1645,4.996,1646,0.178,1647,0.178,1648,0.145,1649,0.178,1650,0.158,1651,2.247,1652,2.561,1653,0.178,1654,0.178,1655,0.178,1656,0.178,1657,0.178,1658,0.178,1659,0.178,1660,0.178,1661,0.178,1662,1.785,1663,0.349,1664,0.178,1665,0.515,1666,1.125,1667,0.178,1668,0.178,1669,0.178,1670,0.178,1671,0.178,1672,0.178,1673,0.178,1674,0.349,1675,0.178,1676,0.349,1677,0.349,1678,0.675,1679,0.349,1680,0.178,1681,0.178,1682,0.178,1683,0.83,1684,0.208,1685,0.178,1686,0.349,1687,0.675,1688,0.349,1689,0.98,1690,0.349,1691,0.349,1692,0.349,1693,0.83,1694,0.349,1695,0.349,1696,0.349,1697,1.265,1698,0.83,1699,0.349,1700,0.419,1701,0.349,1702,0.675,1703,0.349,1704,0.349,1705,0.178,1706,0.178,1707,0.178,1708,0.178,1709,0.178,1710,0.349,1711,0.178,1712,0.349,1713,0.178,1714,0.178,1715,0.178,1716,0.178,1717,0.349,1718,0.515,1719,0.178,1720,0.178,1721,0.349,1722,0.178,1723,0.83,1724,0.98,1725,0.349,1726,0.178,1727,0.83,1728,0.515,1729,0.675,1730,0.349,1731,0.515,1732,0.515,1733,0.515,1734,0.675,1735,0.349,1736,0.83,1737,0.83,1738,0.675,1739,0.178,1740,0.178,1741,0.178,1742,0.178,1743,1.125,1744,0.178,1745,0.178,1746,0.349,1747,0.178,1748,0.178,1749,0.349,1750,0.178,1751,0.178,1752,0.178,1753,0.178,1754,0.178,1755,0.178,1756,0.178,1757,0.178,1758,0.178,1759,0.178,1760,0.515,1761,0.178,1762,0.127,1763,1.124,1764,0.178,1765,0.178,1766,0.178,1767,0.349,1768,0.178,1769,0.178,1770,0.178,1771,0.178,1772,0.178,1773,0.178,1774,0.178,1775,0.178,1776,0.675,1777,0.178,1778,0.178,1779,0.349,1780,0.349,1781,0.701,1782,0.178,1783,0.178,1784,0.178,1785,0.178,1786,0.178,1787,0.178,1788,0.178,1789,0.178,1790,0.178,1791,2.247,1792,0.178,1793,0.178,1794,0.349,1795,0.515,1796,0.31,1797,0.178,1798,0.178,1799,0.178,1800,0.158,1801,0.178,1802,0.178,1803,0.515,1804,0.178,1805,0.483,1806,0.265,1807,2.247,1808,0.178,1809,0.178,1810,0.178,1811,0.178,1812,0.319,1813,0.178,1814,0.178,1815,0.178,1816,0.145,1817,0.349,1818,0.178,1819,0.178,1820,0.458,1821,0.361,1822,0.178,1823,0.178,1824,0.178,1825,0.178,1826,0.178,1827,0.178,1828,0.178,1829,1.906,1830,0.178,1831,0.178,1832,0.178,1833,0.265,1834,0.178,1835,0.349,1836,0.98,1837,0.178,1838,0.178,1839,0.178,1840,0.178,1841,0.178,1842,0.178,1843,0.178,1844,0.349,1845,0.178,1846,0.178,1847,0.178,1848,0.178,1849,0.349,1850,0.178,1851,0.349,1852,0.178,1853,0.178,1854,0.349,1855,0.178,1856,0.178,1857,0.178,1858,0.178,1859,0.675,1860,0.158,1861,0.178,1862,0.178,1863,0.178,1864,0.515,1865,0.515,1866,0.178,1867,0.349,1868,0.178,1869,0.349,1870,0.178,1871,0.349,1872,0.178,1873,0.349,1874,0.178,1875,0.178,1876,0.349,1877,0.349,1878,0.178,1879,0.349,1880,0.178,1881,0.178,1882,0.178,1883,0.178,1884,0.145,1885,0.349,1886,0.178,1887,0.178,1888,0.178,1889,0.178,1890,0.178,1891,0.178,1892,0.178,1893,0.178,1894,0.675,1895,0.178,1896,0.178,1897,0.178,1898,0.178,1899,0.178,1900,0.178,1901,0.178,1902,0.178,1903,0.178,1904,0.178,1905,0.178,1906,0.178,1907,0.178,1908,0.178,1909,1.125,1910,0.98,1911,0.349,1912,0.515,1913,0.349,1914,0.178,1915,0.349,1916,0.178,1917,0.178,1918,0.178,1919,0.178,1920,0.178,1921,0.178,1922,0.178,1923,0.178,1924,0.178,1925,0.83,1926,0.178,1927,0.178,1928,0.83,1929,0.515,1930,0.349,1931,0.349,1932,0.349,1933,0.83,1934,0.515,1935,0.349,1936,0.349,1937,0.349,1938,0.349,1939,0.284,1940,0.158,1941,0.178,1942,0.178,1943,0.178,1944,0.675,1945,0.178,1946,0.178,1947,2.355,1948,0.178,1949,0.178,1950,0.349,1951,0.349,1952,0.178,1953,0.349,1954,0.178,1955,0.349,1956,0.178,1957,0.178,1958,0.178,1959,0.178,1960,0.178,1961,0.178,1962,0.178,1963,0.178,1964,0.178,1965,0.178,1966,0.349,1967,0.178,1968,0.178,1969,0.178,1970,0.178,1971,0.349,1972,0.178,1973,0.178,1974,0.178,1975,0.178,1976,0.515,1977,0.178,1978,0.178,1979,0.178,1980,0.349,1981,0.178,1982,0.178,1983,0.178,1984,0.178,1985,0.178,1986,0.178,1987,0.178,1988,0.178,1989,0.675,1990,0.349,1991,0.349,1992,0.178,1993,0.515,1994,0.178,1995,3.203,1996,0.178,1997,0.178,1998,0.349,1999,0.349,2000,0.178,2001,0.349,2002,1.125,2003,0.83,2004,0.178,2005,0.675,2006,1.125,2007,0.349,2008,0.515,2009,0.178,2010,0.515,2011,0.178,2012,0.178,2013,0.178,2014,0.178,2015,0.178,2016,1.125,2017,0.178,2018,0.83,2019,0.178,2020,0.83,2021,0.178,2022,0.31,2023,0.178,2024,0.31,2025,0.178,2026,0.178,2027,0.98,2028,0.178,2029,0.178,2030,0.178,2031,0.515,2032,0.178,2033,2.023,2034,0.515,2035,0.178,2036,3.031,2037,1.265,2038,0.178,2039,0.178,2040,0.178,2041,0.349,2042,0.178,2043,0.178,2044,0.178,2045,0.178,2046,0.178,2047,0.178,2048,0.349,2049,0.675,2050,1.906,2051,0.349,2052,1.661,2053,1.402,2054,1.661,2055,1.533,2056,0.178,2057,0.178,2058,0.178,2059,0.178,2060,0.178,2061,0.349,2062,1.265,2063,0.349,2064,0.178,2065,0.515,2066,0.178,2067,0.178,2068,0.178,2069,0.349,2070,0.158,2071,0.158,2072,0.178,2073,0.178,2074,0.178,2075,0.178,2076,0.178,2077,0.178,2078,0.178,2079,0.135,2080,0.178,2081,0.349,2082,0.178,2083,0.178,2084,0.178,2085,0.178,2086,0.178,2087,0.178,2088,0.178,2089,0.178,2090,0.178,2091,0.178,2092,0.349,2093,0.178,2094,0.349,2095,0.349,2096,0.178,2097,0.349,2098,0.178,2099,0.178,2100,0.178,2101,0.178,2102,0.178,2103,0.178,2104,0.178,2105,2.85,2106,0.349,2107,0.178,2108,0.349,2109,0.178,2110,0.6,2111,0.178,2112,0.178,2113,0.178,2114,0.31,2115,0.178,2116,0.178,2117,0.178,2118,0.158,2119,0.178,2120,0.178,2121,0.178,2122,0.178,2123,0.349,2124,0.178,2125,0.349,2126,0.265,2127,0.178,2128,0.178,2129,0.178,2130,0.178,2131,0.178,2132,0.178,2133,0.178,2134,0.178,2135,0.178,2136,0.178,2137,0.349,2138,0.178,2139,0.178,2140,0.98,2141,0.676,2142,0.349,2143,0.178,2144,0.98,2145,0.675,2146,0.515,2147,0.178,2148,0.178,2149,0.178,2150,0.178,2151,0.178,2152,0.349,2153,0.178,2154,0.178,2155,0.178,2156,0.349,2157,0.178,2158,0.178,2159,0.178,2160,0.178,2161,0.178,2162,0.178,2163,0.178,2164,0.178,2165,0.178,2166,0.178,2167,0.349,2168,0.349,2169,0.178,2170,0.675,2171,0.178,2172,0.349,2173,0.178,2174,0.178,2175,0.178,2176,0.178,2177,0.178,2178,0.178,2179,0.178,2180,0.178,2181,0.178,2182,0.178,2183,0.178,2184,0.178,2185,0.178,2186,0.178,2187,0.178,2188,0.178,2189,0.178,2190,0.178,2191,0.178,2192,0.349,2193,0.349,2194,0.515,2195,0.457,2196,0.83,2197,0.83,2198,0.515,2199,0.98,2200,0.83,2201,0.349,2202,0.98,2203,0.178,2204,0.349,2205,0.178,2206,0.158,2207,0.158,2208,0.349,2209,0.121,2210,0.349,2211,0.349,2212,0.178,2213,0.158,2214,0.178,2215,0.178,2216,0.178,2217,0.178,2218,0.349,2219,0.178,2220,1.265,2221,0.178,2222,0.178,2223,0.178,2224,0.178,2225,0.178,2226,0.349,2227,0.178,2228,0.178,2229,0.178,2230,0.178,2231,0.178,2232,0.178,2233,0.178,2234,0.178,2235,0.178,2236,0.158,2237,0.178,2238,0.515,2239,0.178,2240,0.178,2241,0.178,2242,0.178,2243,0.178,2244,0.178,2245,0.349,2246,0.178,2247,0.178,2248,0.178,2249,0.178,2250,0.178,2251,0.178,2252,0.178,2253,0.178,2254,0.178,2255,0.178,2256,0.178,2257,0.178,2258,0.178,2259,0.178,2260,0.349,2261,0.178,2262,0.178,2263,0.178,2264,0.178,2265,0.178,2266,0.178,2267,0.178,2268,0.83,2269,0.178,2270,0.178,2271,0.178,2272,0.178,2273,0.178,2274,0.178,2275,0.349,2276,0.515,2277,0.178,2278,0.178,2279,0.178,2280,0.178,2281,0.178,2282,0.349,2283,0.178,2284,0.178,2285,0.349,2286,0.178,2287,0.349,2288,0.178,2289,0.178,2290,0.178,2291,0.178,2292,0.178,2293,0.178,2294,0.178,2295,0.178,2296,0.349,2297,0.178,2298,0.178,2299,0.178,2300,0.158,2301,0.178,2302,0.178,2303,0.178,2304,0.178,2305,0.178,2306,0.178,2307,0.178,2308,0.178,2309,0.178,2310,0.178,2311,0.178,2312,0.178,2313,0.178,2314,0.178,2315,0.178,2316,0.178,2317,1.265,2318,0.178,2319,0.349,2320,0.178,2321,0.349,2322,0.178,2323,0.178,2324,0.178,2325,0.145,2326,0.31,2327,0.178,2328,0.178,2329,0.178,2330,0.178,2331,0.178,2332,0.178,2333,0.178,2334,0.178,2335,0.178,2336,0.178,2337,0.178,2338,1.402,2339,0.178,2340,0.178,2341,0.178,2342,0.178,2343,0.135,2344,0.178,2345,0.178,2346,0.349,2347,0.178,2348,0.178,2349,0.178,2350,0.178,2351,0.178,2352,0.178,2353,0.178,2354,0.178,2355,0.178,2356,0.178,2357,0.515,2358,0.515,2359,0.515,2360,0.515,2361,0.83,2362,0.83,2363,0.87,2364,0.98,2365,0.178,2366,1.265,2367,0.98,2368,0.178,2369,0.178,2370,0.178,2371,0.178,2372,0.457,2373,0.515,2374,0.349,2375,0.178,2376,0.349,2377,0.178,2378,0.178,2379,0.178,2380,0.178,2381,0.178,2382,0.178,2383,0.178,2384,0.178,2385,0.178,2386,0.178,2387,0.178,2388,0.178,2389,0.178,2390,0.178,2391,0.83,2392,0.675,2393,0.178,2394,0.178,2395,0.349,2396,0.178,2397,0.178,2398,0.178,2399,0.178,2400,0.178,2401,0.178,2402,0.178,2403,0.178,2404,0.178,2405,0.178,2406,0.178,2407,0.178,2408,0.178,2409,0.178,2410,0.349,2411,0.349,2412,0.178,2413,0.178,2414,0.349,2415,0.515,2416,0.178,2417,0.178,2418,0.178,2419,0.178,2420,0.178,2421,0.178,2422,0.178,2423,0.178,2424,0.178,2425,0.178,2426,0.178,2427,0.178,2428,0.178,2429,0.178,2430,0.178,2431,0.178,2432,0.178,2433,0.178,2434,0.178,2435,0.178,2436,0.178,2437,0.178,2438,0.178,2439,0.178,2440,0.178,2441,0.178,2442,0.178,2443,0.178,2444,0.178,2445,0.178,2446,0.178,2447,0.178,2448,0.178,2449,0.178,2450,0.178,2451,0.178,2452,0.178,2453,0.178,2454,0.178,2455,0.178,2456,0.178,2457,0.178,2458,0.178,2459,0.178,2460,0.178,2461,0.349,2462,0.349,2463,0.178,2464,0.178,2465,0.515,2466,0.178,2467,0.178,2468,0.178,2469,0.98,2470,1.125,2471,0.675,2472,0.349,2473,0.178,2474,0.178,2475,0.178,2476,0.515,2477,0.349,2478,0.178,2479,0.349,2480,0.349,2481,0.178,2482,0.178,2483,0.127,2484,0.349,2485,0.349,2486,0.349,2487,0.349,2488,0.178,2489,0.178,2490,0.178,2491,0.178,2492,0.178,2493,0.178,2494,0.31,2495,1.125,2496,0.178,2497,0.178,2498,0.349,2499,0.349,2500,0.178,2501,0.178,2502,0.178,2503,0.349,2504,0.178,2505,0.178,2506,0.178,2507,0.178,2508,0.178,2509,0.178,2510,0.178,2511,0.178,2512,0.178,2513,0.284,2514,0.178,2515,0.349,2516,0.178,2517,0.178,2518,0.178,2519,0.349,2520,0.178,2521,0.349,2522,0.178,2523,0.178,2524,0.178,2525,0.178,2526,0.178,2527,0.178,2528,0.349,2529,0.349,2530,0.178,2531,0.178,2532,0.178,2533,0.178,2534,0.178,2535,0.349,2536,0.178,2537,0.178,2538,0.178,2539,0.178,2540,0.178,2541,0.178,2542,0.178,2543,0.178,2544,0.178,2545,0.178,2546,0.178,2547,0.178,2548,0.178,2549,0.178,2550,0.178,2551,0.178,2552,0.178,2553,0.178,2554,0.178,2555,0.178,2556,0.178,2557,0.178,2558,0.178,2559,0.178,2560,0.178,2561,0.178,2562,0.178,2563,0.349,2564,0.178,2565,0.178,2566,0.349,2567,0.178,2568,0.178,2569,0.178,2570,0.178,2571,0.178,2572,0.178,2573,0.178,2574,0.515,2575,0.178,2576,0.178,2577,0.178,2578,0.178,2579,0.178,2580,0.178,2581,0.178,2582,0.178,2583,0.178,2584,0.178,2585,0.178,2586,0.178,2587,0.178,2588,0.178,2589,0.178,2590,0.178,2591,0.178,2592,0.178,2593,0.178,2594,0.178,2595,0.178,2596,0.178,2597,0.178]],["t/96",[22,1.888,580,3.065,584,3.142,585,3.142,586,2.992,1206,6.002,2598,7.373,2599,7.373]],["t/98",[1,3.475,6,4.982,145,2.873,149,1.465,161,5.144,190,1.986,346,1.774,348,2.736,411,2.736,445,3.215,459,2.391,468,3.103,487,3.338,537,4.123,578,3.338,727,2.906,875,4.456,968,3,970,3.629,971,4.654,1122,4.654,1125,3.613,1196,4.567,1257,4.982,1516,4.982,1565,4.011,2236,4.982,2326,4.982,2600,5.611,2601,5.611,2602,4.258,2603,7.052,2604,5.611,2605,5.611,2606,7.195,2607,4.011,2608,4.567,2609,5.611,2610,5.611,2611,5.611,2612,5.611,2613,5.611,2614,7.195,2615,5.611,2616,4.982,2617,5.611,2618,5.611,2619,4.123,2620,4.567,2621,5.611,2622,5.611]],["t/100",[1,3.116,5,2.982,22,2.447,46,2.786,117,2.401,118,2.548,145,2.182,149,1.575,151,1.069,158,1.924,170,1.069,185,1.468,232,2.453,243,2.69,338,2.144,346,1.487,348,2.453,388,2.424,390,2.993,400,2.527,413,1.82,425,2.993,441,1.796,456,1.548,487,2.993,507,2.548,574,1.363,575,2.527,578,2.993,593,2.319,607,2.548,609,2.401,635,1.591,636,2.401,658,4.79,724,2.172,783,2.548,844,3.116,852,3.737,875,3.737,876,2.883,932,2.993,934,3.818,942,1.739,1020,3.737,1044,2.401,1122,4.334,1125,1.686,1138,2.782,1142,1.924,1143,4.096,1152,2.548,1163,1.998,1170,2.734,1225,2.982,1228,2.982,1232,2.982,1233,2.982,1235,2.982,1239,5.357,1241,2.982,1244,4.467,1287,3.818,1464,4.911,1820,4.092,2024,2.982,2110,2.982,2603,5.357,2607,3.597,2616,2.982,2619,3.457,2620,2.734,2623,2.982,2624,3.358,2625,2.982,2626,2.982,2627,2.734,2628,3.358,2629,3.358,2630,3.358,2631,3.358,2632,3.358,2633,3.358,2634,3.358,2635,3.358,2636,6.7,2637,3.358,2638,3.358,2639,3.358,2640,3.358,2641,3.358,2642,3.358,2643,3.358,2644,3.358,2645,3.358,2646,3.358,2647,3.358,2648,3.358,2649,3.358,2650,3.358,2651,3.358,2652,3.358,2653,3.358,2654,3.358,2655,3.358,2656,3.358,2657,2.982,2658,3.358,2659,3.358,2660,5.949,2661,6.372,2662,2.982,2663,6.033,2664,4.467,2665,2.982,2666,2.982,2667,3.358]],["t/102",[22,2.456,149,1.435,177,4.474,232,2.679,338,3.026,348,2.679,413,2.845,425,3.27,468,3.039,487,4.224,576,3.929,578,3.27,579,4.171,593,2.533,635,2.604,727,3.677,875,4.397,932,3.27,934,4.171,935,4.879,1152,4.171,1168,4.879,1464,4.474,1554,3.929,2619,4.068,2620,4.474,2623,4.879,2625,4.879,2626,4.879,2627,4.474,2660,4.879,2661,6.304,2664,4.879,2665,4.879,2666,4.879,2668,5.495,2669,5.495,2670,5.495,2671,5.495,2672,5.495,2673,5.495,2674,5.495,2675,5.495,2676,5.495,2677,5.495]],["t/104",[170,2.322,203,2.472,269,1.043,473,4.717,585,3.108,849,5.534,942,3.776,1821,3.9,2619,4.179,2678,3.9]],["t/106",[0,1.881,74,2.967,90,3.159,149,1.941,151,2.368,170,1.881,182,3.515,233,2.397,261,2.341,269,1.164,289,3.821,344,4.809,468,3.267,473,3.821,589,2.287,746,2.185,881,3.091,889,3.25,898,3.936,899,5.315,910,3.159,932,3.515,968,3.159,1150,4.809,1151,4.809,1162,4.809,1513,3.267,1638,4.809,1812,3.659,1821,3.159,2209,4.007,2678,3.159,2679,4.224,2680,5.246,2681,5.315,2682,5.246,2683,4.484,2684,5.246,2685,5.246,2686,5.643,2687,4.484]],["t/108",[149,1.986,151,2.421,170,1.95,185,2.677,233,2.485,261,2.427,269,1.088,473,3.961,589,2.371,746,2.265,862,3.387,881,3.438,883,4.154,889,3.324,910,3.275,932,3.644,933,4.205,968,3.275,1145,6.19,1146,4.986,1148,4.648,1513,3.387,1812,3.793,1821,3.275,2209,5.157,2678,3.275,2679,5.436,2681,4.378,2683,4.648,2686,4.648,2688,5.438,2689,6.752,2690,5.438,2691,5.438]],["t/110",[90,3.964,203,2.89,932,4.411,2681,5.3,2692,6.582,2693,7.413]],["t/112",[168,2.999,203,2.446,269,1.032,394,5.427,876,4.134,942,3.736,1113,5.872,1115,4.468,1820,4.893,1821,3.858,2694,5.872]],["t/114",[19,2.269,374,4.1,394,4.795,574,3.008,690,3.723,996,4.411]],["t/116",[19,1.692,35,4.824,36,4.458,151,2.478,261,2.519,369,3.937,374,3.516,378,2.461,411,3.099,617,4.655,618,4.312,625,2.853,627,4.824,635,3.012,690,3.192,760,3.937,1067,4.312,1194,5.703,1560,5.277,1565,4.545,2483,4.545,2695,5.644,2696,6.909,2697,5.175,2698,5.644,2699,5.644,2700,5.644]],["t/118",[19,2.279,35,3.754,36,3.796,104,2.625,149,1.292,151,2.11,181,3.754,200,3.537,203,1.677,222,2.28,261,2.625,346,1.219,369,4.103,374,4.6,378,2.565,411,2.412,541,2.484,578,3.942,579,3.754,599,2.645,615,2.28,635,4.143,638,3.355,647,3.754,690,3.327,719,3.064,760,3.064,785,4.392,802,4.627,845,3.443,873,4.392,996,2.943,1020,3.064,1067,4.493,1113,4.027,1164,3.754,1194,5.411,1411,4.027,1412,4.392,1522,3.537,1560,4.493,1565,3.537,2483,4.736,2697,5.393,2701,7.47,2702,4.392,2703,8.318,2704,5.882,2705,6.632,2706,4.392,2707,4.947,2708,4.392,2709,4.947,2710,4.392]],["t/120",[22,2.441,261,2.949,309,1.946,374,2.716,388,2.385,413,1.776,575,4.29,578,4.428,587,1.901,599,2.626,635,2.327,638,3.331,647,3.727,715,5.367,802,3.042,845,3.43,912,6.058,925,3.998,1020,4.609,1028,4.36,1141,5.32,1189,3.511,1560,5.048,1812,3.042,2607,3.511,2657,4.36,2705,6.608,2706,6.608,2708,6.608,2711,3.998,2712,3.998,2713,4.911,2714,4.911,2715,3.998,2716,4.911,2717,4.911,2718,4.911,2719,4.911,2720,4.911,2721,4.911,2722,4.911,2723,4.911,2724,4.911,2725,6.592,2726,4.911,2727,4.911,2728,4.911,2729,4.911,2730,4.911,2731,4.911,2732,4.911,2733,4.911]],["t/122",[19,1.985,104,2.954,374,4.123,541,3.744,574,3.025,996,4.435]],["t/124",[35,4.848,36,4.471,104,2.531,151,2.485,261,2.531,369,3.956,374,3.533,378,2.473,411,3.114,541,3.208,592,3.416,617,4.661,618,4.332,625,2.866,627,4.848,760,3.956,1194,5.293,1560,5.293,1565,4.566,2483,4.566,2695,5.671,2696,6.929,2697,5.2,2698,5.671,2699,6.929,2700,5.671]],["t/126",[244,5.171,2734,5.787]],["t/128",[22,1.838,413,2.596,587,2.777,635,3.4,1189,5.129,1287,5.445,2607,5.129,2711,5.841,2712,5.841,2715,5.841,2734,5.445,2735,7.175,2736,7.175]],["t/130",[19,1.985,104,2.954,374,4.123,574,3.025,690,3.744,996,4.435]],["t/132",[104,2.97,635,3.552,690,3.765,1067,5.084,1194,5.084]],["t/134",[244,5.171,2734,5.787]],["t/136",[22,1.838,413,2.596,587,2.777,635,3.4,1189,5.129,1287,5.445,2607,5.129,2711,5.841,2712,5.841,2715,5.841,2734,5.445,2737,7.175,2738,7.175]],["t/139",[90,3.698,149,1.806,151,2.202,168,2.875,846,3.473,847,5.248,853,4.944,908,4.944,1050,6.14,1054,6.14,1055,7.268,1057,5.63,2209,4.69,2739,8.185,2740,6.915,2741,6.915,2742,6.915,2743,6.915]],["t/141",[19,1.841,104,3.243,151,2.202,170,2.607,203,2.345,242,3.473,269,0.989,346,1.705,474,5.248,810,3.581,832,4.115,898,3.188,910,4.377,933,3.825,1625,4.283,2744,4.473,2745,5.248]],["t/143",[104,2.938,269,1.061,467,4.248,898,3.417,910,3.964,1513,4.1,2746,7.413]],["t/145",[104,2.905,269,1.212,467,4.201,910,4.53,933,4.684,1513,4.055]],["t/147",[65,2.886,269,1.067,1142,4.272,1163,4.435,2619,4.272,2747,7.455]],["t/149",[269,1.027,346,1.769,472,3.22,487,4.269,875,4.444,1133,4.444,2748,6.371,2749,8.364,2750,6.371,2751,5.445,2752,7.175,2753,7.175]],["t/151",[269,1.01,286,4.789,480,4.374,611,4.568,1111,4.789,1132,4.93,1163,4.201,2079,5.359,2678,3.776,2748,6.27,2754,8.287,2755,5.359,2756,7.061,2757,7.061]],["t/153",[108,5.572,269,1.164,346,1.687,357,3.337,472,3.071,480,4.239,487,4.072,875,4.239,1133,4.239,1142,3.922,1163,4.84,1203,6.077,2750,6.077,2758,6.845,2759,6.845,2760,6.845,2761,6.845,2762,6.077,2763,6.845,2764,6.845]],["t/155",[19,1.587,22,1.527,90,3.187,231,2.419,242,2.993,254,3.415,261,2.362,269,0.853,394,3.856,446,3.856,575,3.755,590,2.54,617,4.569,657,4.043,751,2.993,759,3.546,846,2.993,852,3.692,942,3.087,996,4.448,1115,5.06,1133,3.692,1142,3.415,1182,4.524,1388,5.292,1684,3.546,1820,4.043,1821,3.187,2343,4.524,2627,4.852,2678,3.187,2710,7.253,2744,3.856,2765,5.96,2766,6.638,2767,5.292,2768,5.96,2769,5.96,2770,5.96,2771,5.96]],["t/157",[182,4.485,416,4.169,2772,7.539,2773,5.721]],["t/159",[22,1.781,151,2.214,170,2.214,854,5.659,874,4.496,1382,5.659,2774,6.951,2775,6.951,2776,8.21,2777,8.21,2778,6.951,2779,6.951,2780,7.29,2781,6.951,2782,6.951,2783,6.172]],["t/161",[1,2.678,22,2.486,316,4.319,346,1.066,459,1.843,504,3.908,562,2.391,641,2.678,908,4.979,1067,2.932,1141,4.979,1182,3.281,1196,3.52,1197,3.52,1452,4.918,2195,3.839,2773,3.281,2783,3.839,2784,4.324,2785,5.67,2786,6.964,2787,4.324,2788,4.324,2789,4.324,2790,3.839,2791,4.324,2792,4.324,2793,6.042,2794,4.324,2795,6.042,2796,4.324,2797,4.324,2798,4.324,2799,4.324,2800,4.324,2801,4.324,2802,4.324,2803,4.324,2804,4.324,2805,4.324,2806,4.324,2807,4.324,2808,4.324,2809,4.324,2810,4.324,2811,4.324,2812,4.324,2813,4.324,2814,4.324,2815,3.52,2816,4.324,2817,4.324,2818,4.324,2819,4.324,2820,4.324,2821,4.324,2822,6.042,2823,4.324,2824,4.324,2825,4.324,2826,4.324,2827,4.324,2828,6.042,2829,4.324,2830,4.324,2831,4.324,2832,4.324,2833,4.324,2834,4.324,2835,4.324,2836,4.324,2837,4.324,2838,4.324,2839,4.324,2840,4.324,2841,4.324,2842,6.042,2843,4.324,2844,4.324,2845,4.324,2846,4.324]],["t/163",[22,2.418,131,2.59,170,1.599,203,1.702,269,0.957,346,1.238,425,2.987,459,2.14,500,4.458,504,4.868,544,3.59,562,3.701,852,3.11,889,2.925,898,2.314,933,3.701,1123,4.144,2114,5.941,2343,5.078,2744,3.248,2762,5.941,2766,5.941,2773,5.078,2785,5.447,2815,6.999,2847,4.458,2848,5.941,2849,5.021,2850,5.021,2851,6.691,2852,6.691,2853,6.691,2854,6.691,2855,6.691,2856,6.691,2857,6.691,2858,6.691,2859,6.691,2860,6.691,2861,6.691,2862,6.691,2863,6.682,2864,5.941]],["t/165",[108,5.63,233,2.806,1132,4.115,1450,6.14,2815,5.63,2865,6.915,2866,6.915,2867,6.663,2868,6.915,2869,6.915,2870,6.915,2871,6.915,2872,6.915,2873,6.915,2874,6.915,2875,6.915,2876,6.915,2877,6.915,2878,6.915]],["t/167",[19,1.434,31,4.781,40,3.051,46,2.239,52,2.625,130,2.88,151,1.715,168,2.239,208,4.087,209,3.483,231,2.185,248,3.483,254,3.086,261,2.134,269,1.254,282,3.483,308,4.781,320,3.85,346,1.327,348,2.625,378,2.084,401,2.625,457,2.482,458,4.781,459,2.295,460,4.781,461,4.781,462,4.781,503,4.781,506,3.652,544,3.85,587,2.084,593,2.482,609,3.85,628,3.483,746,1.992,846,4.142,859,3.652,860,4.087,872,2.978,879,4.384,907,3.204,909,3.086,910,2.88,933,4.562,1513,2.978,1561,4.384,1648,4.384,1806,4.087,2879,7.788,2880,5.385,2881,5.385,2882,5.385,2883,5.385,2884,4.752,2885,5.385,2886,5.385,2887,5.385]],["t/169",[0,2.344,38,1.904,40,1.777,46,1.998,47,3.911,65,2.849,78,3.108,113,3.911,129,2.413,130,2.569,145,1.738,148,2.79,170,1.53,190,2.299,203,2.203,254,2.753,259,3.435,269,1.178,282,3.108,346,1.184,368,3.259,382,4.266,404,4.495,431,2.343,434,4.202,483,2.488,540,4.644,719,2.976,746,3.21,751,3.959,844,2.976,872,2.657,881,3.06,884,4.406,889,3.711,893,3.647,894,3.647,898,2.215,907,2.859,909,2.753,916,3.723,933,2.657,1038,3.435,1204,4.406,1684,2.859,2619,2.753,2888,4.217,2889,3.435,2890,4.805,2891,4.805,2892,4.805,2893,4.805,2894,4.805,2895,4.805,2896,4.805,2897,4.266,2898,4.805,2899,3.647,2900,4.805,2901,3.911,2902,4.805,2903,2.976,2904,2.976]],["t/171",[46,3.578,74,2.76,107,2.939,129,3.565,147,3.27,185,2.403,220,4.171,223,3.149,259,3.929,269,0.786,277,2.846,318,3.929,321,3.565,357,3.461,432,3.27,441,2.939,456,2.533,459,2.342,472,2.466,483,2.846,504,3.555,611,4.592,707,4.879,746,3.075,759,3.27,889,3.634,968,2.939,1116,4.35,1124,4.171,1132,4.224,1513,3.039,1684,3.27,1796,4.879,2619,3.149,2744,3.555,2888,4.068,2889,3.929,2905,5.075,2906,7.1,2907,5.495,2908,5.388,2909,4.592,2910,4.879,2911,4.879,2912,5.495,2913,3.929,2914,4.474,2915,5.495]],["t/173",[8,3.757,46,3.56,65,2.093,107,4.173,129,2.715,148,1.913,153,2.364,158,4.025,214,4.103,261,2.142,318,3.865,346,1.924,357,3.805,383,4.401,395,3.667,404,2.8,432,3.217,441,2.891,459,2.304,472,2.426,486,4.103,615,2.492,733,4.103,746,2.886,792,4.401,817,3.497,832,3.217,872,2.99,881,2.248,889,3.412,953,3.497,1116,2.99,1280,4.401,1781,3.865,1805,3.865,1812,4.351,1833,4.103,2867,4.401,2888,4.025,2889,3.865,2901,4.401,2905,5.022,2909,3.497,2913,5.579,2916,5.407,2917,5.407,2918,4.801,2919,5.407,2920,5.407,2921,5.407,2922,5.407,2923,5.407,2924,5.407]],["t/175",[22,1.853,46,2.352,107,3.026,129,3.633,153,2.474,158,3.242,191,2.759,233,2.296,269,0.81,301,3.026,346,1.395,357,2.759,368,3.838,369,3.505,416,3.129,428,3.366,445,3.242,459,2.412,472,2.539,716,4.294,735,4.606,746,2.676,884,3.838,889,3.163,1123,3.505,1124,4.294,1131,4.606,1132,4.744,1133,3.505,1135,4.045,1142,3.242,1144,4.606,1172,3.026,1349,4.294,2888,5.09,2903,4.939,2904,4.939,2905,4.045,2908,5.49,2909,3.66,2925,4.606,2926,6.492,2927,4.606,2928,5.024,2929,5.658]],["t/177",[0,0.84,8,3.655,22,2.335,40,0.975,46,2.155,53,1.885,65,2.646,74,2.097,103,3.399,107,1.41,117,1.885,129,2.603,145,2.133,148,1.835,153,2.266,185,1.825,190,1.478,191,1.286,200,1.885,214,3.169,223,2.393,233,2.104,269,0.597,283,1.788,300,1.788,318,1.885,321,1.324,346,1.83,347,2.001,369,2.586,376,2.233,400,1.324,404,2.685,430,1.885,431,1.286,432,1.569,444,2.001,445,2.97,456,1.215,459,2.513,467,1.511,468,1.458,472,2.326,476,3.916,483,2.162,506,2.832,521,2.001,537,4.255,556,3.399,589,1.616,617,3.053,674,1.788,708,1.366,746,2.746,796,2.985,829,3.399,881,2.841,884,1.788,889,2.809,936,1.511,953,3.353,1098,3.353,1116,3.553,1122,2.701,1125,2.961,1141,2.985,1144,2.147,1147,3.399,1148,2.001,1172,2.233,1204,1.788,1411,2.147,1452,2.147,1522,2.985,1648,2.147,1684,1.569,1781,1.885,1800,2.341,1812,1.633,1939,3.399,1940,2.341,2141,2.147,2325,2.147,2363,2.341,2704,2.341,2744,1.706,2888,4.255,2889,2.985,2903,3.211,2904,3.211,2905,3.706,2908,5.187,2909,3.353,2913,1.885,2914,2.147,2926,3.399,2930,2.637,2931,2.637,2932,5.184,2933,5.829,2934,6.425,2935,5.896,2936,5.184,2937,5.184,2938,5.184,2939,4.603,2940,3.707,2941,5.235,2942,3.707,2943,4.175,2944,4.175,2945,4.175,2946,4.175,2947,4.175,2948,4.175,2949,5.184,2950,4.175,2951,4.175,2952,4.175,2953,4.175,2954,2.341,2955,1.885,2956,2.341,2957,2.341,2958,2.341,2959,2.341,2960,2.341,2961,2.637,2962,1.885,2963,2.001,2964,2.341,2965,2.637,2966,2.637,2967,2.637,2968,2.637,2969,2.637,2970,4.175,2971,2.637,2972,2.637,2973,2.637,2974,2.637,2975,2.637]],["t/179",[0,1.907,8,3.202,19,1.594,28,4.061,46,2.489,65,2.902,107,3.202,153,2.618,222,2.76,269,0.857,316,4.28,321,3.007,346,1.476,357,2.919,472,2.687,563,4.061,746,3.028,751,3.007,810,3.101,844,3.708,881,2.489,889,3.751,1116,4.146,1132,3.562,1135,4.28,1294,3.873,2884,4.061,2888,4.916,2903,4.644,2904,4.644,2913,4.28,2914,4.874,2925,4.874,2926,4.874,2933,4.874,2976,5.316,2977,4.544,2978,5.316]],["t/181",[0,1.457,8,2.446,19,1.673,22,2.367,65,2.99,89,3.103,148,1.619,153,2.747,185,2,190,1.619,203,2.745,210,2.959,222,2.896,265,5.446,269,0.655,316,3.271,338,1.95,346,1.769,369,4.445,378,1.771,403,2.959,404,3.254,431,2.231,459,1.95,520,3.724,537,3.6,711,2.722,746,2.324,751,2.297,759,2.722,829,5.842,881,1.902,884,3.103,889,3.137,907,3.738,909,2.621,953,2.959,1098,2.959,1135,3.271,1172,2.446,1258,5.115,1294,5.411,1382,3.724,2888,2.621,2903,2.834,2904,2.834,2905,3.271,2909,2.959,2925,3.724,2955,3.271,2962,3.271,2976,4.062,2977,4.768,2979,6.289,2980,4.575,2981,4.575,2982,4.575,2983,3.724,2984,4.062,2985,6.283,2986,4.575,2987,4.575,2988,3.724,2989,4.062,2990,3.724,2991,5.13,2992,4.062,2993,4.575,2994,4.575]],["t/183",[22,2.445,50,4.142,65,1.577,74,2.046,103,3.316,129,2.046,134,2.635,153,1.781,185,1.781,210,2.635,221,3.617,223,2.334,282,2.635,301,2.178,338,2.469,346,1.428,370,3.588,394,2.635,397,2.912,428,2.424,429,3.316,430,2.912,445,2.334,456,1.878,468,2.253,486,4.397,506,2.763,537,4.62,544,2.912,615,1.878,625,1.828,746,2.143,802,3.588,881,3.352,889,3.706,893,3.092,894,3.092,1098,2.635,1116,2.253,1172,2.178,1204,5.262,1294,4.75,1522,2.912,2888,3.32,2897,3.617,2899,3.092,2903,3.588,2904,3.588,2909,3.747,2933,3.316,2941,3.617,2954,5.144,2955,2.912,2957,3.617,2959,3.617,2960,5.144,2962,4.82,2977,4.397,2978,3.617,2979,4.716,2984,3.617,2988,4.716,2989,5.986,2990,6.316,2991,5.25,2995,4.073,2996,3.617,2997,4.073,2998,6.742,2999,5.144,3000,4.073,3001,3.617,3002,4.073]],["t/185",[0,2.355,19,2.157,22,2.432,65,1.877,129,2.435,148,1.716,149,0.835,151,1.018,153,2.12,210,2.068,222,3.238,244,2.169,259,2.286,261,1.921,265,3.68,269,0.838,292,2.427,338,2.067,346,1.732,369,1.98,378,1.238,388,1.754,399,1.768,403,3.788,404,3.033,537,2.778,542,2.427,554,2.839,563,2.169,573,2.286,578,2.885,587,1.877,590,2.067,597,2.682,617,1.656,635,2.298,636,2.286,657,2.169,690,2.941,700,2.068,711,1.902,719,1.98,746,2.166,751,1.606,844,3.003,851,2.839,877,3.947,881,2.921,889,3.071,907,1.902,909,1.832,1098,2.068,1115,1.98,1116,1.768,1172,2.593,1294,3.788,1331,4.305,1349,2.427,1522,2.286,1781,2.286,2071,5.804,2483,2.286,2608,2.603,2767,2.839,2888,1.832,2899,2.427,2901,2.603,2903,1.98,2904,1.98,2909,2.068,2939,2.839,2940,2.839,2942,2.839,2955,2.286,2956,4.305,2958,2.839,2962,3.466,2964,2.839,2977,2.427,2979,2.603,2983,3.947,2988,4.768,2990,3.947,2991,5.793,2992,2.839,2996,2.839,2999,2.839,3003,4.849,3004,3.197,3005,3.197,3006,3.197,3007,4.849,3008,4.849,3009,3.197,3010,4.305,3011,3.197,3012,3.197,3013,3.197,3014,3.197,3015,3.197,3016,5.857,3017,3.197,3018,3.197,3019,3.197,3020,4.849,3021,3.197,3022,3.197,3023,3.197,3024,4.849,3025,4.849,3026,3.197,3027,3.197,3028,5.857,3029,3.197,3030,2.839,3031,4.849,3032,3.197,3033,3.197,3034,3.197,3035,3.197]],["t/187",[0,1.817,19,1.519,30,5.067,46,3.024,50,4.079,65,2.209,129,2.866,147,3.395,148,2.02,170,2.316,191,2.782,203,1.935,222,2.63,223,3.27,265,4.331,269,1.041,277,2.955,404,2.955,416,3.156,468,3.156,483,2.955,563,3.87,584,2.432,711,3.395,746,2.69,751,2.866,810,2.955,881,2.372,885,4.079,889,3.5,1115,3.534,1116,3.156,1132,3.395,1279,4.079,1294,3.691,1383,4.645,1513,3.156,1684,3.395,2619,4.168,2702,5.067,2888,4.588,2903,3.534,2904,3.534,2910,5.067,2913,4.079,2955,4.079,2983,4.645,3030,5.067,3036,5.706,3037,4.331,3038,5.067,3039,5.706]],["t/189",[46,2.951,78,4.592,168,2.951,183,3.796,277,3.676,346,1.75,562,3.926,872,3.926,1111,4.815,2755,5.388,3037,5.388,3040,4.815,3041,6.303,3042,6.303,3043,6.303]],["t/191",[27,6.619,145,2.697,269,1.067,553,6.619,1111,5.056,3040,5.056]],["t/193",[168,2.782,190,1.777,259,3.59,261,1.99,269,0.718,277,2.6,346,1.238,360,3.811,399,2.777,400,2.522,401,2.448,456,2.314,459,2.14,472,2.253,504,3.248,562,5.084,573,3.59,708,2.6,796,3.59,832,2.987,874,4.328,889,2.925,916,3.834,1111,4.538,1123,3.11,1140,4.784,1554,4.784,1594,4.458,1684,2.987,1821,3.578,1939,4.088,2126,3.811,2213,4.458,2678,2.685,2780,4.458,2785,4.088,2847,5.941,2848,4.458,2863,5.941,2864,4.458,3040,5.67,3042,6.682,3044,4.458,3045,5.021,3046,5.021,3047,6.691,3048,5.021,3049,5.021,3050,5.021,3051,5.021,3052,5.021,3053,5.021,3054,5.021,3055,5.021,3056,5.021,3057,5.021,3058,5.021,3059,6.691,3060,5.021,3061,5.021,3062,5.021,3063,5.021,3064,5.021,3065,5.021,3066,5.021]],["t/195",[104,2.671,107,3.605,149,1.76,231,2.735,248,5.215,269,1.153,346,1.662,357,3.287,400,3.385,562,4.459,832,4.011,1117,4.572,2300,5.986,3040,5.85,3067,5.488,3068,6.741,3069,5.986,3070,6.741,3071,6.741,3072,5.986]],["t/198",[40,2.409,52,3.85,65,3.056,196,3.601,203,2.208,277,3.372,285,4.942,357,3.175,459,2.775,467,4.524,486,4.942,487,3.874,507,4.942,588,2.847,635,3.741,860,4.942,876,3.731,916,3.731,1115,4.89,1126,4.416,1400,5.301,1625,4.033,1684,3.874,2619,3.731,3043,5.782,3067,6.428]],["t/200",[17,4.655,158,4.869,217,5.782,404,3.372,416,3.601,445,3.731,456,3.001,472,2.922,480,4.033,558,5.301,611,4.212,876,4.869,879,5.301,885,4.655,1117,4.416,1132,4.698,1351,7.01,1806,4.942,2079,4.942,2687,4.942,2927,5.301,2928,5.782,3040,4.416,3073,6.512,3074,5.782,3075,6.512]],["t/202",[90,4.905,148,2.148,149,1.585,158,3.477,338,2.587,357,2.959,468,3.356,472,2.723,562,3.356,607,4.606,759,3.611,865,5.388,876,3.477,1133,3.759,1142,3.477,1152,4.606,1172,3.245,1400,4.94,1554,4.338,1806,4.606,2325,4.94,2687,4.606,3040,4.116,3067,7.22,3074,6.713,3076,6.713,3077,6.069,3078,6.069,3079,7.561,3080,6.069,3081,7.561,3082,6.069,3083,6.069]],["t/204",[122,4.154,145,2.426,148,2.374,149,1.752,168,2.789,269,1.15,277,3.474,368,4.549,378,2.596,401,3.27,457,3.092,798,3.991,1125,4.036,1138,3.71,1140,4.795,1625,4.154,2602,5.09,2884,4.549,3069,5.956,3084,5.956,3085,5.956,3086,5.09,3087,5.956,3088,5.956]],["t/207",[0,1.881,74,2.967,90,3.159,149,1.941,151,2.368,170,1.881,182,3.515,233,2.397,261,2.341,269,1.164,289,3.821,344,4.809,468,3.267,473,3.821,589,2.287,746,2.185,881,3.091,889,3.25,898,3.936,899,5.315,910,3.159,932,3.515,968,3.159,1150,4.809,1151,4.809,1162,4.809,1513,3.267,1638,4.809,1812,3.659,1821,3.159,2209,4.007,2678,3.159,2679,4.224,2680,5.246,2681,5.315,2682,5.246,2683,4.484,2684,5.246,2685,5.246,2686,5.643,2687,4.484]],["t/209",[8,2.039,19,0.627,22,2.405,28,2.586,53,1.683,90,2.57,107,1.259,134,2.466,145,0.852,148,0.833,149,1.443,151,1.214,168,0.979,170,2.703,185,1.029,203,2.058,233,0.955,248,1.523,261,0.933,269,1.263,346,1.362,357,2.343,393,1.596,400,2.774,401,1.859,404,2.861,459,1.003,467,1.349,472,2.479,473,3.108,477,1.916,480,1.458,537,2.185,544,1.683,556,1.916,589,0.911,593,1.085,617,1.219,719,1.458,746,0.871,786,3.435,796,1.683,802,1.458,810,1.219,832,2.268,839,1.916,852,2.976,862,1.302,867,1.916,881,2.701,883,3.259,885,1.683,889,2.101,908,2.726,910,2.039,916,4.432,932,2.859,933,4.498,942,1.219,968,1.259,1112,3.573,1116,2.109,1122,4.202,1123,4.237,1131,1.916,1132,2.268,1133,3.759,1137,2.894,1142,4.218,1145,5.569,1146,5.799,1147,1.916,1148,2.894,1163,1.4,1172,2.039,1294,3.108,1300,2.09,1366,2.09,1513,2.658,1554,1.683,1561,1.916,1637,1.916,1650,2.09,1812,2.976,1821,2.954,2079,2.894,2141,5.289,2209,2.586,2494,2.09,2678,1.259,2679,2.726,2681,1.683,2683,1.786,2686,2.894,2688,3.385,2689,3.385,2690,2.09,2691,2.09,2773,3.647,2908,1.786,2918,2.09,2927,3.912,2991,3.949,3044,2.09,3089,2.354,3090,2.354,3091,3.813,3092,2.354,3093,2.354,3094,2.354,3095,2.354,3096,4.805,3097,2.354,3098,2.354,3099,2.354,3100,2.354,3101,2.354,3102,5.524,3103,2.354,3104,2.354,3105,2.09,3106,2.354,3107,2.354,3108,2.354,3109,2.354,3110,3.813,3111,2.354,3112,2.354,3113,2.354,3114,2.354,3115,2.354,3116,5.524,3117,2.354,3118,2.354,3119,3.813,3120,3.813,3121,2.354,3122,2.354,3123,3.813,3124,4.805,3125,2.354,3126,2.354,3127,3.813,3128,3.813,3129,2.354,3130,2.354,3131,3.813]],["t/212",[19,1.725,46,2.694,92,2.452,145,2.848,148,2.293,149,1.692,153,2.833,168,2.694,170,2.507,183,3.465,222,2.987,254,3.713,269,0.927,321,3.254,378,3.282,457,2.987,586,2.63,817,4.192,872,3.584,881,3.667,883,4.395,894,4.918,909,4.511,1279,4.633,3132,6.48]],["t/214",[0,2.933,19,2.108,92,3.222,190,2.316,203,2.218,243,3.499,262,5.327,269,0.936,301,3.499,370,4.053,457,3.016,518,5.81,519,5.327,700,4.233,759,3.893,881,3.679,893,4.966,895,5.81,3133,5.81,3134,4.966]],["t/216",[0,2.712,19,2.267,40,2.929,148,2.316,168,2.721,170,2.522,233,2.655,346,1.613,378,2.533,527,5.327,841,5.81,860,4.966,882,5.81,898,3.925,933,4.38,2884,4.438,3076,5.81,3135,6.543,3136,6.543,3137,6.543,3138,6.543,3139,6.543]],["t/218",[19,1.759,57,5.015,92,2.5,148,2.339,149,1.726,185,2.889,196,3.655,203,2.24,266,4.482,269,1.224,357,3.222,376,3.534,402,4.482,403,5.153,658,4.724,703,3.534,709,3.655,786,4.724,802,4.093,837,5.379,881,3.555,3140,7.966,3141,6.608]],["t/220",[92,2.657,145,2.988,184,3.756,203,2.381,269,1.182,402,4.764,405,6.27,407,5.022,709,3.885,881,3.435,901,6.237,3133,6.237,3142,7.024]],["t/222",[2751,5.445,3037,5.445,3143,6.371,3144,5.129,3145,5.841,3146,5.841,3147,6.371,3148,5.841,3149,6.371,3150,5.841,3151,6.371,3152,6.371,3153,6.371]],["t/226",[0,2.65,38,3.039,44,4.017,74,3.118,92,2.901,120,4.017,130,3.321,131,2.969,146,4.439,147,3.694,173,5.513,176,5.513,190,2.198,191,3.027,196,4.241,203,2.105,205,4.713,218,2.942,219,4.212,237,4.713,242,3.851,269,1.097,282,4.961,283,4.212,291,4.017,336,5.055,352,3.027,709,3.434,826,4.439,3154,3.434,3155,5.513,3156,6.209,3157,6.209]],["t/228",[0,2.585,15,2.98,19,1.681,38,1.825,40,1.704,44,2.98,52,3.078,65,1.783,78,4.083,89,3.124,92,1.743,131,1.783,140,5.139,145,1.666,148,2.234,149,1.648,151,1.467,153,2.014,161,3.293,168,2.625,170,1.467,183,2.463,192,3.293,201,3.124,205,4.791,206,3.124,209,2.98,218,2.183,243,2.463,245,3.124,248,2.98,250,3.293,261,1.825,269,1.199,277,2.386,318,3.293,320,3.293,321,3.17,330,4.09,346,1.556,370,2.853,376,2.463,378,1.783,379,3.756,380,3.91,385,3.124,391,2.246,392,3.293,400,2.313,411,2.246,431,2.246,434,4.083,448,2.98,457,2.123,474,3.496,520,3.75,691,4.513,703,2.463,708,2.386,727,2.386,735,3.75,751,2.313,816,3.75,827,4.09,831,3.496,890,4.09,907,2.741,1112,2.98,1117,3.124,1138,2.548,1153,3.293,1163,2.741,1280,3.75,1625,2.853,1805,3.293,1820,3.124,1821,2.463,2678,2.463,2744,2.98,3158,3.496,3159,4.606,3160,4.606,3161,4.606,3162,4.09,3163,4.09,3164,3.75,3165,3.496,3166,4.606,3167,4.606,3168,4.606,3169,4.606,3170,4.606,3171,4.606,3172,4.606]],["t/230",[0,2.104,170,2.104,201,4.482,242,3.319,263,3.932,269,1.14,291,4.274,312,4.724,456,3.672,708,3.422,810,3.422,832,3.932,839,5.379,898,3.672,899,4.724,910,3.534,933,4.406,1117,4.482,1126,4.482,2619,3.787,2678,3.534,2884,4.482,3173,6.608,3174,6.608,3175,6.608]],["t/232",[13,3.764,22,1.621,40,2.34,165,5.618,170,2.015,171,4.523,181,4.802,183,3.383,266,4.291,269,1.11,312,4.523,432,3.764,466,4.523,472,2.839,476,3.625,523,4.291,703,3.383,758,4.802,761,5.618,798,3.764,889,2.766,898,2.916,899,4.523,2126,4.802,2745,4.802,3144,4.523,3146,5.151,3148,5.151,3176,5.151,3177,5.618,3178,6.327,3179,6.327,3180,6.327,3181,6.889,3182,5.618,3183,6.327]],["t/235",[185,3.12,286,4.84,321,3.584,428,4.246,540,5.102,724,4.616,840,5.416,1123,4.42,2513,5.81,3184,7.404,3185,5.81,3186,6.337,3187,6.337]],["t/237",[8,2.927,22,2.414,53,3.913,90,2.927,107,4.438,136,4.154,147,3.256,149,1.429,151,2.255,256,3.712,338,2.333,357,2.668,459,3.018,472,2.456,513,4.455,540,3.913,574,2.221,840,5.374,846,3.556,876,3.136,913,4.455,923,3.913,1057,4.455,1123,4.386,1137,4.154,1172,2.927,1329,4.859,1513,3.027,1763,4.859,1816,4.455,2207,4.859,2678,2.927,2679,3.913,2991,3.913,3010,4.859,3038,4.859,3185,5.764,3188,5.473,3189,7.081,3190,5.473,3191,5.473,3192,7.081,3193,5.473,3194,5.473,3195,5.473,3196,5.473,3197,5.473,3198,5.473]],["t/239",[724,4.822,1172,3.986,2513,6.069,3185,6.069,3186,6.619,3187,6.619]],["t/241",[107,4.054,3199,7.581,3200,7.581]],["t/243",[90,3.336,107,3.336,136,4.735,2755,4.735,3184,5.539,3201,6.238,3202,6.238,3203,6.238,3204,6.238,3205,6.238,3206,6.238,3207,6.238,3208,5.079,3209,6.261,3210,6.238,3211,6.238,3212,6.238,3213,6.238,3214,6.238,3215,8.339,3216,6.238,3217,6.238,3218,6.238,3219,6.238,3220,6.238,3221,6.238,3222,6.238,3223,6.238,3224,6.238,3225,6.238,3226,6.238,3227,6.238,3228,6.238,3229,6.238,3230,6.238,3231,6.238,3232,6.238,3233,6.238]],["t/245",[0,1.743,38,2.169,40,2.619,122,3.39,131,2.119,145,2.562,148,1.937,149,1.429,153,2.393,168,3.263,190,2.506,196,3.027,210,3.54,248,3.54,269,1.123,333,4.859,346,1.745,378,2.741,401,2.668,457,3.264,469,4.859,525,4.859,733,4.154,746,2.024,751,2.748,798,3.256,831,4.154,846,2.748,881,2.944,883,3.712,907,3.256,1112,3.54,1125,3.942,1138,4.341,1140,3.913,1153,3.913,1163,3.256,1820,3.712,1821,2.927,2602,4.154,2962,3.913,3084,4.859,3085,6.287,3086,4.154,3087,4.859,3088,4.859,3163,4.859,3164,4.455,3165,4.154,3234,5.473,3235,5.473,3236,5.473,3237,5.473,3238,5.473,3239,5.473]],["t/248",[269,1.067,312,5.329,898,3.436,3176,6.069,3177,6.619,3240,7.455]],["t/250",[0,2.329,8,3.078,40,2.129,46,3.04,52,2.806,89,3.904,92,2.177,145,2.082,148,2.588,149,1.91,168,3.04,170,1.833,178,5.11,179,5.11,183,3.078,190,2.037,191,2.806,231,2.335,263,3.424,266,3.904,269,0.823,275,5.11,321,2.89,378,2.831,379,3.424,380,3.565,431,2.806,457,3.371,498,4.368,674,3.904,708,2.981,739,4.685,751,2.89,762,4.685,810,2.981,816,4.685,826,4.115,832,3.424,872,3.183,907,3.424,916,3.298,3154,4.044,3241,5.11,3242,5.755,3243,5.755,3244,5.755,3245,5.11,3246,5.228,3247,4.685,3248,5.755]],["t/252",[13,4.684,40,2.397,153,2.833,269,1.126,517,5.754,523,4.395,743,4.633,758,4.918,772,5.275,798,3.855,885,4.633,909,3.713,2751,4.918,3144,5.628,3145,5.275,3146,6.409,3147,5.754,3148,6.409,3149,5.754,3150,5.275,3181,5.754,3182,5.754,3249,6.48,3250,6.48,3251,6.48,3252,6.48,3253,6.48,3254,6.48]],["t/254",[13,3.932,40,2.444,46,2.747,72,5.867,134,4.274,145,2.882,203,2.24,204,4.093,269,1.224,336,5.379,398,3.787,454,5.867,455,5.379,483,3.422,521,5.015,759,3.932,910,3.534,1338,5.379,1625,4.093,2694,5.379,2745,5.015,2867,5.379,3072,5.867,3255,5.867,3256,6.608,3257,5.867]],["t/256",[40,2.506,50,4.844,51,6.016,52,3.303,63,6.016,153,2.962,172,5.516,252,6.016,269,1.157,291,4.383,300,4.595,301,3.623,302,4.844,303,6.016,305,6.016,306,6.016,307,6.016,393,4.595,398,3.882,399,3.747,3001,6.016,3258,6.775,3259,6.016]],["t/258",[13,4.093,17,4.918,65,2.663,166,4.918,269,1.168,302,4.918,743,4.918,1111,4.666,1349,5.221,2751,5.221,3037,5.221,3143,6.109,3144,4.918,3145,5.601,3150,5.601,3151,6.109,3152,6.109,3153,6.109,3260,6.88,3261,6.88]],["t/260",[131,2.596,161,5.746,166,4.795,277,3.474,388,2.426,465,5.46,562,3.71,587,2.596,810,3.474,852,4.154,898,3.092,933,3.71,1142,3.843,1163,3.991,1821,3.587,2662,5.956,2678,4.298,2692,5.956,3241,5.956,3262,8.038,3263,6.707,3264,6.707,3265,6.707]],["t/262",[13,2.922,38,1.946,40,2.438,65,1.901,91,3.511,92,2.494,120,3.176,130,2.626,145,3.251,148,1.738,149,1.282,158,2.814,168,2.741,170,1.564,190,2.333,203,1.665,206,3.331,242,2.466,256,3.331,269,0.943,301,2.626,327,3.727,378,3.212,379,2.922,380,3.042,389,3.511,398,3.778,401,2.394,431,3.214,437,3.998,457,2.263,467,2.814,474,3.727,504,3.176,523,3.331,699,3.511,701,3.176,723,3.331,751,2.466,798,2.922,810,2.543,845,3.43,859,5.048,872,3.646,1124,3.727,1125,3.995,1138,4.399,1313,4.36,1625,3.042,1684,2.922,1762,3.511,1833,3.727,2608,3.998,2694,3.998,3086,3.727,3105,4.36,3134,3.727,3154,3.646,3158,3.727,3165,3.727,3246,3.511,3266,5.367,3267,6.592,3268,4.911,3269,4.911,3270,4.36]],["t/265",[15,2.919,19,2.379,40,2.302,65,1.747,74,2.266,94,3.226,120,2.919,185,2.721,190,1.597,207,4.007,209,2.919,219,3.061,222,2.08,233,1.831,237,3.425,242,2.266,243,3.329,269,1.099,287,4.007,289,2.919,346,1.112,349,4.724,378,1.747,399,2.496,400,3.578,412,3.674,431,2.2,441,3.329,443,3.674,457,2.08,475,4.007,480,2.795,483,2.337,537,2.586,611,2.919,641,2.795,693,3.226,701,2.919,703,3.329,708,2.337,723,3.061,746,1.669,751,2.266,752,3.425,762,3.674,763,3.674,783,3.425,845,3.284,846,3.126,847,3.425,848,5.8,850,3.674,852,3.855,853,3.226,854,5.067,855,5.527,856,4.007,857,4.007,858,3.674,859,4.222,861,4.007,862,2.496,863,5.527,864,6.326,866,4.007,867,3.674,868,5.527,870,4.007,872,2.496,876,2.586,880,4.007,881,1.876,883,3.061,884,3.061,892,3.674,1258,3.674,1281,4.007,1291,4.007,1762,3.226,2963,3.425,3154,2.496,3271,4.513,3272,4.513,3273,4.513,3274,4.513,3275,4.513,3276,4.513,3277,4.513,3278,4.513,3279,4.513]],["t/267",[170,2.147,184,3.605,190,2.386,191,3.287,206,4.572,209,4.361,845,3.716,859,5.468,1164,5.116,1581,5.116,1833,5.116,3158,5.116,3246,4.819,3259,5.986,3266,6.563,3280,6.741,3281,6.741,3282,6.741,3283,5.986,3284,5.986,3285,6.741,3286,6.741]],["t/270",[38,2.223,40,2.661,46,2.333,92,2.722,122,3.475,145,3.031,148,2.546,149,2.074,152,4.258,168,2.991,170,1.787,171,4.011,182,3.338,198,4.567,231,2.277,256,3.805,269,1.029,277,2.906,338,2.391,360,4.258,378,3.075,379,4.281,380,4.456,401,3.508,446,3.629,457,3.316,467,3.215,699,4.011,703,3,755,4.982,798,3.338,832,3.338,1125,3.989,1138,3.979,1560,3.805,1860,4.982,1884,4.567,3086,4.258,3154,3.103,3287,5.611,3288,5.611,3289,5.611,3290,5.611,3291,5.611,3292,4.567,3293,5.611]],["t/272",[40,3.104,46,2.63,48,4.802,92,2.394,145,3.035,148,2.746,149,2.026,168,3.226,183,3.383,203,2.145,242,3.177,243,3.383,254,3.625,263,3.764,338,2.697,378,3.248,523,4.291,619,4.291,709,3.499,752,4.802,830,5.151,1125,3.896,1138,4.291,1700,5.151,3134,4.802,3294,6.327,3295,6.327]],["t/275",[13,3.729,40,3.091,46,2.606,92,2.371,130,3.352,145,2.267,148,2.218,149,1.637,168,2.606,183,3.352,192,4.481,204,3.882,209,4.054,216,5.102,237,4.757,267,5.565,269,0.897,289,4.054,378,2.426,389,4.481,398,3.591,399,3.466,431,3.056,457,2.889,703,3.352,750,5.565,1279,4.481,1625,3.882,1637,5.102,1762,4.481,2206,5.565,3154,3.466,3165,4.757,3245,5.565,3246,4.481,3296,6.268,3297,6.268,3298,6.268]],["t/277",[0,1.95,40,2.265,46,2.546,74,3.076,92,3.129,129,3.076,130,3.275,148,2.167,149,1.599,168,2.546,182,3.644,183,3.275,190,2.691,204,3.793,209,4.919,242,4.153,269,1.088,292,4.648,321,3.076,338,2.61,397,4.378,398,3.509,480,3.793,701,3.961,810,3.172,828,5.438,833,4.986,872,3.387,909,3.509,1581,5.771,3154,3.387,3155,5.438,3299,5.438,3300,6.124,3301,6.124,3302,6.124,3303,6.124]],["t/279",[0,2.753,40,2.506,44,4.383,138,6.016,146,4.844,147,4.031,149,1.769,184,4.324,211,4.595,218,3.832,277,3.509,506,4.595,727,3.509,751,3.403,1299,5.142,3304,6.775,3305,6.775,3306,6.775,3307,6.775,3308,6.775]],["t/281",[0,2.571,3,4.526,15,3.297,19,1.799,38,2.02,44,3.297,52,2.485,58,4.526,74,2.56,79,4.526,91,3.644,95,4.526,130,2.726,131,1.973,149,1.331,168,2.119,184,3.614,211,3.457,218,3.203,219,3.457,227,4.526,228,4.526,231,2.069,233,2.743,242,2.56,263,3.033,289,3.297,301,2.726,311,4.526,312,3.644,335,4.526,346,1.257,370,3.157,390,3.033,422,3.644,423,3.869,441,2.726,472,2.288,483,2.64,528,4.526,536,4.526,537,2.921,693,3.644,700,3.297,701,3.297,709,2.819,720,3.457,721,3.644,723,3.457,731,4.15,759,3.033,821,4.15,898,3.115,1245,4.526,1299,3.869,1430,4.15,1805,3.644,1816,4.15,2070,4.526,3134,3.869,3154,2.819,3246,3.644,3266,4.15,3292,4.15,3309,5.098,3310,5.098,3311,4.526,3312,5.098,3313,6.001,3314,5.098,3315,5.098,3316,5.098,3317,5.098,3318,5.098,3319,5.098,3320,5.098,3321,5.098,3322,5.098,3323,5.098,3324,5.098]],["t/283",[0,2.556,1,3.11,19,2.004,38,2.651,52,2.448,74,2.522,92,2.531,94,5.38,131,2.59,149,1.747,166,3.59,168,2.088,170,1.599,183,2.685,184,3.578,203,1.702,211,3.406,213,4.458,215,3.811,218,3.566,219,3.406,233,2.038,235,4.088,236,4.088,240,2.987,254,2.877,286,3.406,327,3.811,357,2.448,390,3.981,391,3.262,396,4.088,398,2.877,402,3.406,407,4.784,416,2.777,428,2.987,432,2.987,438,4.088,450,3.11,519,4.088,635,2.379,693,3.59,700,3.248,709,3.701,711,2.987,723,3.406,731,4.088,821,5.447,836,4.458,837,4.088,907,2.987,1427,4.458,1430,5.447,1581,3.811,1762,4.784,2343,3.811,3154,2.777,3283,4.458,3284,4.458,3311,4.458,3325,6.127,3326,5.021,3327,5.021,3328,5.021,3329,5.021,3330,5.021,3331,5.021,3332,5.021,3333,5.021]],["t/285",[0,2.202,65,2.677,74,3.473,120,4.473,218,3.878,224,7.268,225,6.663,226,6.14,243,3.698,291,4.473,297,6.14,483,3.581,1297,6.14,2744,4.473,2911,6.14,3313,6.14,3334,6.915]],["t/287",[1,4.093,13,3.932,40,2.444,65,2.558,205,5.015,218,3.775,269,1.14,276,4.724,338,2.816,400,3.319,455,5.379,743,4.724,758,5.015,910,3.534,2755,6.046,3144,5.695,3154,3.655,3255,5.867,3335,6.608,3336,6.608,3337,6.608,3338,7.966,3339,6.608,3340,6.608]],["t/289",[0,2.169,65,3.14,92,2.576,190,2.41,235,5.544,269,0.974,276,4.868,291,4.405,343,6.046,370,4.218,376,3.642,709,3.766,722,4.619,790,6.046,898,3.139,2126,5.168,2745,5.168,3162,6.046,3341,6.81,3342,5.168,3343,6.81,3344,6.046]],["t/291",[0,2.355,36,3.356,40,2.735,43,4.767,46,3.074,94,4.187,130,3.954,145,2.675,190,2.073,203,1.985,204,3.627,208,4.444,231,2.376,233,2.376,240,3.484,242,2.941,248,3.788,261,2.32,269,1.218,276,4.187,277,3.033,352,3.605,378,2.267,457,2.699,483,3.033,529,5.2,740,3.972,833,4.767,834,4.767,845,2.699,898,2.699,916,3.356,1138,3.239,1164,4.444,1279,4.187,2602,4.444,2884,3.972,3041,5.2,3176,4.767,3299,5.2,3342,4.444,3345,5.856,3346,5.856,3347,5.2,3348,5.856,3349,5.856]],["t/293",[0,2.015,65,2.449,92,2.935,152,4.802,170,2.471,171,4.523,182,3.764,190,2.239,218,2.998,223,3.625,232,3.085,242,3.177,268,3.919,269,0.905,283,4.291,291,4.093,367,5.151,389,4.523,426,5.151,431,3.085,434,4.093,448,4.093,465,5.151,476,3.625,542,4.802,709,3.499,826,4.523,844,3.919,2118,5.618,3158,4.802,3247,5.151,3270,5.618,3325,5.151,3342,4.802,3344,5.618,3350,6.327]],["t/295",[0,2.024,38,2.519,92,2.944,131,2.461,146,4.545,147,4.629,191,3.099,219,4.312,223,3.643,232,3.099,245,4.312,257,5.644,276,4.545,280,5.644,283,4.312,385,4.312,391,3.099,400,3.192,434,4.112,542,4.824,674,4.312,844,3.937,898,2.93,916,3.643,1125,3.192,1700,5.175,1805,4.545,1884,5.175,2889,4.545,2899,4.824,3247,5.175,3342,4.824,3351,6.357,3352,6.357,3353,6.357]],["t/299",[22,2.392,269,0.995,746,2.571,845,3.204,846,4.123,888,6.684,923,4.97,3208,6.684,3209,5.659,3354,6.951,3355,6.172]],["t/301",[78,4.233,190,2.803,269,0.936,338,2.789,346,1.952,711,3.893,746,3.15,817,4.233,845,3.016,846,3.977,888,6.932,905,7.031,909,3.749,923,6.088,1204,4.438,1781,4.678,2963,4.966,3208,6.447,3209,5.327,3355,5.81]],["t/303",[0,2.076,8,1.702,15,3.125,38,3.207,42,2.591,44,2.058,49,2.826,92,3.062,113,2.591,115,2.826,131,2.857,139,2.591,140,2.591,141,2.826,143,2.826,145,1.151,146,2.275,147,2.874,150,2.591,151,1.013,153,2.112,158,1.824,169,2.826,170,2.233,180,2.591,181,2.415,182,1.893,184,2.584,190,2.308,191,2.355,196,3.606,202,2.826,215,2.415,218,2.767,222,1.467,231,1.291,232,3.599,233,1.291,242,1.598,245,3.277,250,2.275,263,1.893,266,2.158,268,4.342,269,0.836,283,3.277,289,2.058,300,2.158,320,2.275,327,2.415,339,2.591,346,1.191,347,2.415,352,4.023,378,1.87,383,2.591,388,1.748,389,3.454,391,2.847,392,2.275,393,2.158,394,2.058,395,3.961,396,2.591,397,3.454,398,1.824,399,2.672,400,1.598,401,1.552,402,4.422,403,4.218,404,1.648,405,2.415,406,2.826,407,3.454,408,2.826,409,2.591,410,2.826,411,1.552,412,2.591,413,1.151,414,2.826,416,1.76,417,2.826,418,2.826,419,2.826,420,2.591,421,2.826,423,2.415,424,2.826,425,1.893,426,4.754,427,2.826,428,1.893,429,2.591,430,2.275,431,1.552,432,1.893,434,3.125,435,4.29,436,2.826,437,3.933,438,2.591,441,1.702,442,2.826,443,2.591,444,2.415,445,1.824,446,2.058,447,2.591,448,3.777,450,2.992,451,2.826,457,1.467,476,2.768,691,2.275,698,2.591,708,1.648,737,2.415,740,2.158,777,2.826,817,2.058,840,2.415,1172,1.702,1299,2.415,1338,2.591,1383,2.591,2963,2.415,3154,3.23,3164,2.591,3257,4.29,3292,2.591,3325,2.591,3347,2.826,3356,3.182,3357,4.831,3358,3.182,3359,3.182,3360,3.182,3361,3.182,3362,3.182,3363,5.84,3364,3.182,3365,3.182,3366,3.182,3367,3.182,3368,3.182,3369,3.182,3370,3.182,3371,3.182,3372,3.182,3373,3.182]],["t/306",[22,2.088,36,4.272,122,3.675,149,1.55,151,1.89,309,2.954,348,2.893,388,2.147,413,2.697,521,4.504,574,3.308,580,2.467,584,2.529,585,2.529,586,2.408,587,2.297,588,2.594,589,2.886,590,2.529,594,5.269,596,2.663,597,3.282,598,3.531,760,3.675,846,4.094,847,4.504,853,5.33,936,3.4,1038,5.33,1042,4.831,1044,4.242,2022,5.269,2372,5.269,2790,5.269,3374,5.934,3375,5.934,3376,5.934,3377,5.934,3378,5.934,3379,5.934]],["t/308",[22,2.114,36,4.345,122,3.776,149,1.592,151,2.75,309,3.004,348,2.972,388,2.205,413,2.205,574,2.474,575,3.062,580,2.535,584,2.598,585,2.598,586,2.474,587,2.36,588,2.665,589,2.935,590,2.598,593,2.81,596,2.736,597,3.372,598,3.627,615,2.81,625,2.736,846,4.145,936,4.345,938,3.493,1038,5.421,1040,5.413,1042,4.963,1044,4.358,3380,6.096,3381,6.096]]],"invertedIndex":[["",{"_index":22,"t":{"2":{"position":[[219,1],[248,1]]},"5":{"position":[[234,2],[382,1],[426,1],[578,1],[580,1]]},"7":{"position":[[264,2],[490,1],[545,1]]},"10":{"position":[[262,2],[539,1],[583,1],[585,1],[654,1],[935,2],[1269,1],[1271,1],[1273,1]]},"12":{"position":[[614,1],[661,1],[707,1],[754,1],[800,1],[847,1],[891,2],[1343,1],[1387,1],[1389,1],[1458,1],[1669,2],[2067,1],[2069,1],[2071,1]]},"16":{"position":[[302,2],[459,1],[503,1],[519,1],[521,1]]},"57":{"position":[[8,1],[57,1],[133,1],[184,1],[239,1],[289,1]]},"59":{"position":[[8,1],[57,1],[118,1],[169,1],[227,1],[277,1]]},"64":{"position":[[195,2],[331,1],[398,1]]},"66":{"position":[[261,2],[394,1],[449,1],[492,1],[585,2],[588,1],[680,1],[682,1],[684,1]]},"68":{"position":[[458,2],[763,2],[1237,1],[1280,1],[1619,2],[1622,1],[1946,1],[1948,1],[1950,1]]},"70":{"position":[[474,2],[786,2],[1260,1],[1303,1],[1639,2],[1642,1],[1979,2],[1982,1],[2319,1],[2321,1],[2323,1]]},"72":{"position":[[319,2],[481,1],[524,1],[1333,2],[1336,1],[1944,1],[1946,1],[1948,1]]},"74":{"position":[[331,2],[744,1],[787,1],[7049,2],[7052,1],[15954,2],[15957,1],[15959,1]]},"76":{"position":[[416,2],[611,2],[858,2],[1689,1],[1732,1],[2363,2],[2366,1],[2999,1],[3001,1],[3003,1]]},"78":{"position":[[28,1],[34,1],[428,2],[626,2],[876,2],[1710,1],[1753,1],[2493,2],[2496,1],[3236,1],[3238,1],[3240,1]]},"80":{"position":[[228,2],[465,2],[760,1],[803,1],[877,2],[880,1],[954,2],[957,1],[1031,2],[1034,1],[1108,2],[1111,1],[1185,1],[1187,1],[1189,1]]},"83":{"position":[[212,1]]},"85":{"position":[[158,2]]},"87":{"position":[[45,2],[164,1],[166,1],[178,1],[199,2],[356,1],[358,2],[439,1],[441,1],[443,2],[456,1],[475,1],[577,2],[590,1],[684,2],[687,2],[701,1],[711,1],[713,2],[847,2],[1007,2],[1024,1],[1026,1],[1079,1],[1176,1],[1178,2],[1181,1],[1227,1],[1312,1],[1314,1],[1316,1],[1318,1],[1320,2]]},"89":{"position":[[1233,1],[1235,1],[1252,2],[1387,1],[1405,1],[1420,1],[1482,1],[1484,3],[1488,1],[1490,1],[1560,1],[1562,1],[1589,1],[1604,2],[1607,2],[1651,2]]},"92":{"position":[[50,1],[56,1],[239,2],[368,1],[396,1],[455,1],[618,1],[636,1],[638,3],[654,1],[697,2],[700,4],[720,1],[777,1],[851,1],[949,1],[951,1],[953,1],[975,1],[1029,1],[1031,1],[1033,1],[1044,1],[1051,1],[1075,1],[1077,3],[1097,1],[5445,1]]},"94":{"position":[[212,2],[348,1],[400,3],[9616,3],[9631,3],[9653,3],[9986,1],[10105,1],[10214,1],[10723,1],[10833,1],[10894,1],[11010,1],[11128,1],[11213,1],[11215,4],[11252,1],[11371,1],[11491,1],[11607,1],[11729,1],[11849,1],[11885,1],[11902,1],[12012,1],[12084,2],[12099,1],[12125,1],[12137,1],[12188,1],[12251,1],[12260,1],[12267,1],[12281,1],[12402,1],[12500,1],[12541,1],[12664,1],[12771,1],[12849,1],[12894,1],[12970,1],[13006,1],[13043,1],[13067,1],[13112,1],[13165,1],[13240,1],[13291,1],[13368,1],[13427,1],[13499,1],[13519,1],[13710,1],[13735,1],[13803,1],[13870,1],[13950,1],[14091,1],[14212,2],[14550,1],[14649,1],[14726,1],[14752,1],[14880,1],[14957,1],[15111,1],[15238,1],[15384,1],[15467,1],[15545,1],[15665,1],[15737,1],[15812,1],[15839,1],[16011,1],[16092,1],[16119,1],[16197,1],[16280,1],[16356,1],[16427,1],[16502,1],[16533,1],[16609,1],[16734,1],[16807,1],[16876,1],[16897,1],[16975,1],[17521,1],[17543,1],[17624,1],[17705,1],[17786,1],[17803,1],[17900,1],[18053,1],[18170,1],[18357,1],[18466,1],[18695,1],[18806,1],[19110,1],[19220,1],[19393,1],[19481,1],[19509,1],[19624,1],[19835,1],[19902,1],[20114,1],[20219,1],[20329,1],[20519,1],[20773,1],[20890,1],[20994,1],[21044,1],[21207,2],[21319,2],[21430,2],[21557,1],[21619,2],[21624,2],[21737,1],[21854,1],[21958,1],[22008,1],[22095,1],[22304,2],[22416,2],[22528,2],[22616,1],[22663,2],[22685,2],[22690,2],[22725,2],[22755,1],[22980,1],[23075,1],[23226,1],[23347,1],[23467,1],[23538,1],[23615,1],[23692,1],[23770,1],[23838,1],[23897,1],[24000,1],[24076,1],[24144,1],[24174,1],[24441,1],[24532,1],[24534,1],[24648,1],[24720,1],[24793,1],[24821,1],[24898,1],[24975,1],[25052,1],[25087,1],[25164,1],[25324,1],[25348,1],[25384,1],[25602,1],[25680,1],[25737,1],[25761,1],[25835,1],[26040,1],[26152,1],[26272,1],[26350,1],[26536,1],[26648,1],[26726,1],[26911,1],[27025,1],[27132,1],[27239,1],[27372,1],[27459,1],[27471,2],[27568,2],[27645,2],[27650,2],[27672,2],[27766,1],[27878,1],[28096,1],[28150,1],[28304,2],[28383,1],[28393,2],[28472,3],[28544,2],[28621,1],[28906,1],[28984,1],[29067,1],[29255,1],[29355,1],[29472,1],[29604,1],[29716,1],[29833,1],[29907,1],[29998,1],[30080,1],[30158,1],[30221,1],[30293,1],[30365,1],[30443,1],[30521,1],[30611,1],[30656,1],[30745,1],[30967,2],[31019,2],[31096,2],[31132,3],[31186,2],[31222,2],[31258,2],[31343,1],[31463,1],[31536,1],[31616,1],[31698,1],[31776,1],[31839,1],[31911,1],[31983,1],[32061,1],[32139,1],[32380,1],[32483,1],[32595,1],[32819,1],[32824,1],[32906,2],[33002,1],[33023,2],[33031,1],[33098,1],[33356,1],[33455,1],[33519,1],[33651,1],[33713,2],[33825,2],[33939,2],[33976,1],[33980,1],[33993,1],[33997,1],[34024,1],[34044,2],[34159,2],[34274,2],[34385,2],[34497,2],[34554,1],[34696,2],[34790,1],[34832,2],[34996,1],[35057,1],[35266,1],[35367,1],[35569,2],[35607,2],[35634,1],[35651,2],[35725,1],[35742,2],[35845,1],[35862,2],[36395,1],[36522,1],[36643,1],[36754,1],[36876,1],[36976,1],[37095,1],[37202,1],[37234,1],[37356,1],[37447,1],[37570,1],[37665,1],[37786,1],[37905,1],[38018,1],[38309,2],[38429,2],[38894,1],[38964,1],[39021,1],[39110,1],[39214,1],[39286,1],[39398,1],[39494,1],[39555,1],[39625,1],[39669,1],[39719,1],[39762,1],[39804,1],[39839,1],[39992,2],[40007,2],[40024,2],[40082,1],[40329,1],[40441,1],[40530,1],[40640,1],[40657,1],[40674,1],[40718,1],[40776,1],[40789,1],[40825,1],[40835,1],[40852,1],[40891,1],[41090,1],[41394,2],[41537,1],[41594,1],[41671,1],[41780,2],[41966,1],[42026,1],[42106,1],[42215,2],[42707,1],[42824,1],[42914,1],[43019,1],[43082,1],[43160,1],[43205,1],[43277,1],[43379,1],[43484,1],[43582,1],[43674,1],[43698,1],[43827,3],[43940,2],[44010,2],[44061,2],[44086,2],[44129,1],[44173,1],[44251,1],[44296,1],[44367,1],[44415,1],[44482,1],[44587,1],[44859,1],[44937,1],[44986,1],[45096,1],[45152,1],[45389,1],[45484,1],[45582,1],[45669,1],[45775,1],[45921,3],[45981,2],[46120,2],[46373,1],[46471,1],[46576,2],[46613,2],[46651,2],[46676,2],[46712,1],[46904,1],[46908,1],[46922,1],[46990,1],[47181,1],[47253,1],[47441,2],[47524,2],[47569,2],[47650,2],[47687,1],[47691,1],[47705,1],[47709,2],[47778,1],[47973,2],[48017,1],[48046,1],[48251,2],[48295,1],[48324,1],[48457,1],[48461,1],[48465,1],[48488,1],[48622,1],[48626,1],[48630,1],[48653,1],[48729,1],[48822,2],[48828,1],[48833,1],[48864,1],[48869,1],[48874,1],[48879,1],[48902,1],[48969,1],[49012,3],[49062,1],[49181,2],[49192,2],[49270,1],[49286,2],[49292,1],[49301,1],[49361,2],[49366,1],[49370,1],[49380,1],[49384,1],[49407,1],[49436,1],[49440,1],[49519,1],[49533,2],[49542,1],[49659,1],[49825,2],[49859,1],[49863,1],[49929,2],[50036,2],[50067,1],[50075,1],[50083,1],[50109,1],[50113,1],[50118,2],[50181,2],[50249,2],[50282,2],[50331,2],[50395,2],[50406,2],[50445,2],[50488,2],[50553,2],[50673,1],[50699,2],[50769,2],[50794,2],[50902,2],[50983,2],[51094,2],[51142,2],[51177,2],[51234,2],[51279,2],[51315,2],[51418,2],[51428,2],[51502,1],[51516,1],[51554,2],[51600,2],[51632,2],[51674,2],[51700,2],[51735,1],[51789,2],[51835,2],[51884,2],[51893,1],[51907,2],[52018,2],[52038,1],[52044,1],[52126,2],[52161,1],[52167,1],[52199,1],[52204,1],[52219,1],[52230,2],[52339,2],[52422,2],[52441,1],[52452,2],[52482,2],[52501,1],[52512,2],[52543,2],[52562,1],[52573,2],[52604,2],[52623,1],[52634,2],[52665,2],[52684,1],[52695,2],[52727,2],[52746,1],[52757,2],[52784,2],[52894,2],[53005,2],[53117,2],[53153,1],[53161,1],[53213,1],[53236,1],[53240,1],[53457,1],[53520,2],[53549,1],[53566,2],[53613,1],[53720,1],[53744,1],[53897,2],[53929,2],[54045,2],[54162,2],[54173,2],[54178,1],[54258,2],[54295,2],[54300,1],[54314,1],[54323,2],[54326,1],[54340,2],[54351,1],[54372,2],[54375,1],[54387,2],[54398,1],[54413,2],[54424,1],[54439,2],[54469,1],[54565,1],[54569,2],[54581,2],[54594,2],[54704,2],[54814,2],[54924,2],[54986,1],[54996,1],[55000,1],[55010,2],[55026,1],[55036,1],[55040,1],[55050,2],[55066,1],[55076,1],[55080,1],[55090,2],[55106,1],[55116,1],[55120,1],[55130,2],[55146,1],[55156,1],[55160,1],[55170,2],[55186,1],[55196,1],[55200,1],[55210,2],[55226,1],[55236,1],[55240,1],[55250,2],[55280,1],[55314,1],[55507,1],[55535,1],[55565,2],[55575,1],[55584,1],[55588,1],[55592,1],[55621,1],[55698,1],[55812,1],[55845,2],[55852,1],[55868,3],[55887,2],[55913,2],[55919,1],[55935,3],[55953,2],[55978,2],[55984,1],[56000,3],[56018,2],[56043,2],[56049,1],[56065,3],[56083,2],[56108,2],[56113,1],[56129,3],[56146,2],[56170,2],[56175,1],[56191,3],[56208,2],[56232,2],[56237,1],[56253,3],[56270,2],[56294,2],[56299,1],[56316,2],[56368,1],[56468,1],[56616,1],[56648,1],[56678,2],[56683,2],[56693,1],[56701,1],[56705,1],[56734,1],[56812,1],[56927,1],[56960,2],[56966,2],[56984,2],[56990,2],[57007,2],[57032,2],[57038,2],[57056,2],[57062,2],[57079,2],[57104,2],[57110,2],[57128,2],[57134,2],[57151,2],[57176,2],[57182,2],[57199,2],[57205,2],[57221,2],[57245,2],[57251,2],[57268,2],[57274,2],[57290,2],[57314,2],[57320,2],[57337,2],[57343,2],[57359,2],[57383,2],[57389,2],[57407,2],[57459,1],[57560,1],[57709,1],[57742,1],[57772,2],[57778,2],[57788,1],[57796,1],[57800,1],[57829,1],[57908,1],[57940,1],[58145,1],[58178,2],[58185,1],[58201,3],[58220,2],[58245,2],[58251,1],[58267,3],[58285,2],[58309,2],[58315,1],[58331,3],[58349,2],[58373,2],[58379,1],[58395,3],[58413,2],[58437,2],[58442,1],[58459,2],[58511,1],[58613,1],[58763,1],[58797,1],[58827,2],[58832,2],[58843,2],[58849,1],[58857,1],[58861,1],[58890,1],[59098,1],[59102,2],[59344,1],[59455,1],[59592,1],[59596,1],[59600,1],[59623,1],[59761,1],[59765,1],[59769,1],[59792,1],[59862,1],[59982,2],[60044,1],[60049,1],[60054,1],[60060,1],[60065,2],[60084,1],[60105,2],[60113,1],[60118,1],[60143,1],[60289,2],[60333,1],[60373,2],[60378,1],[60382,1],[60609,1],[60729,1],[60908,2],[60950,1],[61127,1],[61160,1],[61293,2],[61400,2],[61491,2],[61589,1],[61776,1],[61809,2],[62159,1],[62168,1],[62242,1],[62251,1],[62304,1],[62378,1],[62457,1],[62529,1],[62600,1],[62670,1],[62733,1],[62758,1],[62775,1],[62797,1],[62833,1],[62875,1],[62915,1],[62962,1],[62970,1],[63030,1],[63042,1],[63103,1],[63158,1],[63165,1],[63172,1],[63212,2],[63317,1],[63470,1],[63543,1],[63730,1],[63763,1],[63864,1],[63899,1],[64062,1],[64085,2],[64176,1],[64197,3],[64336,1],[64480,1],[64516,1],[64538,1],[64619,1],[64853,1],[64896,1],[64947,1],[65026,1],[65283,2],[65337,1],[65386,1],[65488,1],[65517,1],[65638,1],[65881,2],[65937,1],[66300,1],[66390,1],[66491,1],[66597,1],[66722,1],[66777,1],[66794,1],[66818,1],[66867,1],[66945,1],[67014,1],[67082,1],[67094,1],[67165,1],[67205,1],[67214,1],[67271,1],[67295,1],[67302,1],[67309,1],[67646,1],[67815,3],[67874,2],[67905,1],[68074,3],[68133,2],[68164,1],[68333,3],[68392,2],[68423,1],[68592,3],[68651,2],[68682,1],[68848,3],[68907,2],[68938,1],[69127,3],[69186,2],[69223,1],[69386,3],[69445,2],[69476,1],[69660,3],[69719,2],[70065,1],[70156,1],[70225,1],[70244,1],[70398,1],[70587,1],[70607,1],[70636,1],[70677,3],[70733,2],[70801,3],[70914,2],[70934,2],[70993,1],[71183,1],[71187,1],[71189,4],[71194,4],[71199,1],[71201,9],[71263,1],[71489,1],[71518,1],[71737,1],[71769,1],[71783,1],[71792,1],[71811,1],[71837,1],[71868,1],[71872,1],[71881,1],[71888,1],[71913,1],[71937,1],[71959,3],[71989,2],[72101,1],[72213,1],[72396,1],[72561,2],[72580,2],[72603,2],[73485,2],[73564,2],[73572,1],[73609,2],[73669,1],[74206,1],[74235,1],[74307,2],[74625,2],[74683,1],[74796,2],[74866,2],[74933,2],[74951,2],[74964,2],[75055,1],[75221,1],[75473,1],[75730,1],[75900,2],[76205,2],[76275,2],[76375,1],[76604,2],[76667,1],[76807,2],[76884,1],[77013,1],[77197,2],[77334,1],[77351,1],[77498,2],[77546,2],[77572,2],[77596,2],[77622,2],[77675,2],[77718,2],[77935,1],[77970,1],[78103,1],[78156,1],[78206,2],[78943,1],[78945,1],[78947,1]]},"96":{"position":[[174,2]]},"100":{"position":[[172,1],[947,1],[968,1],[1505,2],[1588,2],[1618,1],[1659,2],[1667,1],[1673,1],[1773,2],[1868,1],[1884,1],[1886,3],[1890,1],[1907,1],[1909,3],[1913,1],[1930,2],[2046,1],[2053,1],[2059,1],[2115,1],[2131,1],[2133,3],[2137,1],[2154,1],[2156,3],[2160,1],[2177,1],[2199,1],[2201,1],[2203,1],[2241,1],[2243,1],[2245,1],[2263,2],[2291,1],[2364,1],[2385,1],[2387,3]]},"102":{"position":[[118,1],[307,2],[337,1],[359,1],[361,1],[363,1],[428,1],[430,1],[432,1],[531,1],[533,1],[535,1],[600,1],[602,1],[620,2],[648,1],[666,1],[668,3]]},"120":{"position":[[29,2],[188,1],[227,1],[229,1],[430,1],[432,1],[821,2],[824,2],[827,1],[1153,1],[1157,1],[1159,2],[1162,1],[1616,1],[1620,1],[1622,1],[1624,1],[1626,1],[1628,1],[1630,1]]},"128":{"position":[[29,2]]},"136":{"position":[[29,2]]},"155":{"position":[[352,1]]},"159":{"position":[[75,1]]},"161":{"position":[[27,1],[86,1],[121,1],[140,1],[160,1],[181,1],[216,1],[231,1],[262,1],[288,1],[310,1],[328,1],[345,1],[366,1],[383,1],[399,1],[430,1],[485,1],[498,1],[513,1],[535,1],[556,1],[572,1],[574,5],[597,1],[599,5],[617,1],[649,1],[668,1],[685,1],[730,1],[766,1],[783,1],[802,1],[829,1],[869,1],[896,1],[922,1],[1009,1],[1030,1]]},"163":{"position":[[138,1],[185,1],[237,1],[257,1],[279,1],[297,1],[373,1],[392,1],[459,1],[506,1],[558,1],[578,1],[600,1],[618,1],[636,1],[655,1]]},"175":{"position":[[480,1],[555,1]]},"177":{"position":[[2183,1],[2546,1],[2579,2],[2599,2],[2619,2],[2731,2],[2749,2],[2752,1],[2802,1],[2820,1],[2855,2],[3099,2],[3147,2],[3240,2],[3254,1],[3274,1],[3281,1],[3283,1],[3335,1],[3337,1],[3339,1],[3341,2],[3359,1],[3375,1],[3377,2],[3510,1],[3517,2],[3559,1]]},"181":{"position":[[718,1],[782,1],[832,1],[841,1],[868,1],[870,2],[873,2],[876,1],[884,1],[895,1],[897,1],[938,1],[992,3],[996,2]]},"183":{"position":[[706,1],[770,1],[820,1],[829,1],[876,1],[878,2],[881,2],[884,1],[892,1],[911,1],[913,1],[934,3],[958,3],[962,1],[1250,1],[1311,1],[1361,1],[1370,1],[1417,1],[1419,2],[1422,2],[1425,1],[1433,1],[1443,1],[1445,1],[1463,3],[1486,2],[1513,3],[1517,1]]},"185":{"position":[[590,1],[598,2],[601,2],[604,1],[619,1],[658,1],[660,1],[712,2],[769,2],[793,2],[865,2],[868,2],[961,1],[1013,1],[1111,1],[1302,1],[1304,3],[1308,2],[1931,1],[1992,1],[2065,1],[2067,2],[2070,2],[2073,1],[2081,1],[2105,1],[2107,1],[2146,1],[2154,2],[2157,2],[2160,1],[2162,2],[2211,1],[2319,1],[2469,1],[2471,3],[2475,2],[2478,2]]},"209":{"position":[[633,1],[635,1],[637,3],[651,1],[663,1],[705,2],[708,3],[746,3],[760,1],[788,1],[790,3],[794,2],[797,2],[800,2],[879,3],[1716,1],[1756,3],[1775,1],[1777,1],[1789,1],[1801,1],[1813,2],[1816,2],[1914,4],[1919,2],[1922,1],[1924,1],[2914,1],[2923,1],[2954,1],[3284,3],[3288,2],[3291,2],[3341,2],[3365,1],[3379,3],[3398,1],[3400,1],[3402,3],[3416,1],[3418,3],[3432,1],[3485,1],[3509,2],[3512,2],[3515,1],[3517,3],[3521,1]]},"232":{"position":[[313,1]]},"237":{"position":[[210,1],[224,1],[226,1],[283,1],[313,1],[336,2],[394,2],[413,1],[430,1],[432,1],[439,1],[446,1],[448,1]]},"299":{"position":[[9,2],[16,2],[55,9],[65,8],[78,1],[85,7]]},"306":{"position":[[223,2],[355,1],[413,1]]},"308":{"position":[[290,2],[493,1],[539,1]]}}}],["0",{"_index":575,"t":{"5":{"position":[[25,1]]},"16":{"position":[[25,1]]},"68":{"position":[[1421,4],[1446,4],[1788,4],[1802,4]]},"70":{"position":[[1456,4],[1576,4],[1915,4],[2135,4],[2255,4]]},"72":{"position":[[677,4],[797,4],[1489,4],[1609,4]]},"74":{"position":[[935,4],[1055,4],[7200,4],[7320,4]]},"76":{"position":[[2222,4],[2311,4],[2857,4],[2946,4]]},"78":{"position":[[2326,4],[2351,4],[2440,4],[3069,4],[3094,4],[3183,4]]},"80":{"position":[[873,3],[950,3],[1027,3],[1104,3],[1181,3]]},"94":{"position":[[9292,4],[16485,1],[21622,1],[22688,1],[27648,1],[27675,2],[28385,2],[32983,1],[33974,1],[47653,2],[47976,2],[48254,2],[49184,2],[49364,1],[49368,1],[50398,2],[50448,2],[51518,2],[53551,2],[53900,2],[55708,1],[55854,2],[55921,2],[55986,2],[56051,2],[56115,2],[56177,2],[56239,2],[56301,2],[56478,1],[56822,1],[57570,1],[57918,1],[58187,2],[58253,2],[58317,2],[58381,2],[58444,2],[58623,1],[60376,1],[61348,2],[70937,2],[71185,1],[71992,2]]},"100":{"position":[[943,3],[2055,3]]},"120":{"position":[[549,2],[944,2],[997,2],[1155,1],[1279,2],[1332,2]]},"155":{"position":[[265,2],[354,2]]},"308":{"position":[[537,1]]}}}],["0)));\\\\n",{"_index":1499,"t":{"94":{"position":[[20699,8]]}}}],["0);\\\\n",{"_index":1609,"t":{"94":{"position":[[25580,6],[46942,6],[47201,6],[47670,6],[47730,6],[47994,6],[48272,6],[55594,6],[56707,6],[57802,6],[58863,6],[67207,6]]}}}],["0.0.0.0",{"_index":2822,"t":{"161":{"position":[[537,9],[651,9]]}}}],["0.000000000000000000",{"_index":606,"t":{"5":{"position":[[555,22]]}}}],["0.001",{"_index":3008,"t":{"185":{"position":[[560,5],[772,5]]}}}],["0.005",{"_index":2466,"t":{"94":{"position":[[73671,5]]}}}],["0.05",{"_index":2883,"t":{"167":{"position":[[630,4]]}}}],["0.1",{"_index":863,"t":{"42":{"position":[[483,3],[558,3]]},"265":{"position":[[850,3],[969,3]]}}}],["0.11",{"_index":866,"t":{"42":{"position":[[514,4]]},"265":{"position":[[906,4]]}}}],["0.8.0;\\\\n\\\\nimport",{"_index":2443,"t":{"94":{"position":[[72743,19]]}}}],["0.8.20;\\\\n\\\\n/**\\\\n",{"_index":1276,"t":{"94":{"position":[[10702,20],[14529,20],[22959,20],[28885,20],[46352,20],[59323,20],[60588,20],[66279,20]]}}}],["0.8.20;\\\\n\\\\nimport",{"_index":1441,"t":{"94":{"position":[[17322,20],[36171,20],[42635,20],[62084,20],[69937,20]]}}}],["0.8.20;\\\\n\\\\ninterfac",{"_index":1250,"t":{"94":{"position":[[9941,23]]}}}],["0.8.23",{"_index":1139,"t":{"87":{"position":[[189,9]]}}}],["0.\\\\n",{"_index":2037,"t":{"94":{"position":[[49536,5],[50772,5],[55719,5],[56489,5],[56833,5],[57581,5],[57929,5],[58634,5]]}}}],["0/1",{"_index":1770,"t":{"94":{"position":[[34447,3]]}}}],["0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d546f6b656e45786368616e676500000000000000000000000000000000000000",{"_index":1237,"t":{"94":{"position":[[9405,195]]}}}],["01111\\\\n",{"_index":1902,"t":{"94":{"position":[[41397,8]]}}}],["0123456789abcdef\\\\\\\";\\\\n",{"_index":2385,"t":{"94":{"position":[[70158,28]]}}}],["0;\\\\n",{"_index":1541,"t":{"94":{"position":[[22757,5],[53915,5],[55814,5],[56929,5],[58147,5]]}}}],["0=no",{"_index":2769,"t":{"155":{"position":[[314,4]]}}}],["0=pend",{"_index":2670,"t":{"102":{"position":[[381,11]]}}}],["0\\\\\\\";\\\\n",{"_index":2419,"t":{"94":{"position":[[71813,13]]}}}],["0x",{"_index":636,"t":{"10":{"position":[[946,5]]},"89":{"position":[[1627,2]]},"94":{"position":[[62253,2]]},"100":{"position":[[389,5]]},"185":{"position":[[788,4]]}}}],["0x0",{"_index":646,"t":{"10":{"position":[[1147,6],[1263,5]]},"12":{"position":[[1945,6],[2061,5]]}}}],["0x00",{"_index":1962,"t":{"94":{"position":[[44939,6]]}}}],["0x00000000",{"_index":2728,"t":{"120":{"position":[[1042,13]]}}}],["0x0000000000000000000000000000000000000000",{"_index":1093,"t":{"78":{"position":[[2734,45]]}}}],["0x00000000000000000000000000000000000000000000000000000000000000ff;\\\\n\\\\n",{"_index":2277,"t":{"94":{"position":[[63319,73]]}}}],["0x0000000000000000000000000000000000000000007c13bc4b2c133c56000000",{"_index":2733,"t":{"120":{"position":[[1529,69]]}}}],["0x0000000000000000000000000000000000000000007c13bc4b2c133c560000000000000000000000000000000000000000000000007c13bc4b2c133c5600000000000000",{"_index":2732,"t":{"120":{"position":[[1377,141]]}}}],["0x0000000000000000000000000000000000000001",{"_index":1004,"t":{"70":{"position":[[1521,45],[1860,45],[2200,45]]},"72":{"position":[[1554,45]]}}}],["0x000000000000000000000000000000000000027716b6a0adc2d677c080000000",{"_index":679,"t":{"12":{"position":[[1680,69]]}}}],["0x000000000000000000000000000000000000dead",{"_index":3011,"t":{"185":{"position":[[666,45]]}}}],["0x000000000000000000000000000000000000f000",{"_index":912,"t":{"57":{"position":[[10,42]]},"59":{"position":[[10,42]]},"120":{"position":[[494,45],[837,45],[1172,45]]}}}],["0x0000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075",{"_index":2729,"t":{"120":{"position":[[1066,69]]}}}],["0x0000000000000000000000003528c7b21cd34fe32cdda2806cb2e18a4659e8c1",{"_index":633,"t":{"10":{"position":[[796,69]]}}}],["0x0000000000000000000000005798c0c8cc396da77aaa68c0722b70926f98946c",{"_index":634,"t":{"10":{"position":[[866,68]]}}}],["0x0000000000000000000000006c85a831a945ba9b565d500a3a9e107a0aad868",{"_index":678,"t":{"12":{"position":[[1600,68]]}}}],["0x0000000000000000000000009386a8135c6a56103f14a1ed655ff7467b3b86eb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc0b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b",{"_index":1023,"t":{"72":{"position":[[1664,261]]}}}],["0x0000000000000000000000009d9b993fa37ed15a38ac111b02077e2bfe5c1d37",{"_index":677,"t":{"12":{"position":[[1530,69]]}}}],["0x01`).\\\\n",{"_index":1970,"t":{"94":{"position":[[45467,11]]}}}],["0x02",{"_index":1981,"t":{"94":{"position":[[46048,6]]}}}],["0x039bac1779933ee52abf3eff25188c4d673931ac",{"_index":1003,"t":{"70":{"position":[[1469,45],[1808,45],[2148,45]]},"72":{"position":[[742,45],[1502,45]]}}}],["0x095ea7b3",{"_index":995,"t":{"68":{"position":[[1906,13]]}}}],["0x0a6e405fac20bba7395f6f4363a4b18be6838d2b7c73ef6e7a1abca01de82951",{"_index":681,"t":{"12":{"position":[[1790,69]]}}}],["0x0e4cf4affdb72b39ea91fa726d291781cbd020bf",{"_index":914,"t":{"57":{"position":[[59,42]]}}}],["0x12301b",{"_index":680,"t":{"12":{"position":[[1765,11]]}}}],["0x12a95f3c32e400129c7970f5d490152ad24dd869",{"_index":604,"t":{"5":{"position":[[494,45]]}}}],["0x172f945ea91da4e92979c2a85388151f211c1ac40aa3e21f61233bdf6c8c0232",{"_index":1066,"t":{"76":{"position":[[2428,69]]}}}],["0x17b0cd2caaff5c8cf1ae1c0398b867dc9c5354caa166532b39ae6eb9dfddd626",{"_index":1027,"t":{"74":{"position":[[845,69]]}}}],["0x1b3a6f75b3e44af80a846a895778317fe31edc1c84cb9bfb08898f429ea4ca03",{"_index":1048,"t":{"76":{"position":[[1891,69]]}}}],["0x1c",{"_index":1950,"t":{"94":{"position":[[44013,4],[44122,6]]}}}],["0x20",{"_index":2306,"t":{"94":{"position":[[64285,6]]}}}],["0x20))\\\\n",{"_index":1719,"t":{"94":{"position":[[31210,9]]}}}],["0x20)\\\\n",{"_index":1954,"t":{"94":{"position":[[44143,9]]}}}],["0x22",{"_index":1983,"t":{"94":{"position":[[46091,6]]}}}],["0x25ab3efd52e6470681ce037cd546dc60726948d3",{"_index":1051,"t":{"76":{"position":[[2086,45],[2604,45]]}}}],["0x2e46771cff3636a42f363826ff8a94d3a738e075",{"_index":1028,"t":{"74":{"position":[[948,45],[7213,45]]},"120":{"position":[[442,45]]}}}],["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",{"_index":631,"t":{"10":{"position":[[656,69]]}}}],["0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\\\n",{"_index":2349,"t":{"94":{"position":[[66869,70]]}}}],["0x38a33c9dedf320432ab4bbfdaf5bec13fb156d81bfa96bbc853b387755f37291",{"_index":979,"t":{"68":{"position":[[1342,69]]}}}],["0x3c",{"_index":1953,"t":{"94":{"position":[[44080,5],[44089,4]]}}}],["0x3e57d6946f893314324c975aa9cebbdf3232967",{"_index":931,"t":{"59":{"position":[[279,42]]}}}],["0x40))\\\\n",{"_index":1720,"t":{"94":{"position":[[31246,9]]}}}],["0x42)\\\\n",{"_index":1986,"t":{"94":{"position":[[46138,8]]}}}],["0x42857b399adba34b75d6bedcacde75c7784e87c6",{"_index":629,"t":{"10":{"position":[[598,45]]}}}],["0x45",{"_index":1930,"t":{"94":{"position":[[43162,6],[44253,6]]}}}],["0x4b20bbf3652696b9afd27b8f88ff8b7c1f361336",{"_index":2724,"t":{"120":{"position":[[889,45]]}}}],["0x4e59b44847b379578588920ca78fbf26c0b4956c",{"_index":918,"t":{"57":{"position":[[135,42]]}}}],["0x50b60e5046fe4d13413737b7e886906d7511ed1fe78ba5aa4b1978145f0309da",{"_index":991,"t":{"68":{"position":[[1684,69]]}}}],["0x59682f07",{"_index":642,"t":{"10":{"position":[[1100,13]]}}}],["0x5ecacd9d0f8e7f843908db85add0cbd5a6e9ba12e7a6bd4df519ceeab0b4eb06",{"_index":1068,"t":{"76":{"position":[[2526,69]]}}}],["0x5eddd15700000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000021312b850fc5b0ee50c710d245c364bc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000041e7d4cad89769c747ecbfaab89239b64facf1be59ec2132f68d4c5ddd6e6834570b20c6c3dbe1733f9428aaafe5d37f9c56a7639426a793a3bb8b53bb313ede3b1c00000000000000000000000000000000000000000000000000000000000000",{"_index":1021,"t":{"72":{"position":[[852,461]]}}}],["0x5f5e107",{"_index":683,"t":{"12":{"position":[[1899,12]]}}}],["0x60)))\\\\n",{"_index":1722,"t":{"94":{"position":[[31290,10]]}}}],["0x60806040523480156200001157600080fd5b5060405162000a0c38038062000a0c8339810160408190526200003491620002d4565b6b033b2e3c9fd0803ce80000006002558051825160009114620000915760405162461bcd60e51b815260206004820152601060248201526f098cadccee8d0409cdee8409ac2e8c6d60831b60448201526064015b60405180910390fd5b60005b83518110156200019557828181518110620000b357620000b3620003b2565b602002602001015182620000c89190620003de565b91506002548211156200011e5760405162461bcd60e51b815260206004820152601460248201527f546f74616c537570706c79204f766572466c6f77000000000000000000000000604482015260640162000088565b828181518110620001335762000133620003b2565b6020026020010151600080868481518110620001535762000153620003b2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200018c90620003fa565b91505062000094565b508060025414620001e95760405162461bcd60e51b815260206004820152601e60248201527f546f74616c537570706c79206973206e6f742044697374726962757465640000604482015260640162000088565b50505062000416565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620002335762000233620001f2565b604052919050565b60006001600160401b03821115620002575762000257620001f2565b5060051b60200190565b600082601f8301126200027357600080fd5b815160206200028c62000286836200023b565b62000208565b82815260059290921b84018101918181019086841115620002ac57600080fd5b8286015b84811015620002c95780518352918301918301620002b0565b509695505050505050565b60008060408385031215620002e857600080fd5b82516001600160401b03808211156200030057600080fd5b818501915085601f8301126200031557600080fd5b815160206200032862000286836200023b565b82815260059290921b840181019181810190898411156200034857600080fd5b948201945b838610156200037f5785516001600160a01b03811681146200036f5760008081fd5b825294820194908201906200034d565b918801519196509093505050808211156200039957600080fd5b50620003a88582860162000261565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620003f457620003f4620003c8565b92915050565b6000600182016200040f576200040f620003c8565b5060010190565b6105e680620004266000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461012357806370a082311461013d57806395d89b4114610166578063a9059cbb14610188578063dd62ed3e1461019b57600080fd5b806306fdde0314610098578063095ea7b3146100d657806318160ddd146100f957806323b872dd14610110575b600080fd5b6100c060405180604001604052806009815260200168212921902a37b5b2b760b91b81525081565b6040516100cd9190610456565b60405180910390f35b6100e96100e43660046104c0565b6101d4565b60405190151581526020016100cd565b61010260025481565b6040519081526020016100cd565b6100e961011e3660046104ea565b610241565b61012b601281565b60405160ff90911681526020016100cd565b61010261014b366004610526565b6001600160a01b031660009081526020819052604090205490565b6100c06040518060400160405280600381526020016242524360e81b81525081565b6100e96101963660046104c0565b610391565b6101026101a9366004610541565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061022f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260208190526040812054821180159061028c57506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b80156102985750600082115b15610386576001600160a01b038316600090815260208190526040812080548492906102c590849061058a565b90915550506001600160a01b038416600090815260208190526040812080548492906102f290849061059d565b90915550506001600160a01b03841660009081526001602090815260408083203384529091528120805484929061032a90849061059d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161037691815260200190565b60405180910390a350600161038a565b5060005b9392505050565b3360009081526020819052604081205482118015906103b05750600082115b1561044e5733600090815260208190526040812080548492906103d490849061059d565b90915550506001600160a01b0383166000908152602081905260408120805484929061040190849061058a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350600161023b565b50600061023b565b600060208083528351808285015260005b8181101561048357858101830151858201604001528201610467565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104bb57600080fd5b919050565b600080604083850312156104d357600080fd5b6104dc836104a4565b946020939093013593505050565b6000806000606084860312156104ff57600080fd5b610508846104a4565b9250610516602085016104a4565b9150604084013590509250925092565b60006020828403121561053857600080fd5b61038a826104a4565b6000806040838503121561055457600080fd5b61055d836104a4565b915061056b602084016104a4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561023b5761023b610574565b8181038181111561023b5761023b61057456fea264697066735822122054ce9967d7d4eba6cafd665a64e31a65317e0cd391ee8f3adcd1a3194baebc2364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002e46771cff3636a42f363826ff8a94d3a738e075000000000000000000000000845d2b001934a99d072ef409b719cffe468ba7e300000000000000000000000026fc26213675827d863607902c8dbc7f42f1a2b70000000000000000000000007765992cae0cd7dc02e2b5857a375b0b090933b500000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000007c13bc4b2c133c56000000000000000000000000000000000000000000000000f8277896582678ac00000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000001743b34e18439b502000000",{"_index":1030,"t":{"74":{"position":[[1111,5917]]}}}],["0x60806040523480156200001157600080fd5b5060405162000e7438038062000e748339810160408190526200003491620004bb565b8451865114801562000047575083518651145b801562000055575082518651145b620000a75760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420696e707574206c656e67746800000000000000000000000060448201526064015b60405180910390fd5b6000805b87518110156200026c576000878281518110620000cc57620000cc6200058f565b602002602001015111620001325760405162461bcd60e51b815260206004820152602660248201527f546f74616c20746f6b656e73206d7573742062652067726561746572207468616044820152656e207a65726f60d01b60648201526084016200009e565b6040518060a001604052808883815181106200015257620001526200058f565b60200260200101518152602001600081526020018783815181106200017b576200017b6200058f565b602002602001015181526020018683815181106200019d576200019d6200058f565b6020026020010151815260200160011515815250600360008a8481518110620001ca57620001ca6200058f565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905586518790829081106200024057620002406200058f565b602002602001015182620002559190620005bb565b9150806200026381620005d7565b915050620000ab565b506000839055600180546001600160a01b0319166001600160a01b038416908117909155426002556040516370a0823160e01b81523060048201526370a0823190602401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620005f3565b8114620003445760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e672042616c616e6365206e6f74204d617463680000000000000060448201526064016200009e565b505050505050506200060d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000392576200039262000351565b604052919050565b60006001600160401b03821115620003b657620003b662000351565b5060051b60200190565b80516001600160a01b0381168114620003d857600080fd5b919050565b600082601f830112620003ef57600080fd5b815160206200040862000402836200039a565b62000367565b82815260059290921b840181019181810190868411156200042857600080fd5b8286015b848110156200044e576200044081620003c0565b83529183019183016200042c565b509695505050505050565b600082601f8301126200046b57600080fd5b815160206200047e62000402836200039a565b82815260059290921b840181019181810190868411156200049e57600080fd5b8286015b848110156200044e5780518352918301918301620004a2565b60008060008060008060c08789031215620004d557600080fd5b86516001600160401b0380821115620004ed57600080fd5b620004fb8a838b01620003dd565b975060208901519150808211156200051257600080fd5b620005208a838b0162000459565b965060408901519150808211156200053757600080fd5b620005458a838b0162000459565b955060608901519150808211156200055c57600080fd5b506200056b89828a0162000459565b935050608087015191506200058360a08801620003c0565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620005d157620005d1620005a5565b92915050565b600060018201620005ec57620005ec620005a5565b5060010190565b6000602082840312156200060657600080fd5b5051919050565b610857806200061d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a3fe79501161005b578063a3fe7950146100d3578063dc070657146100e6578063e6fd48bc146100f9578063fdb20ccb1461010257600080fd5b80630faf4baa146100825780631d31fac0146100b25780634e71d92d146100c9575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bb60005481565b6040519081526020016100a9565b6100d161016d565b005b6100bb6100e1366004610706565b61043b565b6100d16100f4366004610706565b610513565b6100bb60025481565b610143610110366004610706565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016100a9565b336000908152600360205260409020600481015460ff166101a95760405162461bcd60e51b81526004016101a090610736565b60405180910390fd5b60006101b433610657565b9050816002015481116102095760405162461bcd60e51b815260206004820152601e60248201527f436c69666620706572696f6420686173206e6f7420656e64656420796574000060448201526064016101a0565b60006102143361043b565b905060008360010154826102289190610781565b90506000811161027a5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520666f722072656c656173650060448201526064016101a0565b8084600101600082825461028e919061079a565b90915550506001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff91906107ad565b8111156103455760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016101a0565b83546001850154111561038a5760405162461bcd60e51b815260206004820152600d60248201526c15995cdd1a5b99c8195b991959609a1b60448201526064016101a0565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff91906107c6565b5060405181815233907fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931799060200160405180910390a250505050565b6001600160a01b0381166000908152600360208181526040808420815160a0810183528154815260018201549381019390935260028101549183019190915291820154606082015260049091015460ff161515608082018190526104b15760405162461bcd60e51b81526004016101a090610736565b60006104bc84610657565b90506000826040015182116104d657506000949350505050565b60008360400151836104e89190610781565b905083606001518185600001516104ff91906107e8565b61050991906107ff565b9695505050505050565b336000908152600360205260409020600481015460ff166105465760405162461bcd60e51b81526004016101a090610736565b6001600160a01b03821660009081526003602052604090206004015460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f4e657742656e656669636961727920697320416374697665000000000000000060448201526064016101a0565b6001600160a01b03821660008181526003602081905260408083208554815560018087015481830155600280880154818401558488015483860155600480890154938101805460ff909516151560ff19958616179055338088528588208881559384018890559183018790559482018690559301805490911690555190917f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d91a35050565b6002546000904290829061066b9083610781565b9050600080548261067c91906107ff565b6001600160a01b038616600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201849052918201546060820181905260049092015460ff16151560808201529293506106e3919061079a565b82106106fd5780604001518160600151610509919061079a565b50949350505050565b60006020828403121561071857600080fd5b81356001600160a01b038116811461072f57600080fd5b9392505050565b6020808252818101527f4e6f206163746976652076657374696e67207363686564756c6520666f756e64604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107945761079461076b565b92915050565b808201808211156107945761079461076b565b6000602082840312156107bf57600080fd5b5051919050565b6000602082840312156107d857600080fd5b8151801515811461072f57600080fd5b80820281158282048414176107945761079461076b565b60008261081c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122072316cc586c2a8c967295ba7c6e33bc7890cf771f04ae131a2043a542556b2b264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000015180000000000000000000000000f4340cf5f3891a3827713b33f769b501a0b5b1220000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a17104869c50271fe81042c81beb3e5a694e605d000000000000000000000000b0d7b4d930f302018ee1d7caff22b0819b4d59e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000024",{"_index":1036,"t":{"74":{"position":[[7376,8557]]}}}],["0x6374299e0000000000000000000000009f01eb5eb4dbea8b2cecc679050819990ab68a1a000000000000000000000000000000000000000000295be96e64066972000000",{"_index":2723,"t":{"120":{"position":[[662,141]]}}}],["0x662a0e3b",{"_index":640,"t":{"10":{"position":[[1074,13]]}}}],["0x6645d4e6",{"_index":682,"t":{"12":{"position":[[1873,13]]}}}],["0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1",{"_index":675,"t":{"12":{"position":[[1402,45]]}}}],["0x688f1dac2a07bdce6e7781ab1177880fc8d13ae3",{"_index":930,"t":{"59":{"position":[[229,42]]}}}],["0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",{"_index":1049,"t":{"76":{"position":[[1969,45],[2721,45]]}}}],["0x7765992cae0cd7dc02e2b5857a375b0b090933b5",{"_index":928,"t":{"59":{"position":[[171,42]]}}}],["0x7ba24f7b5bb5dcfdfeb4bacf587e0a8e63c7d7c39b9a5d05a0337c232a8b230d",{"_index":685,"t":{"12":{"position":[[1971,69]]}}}],["0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0",{"_index":1775,"t":{"94":{"position":[[34556,67]]}}}],["0x8001fd5a7fbeca309b7c1edd81ee68008cdbf86247fcf2b5a5522f3af65e691",{"_index":1034,"t":{"74":{"position":[[7110,69]]}}}],["0x80f5779b0348102d90f5463a9a494b7454d0e1f8d8b119cf090cd90e2d6105c3",{"_index":2718,"t":{"120":{"position":[[333,69]]}}}],["0x818173cb7faafda18f32e1418d880f475ec66967b308078254fbd008b3e82217",{"_index":1080,"t":{"78":{"position":[[1913,69],[2656,69]]}}}],["0x845d2b001934a99d072ef409b719cffe468ba7e3",{"_index":927,"t":{"59":{"position":[[120,42]]},"74":{"position":[[7265,45]]}}}],["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",{"_index":676,"t":{"12":{"position":[[1460,69]]}}}],["0x8c61a31425cece813e512578358aaff625b5fc25a6a1c59380cdddd5278a9ea2",{"_index":1047,"t":{"76":{"position":[[1794,69]]}}}],["0x8ede2",{"_index":637,"t":{"10":{"position":[[967,10]]}}}],["0x9386a8135c6a56103f14a1ed655ff7467b3b86eb",{"_index":1018,"t":{"72":{"position":[[690,45]]}}}],["0x963c039406f8b10d3a0691328b4d2ae90fa43230",{"_index":1082,"t":{"78":{"position":[[2056,45],[2799,45]]}}}],["0x9827431e8b77e87c9894bd50b055d6be56be0030",{"_index":2742,"t":{"139":{"position":[[114,42]]}}}],["0x9aa7501ca38b9984d6fd67ee65b44122ddb1523d7f1ea64d0dfdecd078fefb9",{"_index":1079,"t":{"78":{"position":[[1815,69],[2558,69]]}}}],["0x9b169e06404b28fec2f1d20eeecc485ed8d11c0f792d872dfc78e29e05fe3a2f",{"_index":1009,"t":{"70":{"position":[[1705,69]]}}}],["0xa8599451628af4914db83b7d73df8784bdda7bc6d541d6931a5855bd54091c04",{"_index":1017,"t":{"72":{"position":[[587,69],[1399,69]]}}}],["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",{"_index":2262,"t":{"94":{"position":[[62170,64]]}}}],["0xabcdef",{"_index":1200,"t":{"89":{"position":[[1639,11]]}}}],["0xb507",{"_index":684,"t":{"12":{"position":[[1923,9]]}}}],["0xb633b52fa2eaa2f817aa721db500766458e6b794b872f911d8f72d20c1356377",{"_index":1002,"t":{"70":{"position":[[1366,69]]}}}],["0xbd24dcaa72e661ecc948a654437dafa1a6384e90",{"_index":1083,"t":{"78":{"position":[[2108,45]]}}}],["0xc8818aaeabf0df9f3f3fff54ab185705177a6234",{"_index":922,"t":{"57":{"position":[[241,42]]}}}],["0xc8e1",{"_index":644,"t":{"10":{"position":[[1125,9]]}}}],["0xc914f58fafbad9ba2197cfb706c1e93ab20860de4d3fd17c8b0ae396dc8862c1",{"_index":648,"t":{"10":{"position":[[1173,69]]}}}],["0xce9a42b2d2e0c0a7984d9351793129b91dc0599b9b4401082b75afcbc6abd694",{"_index":2717,"t":{"120":{"position":[[250,69]]}}}],["0xd0e30db0",{"_index":987,"t":{"68":{"position":[[1579,13]]}}}],["0xd9e8a7407f4993d85ba80ddc05a0bcf2e45c5a70781fae58d508df45bf7bf846",{"_index":1013,"t":{"70":{"position":[[2045,69]]}}}],["0xddf655d9afd934b4851873ba55a678dc82282d4a",{"_index":920,"t":{"57":{"position":[[186,42]]}}}],["0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d",{"_index":950,"t":{"66":{"position":[[601,45]]}}}],["0xe7564c607c663e5784031229570cbd47290dd87f",{"_index":949,"t":{"66":{"position":[[505,45]]}}}],["0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2",{"_index":2743,"t":{"139":{"position":[[179,42]]}}}],["0xf4340cf5f3891a3827713b33f769b501a0b5b122",{"_index":925,"t":{"59":{"position":[[59,42]]},"74":{"position":[[1000,45]]},"120":{"position":[[1224,45]]}}}],["0xf];\\\\n",{"_index":2424,"t":{"94":{"position":[[71939,8]]}}}],["0xfabf3909f1b538697092793867e2118600b63b14fa641bb49f83a02b18d47f0d",{"_index":632,"t":{"10":{"position":[[726,69]]}}}],["0xfd7f02f18b6c82c765c57b9817438c93a80238b71942d58c7e3219c9a688b5c1",{"_index":639,"t":{"10":{"position":[[991,69]]}}}],["0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",{"_index":1050,"t":{"76":{"position":[[2034,45],[2669,45]]},"139":{"position":[[55,42]]}}}],["0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",{"_index":1081,"t":{"78":{"position":[[1991,45],[2851,45]]}}}],["0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f",{"_index":924,"t":{"57":{"position":[[291,42]]}}}],["0xff;\\\\n",{"_index":2311,"t":{"94":{"position":[[64518,8]]}}}],["0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",{"_index":1765,"t":{"94":{"position":[[34282,66]]}}}],["1",{"_index":388,"t":{"2":{"position":[[6921,1],[7002,1]]},"5":{"position":[[394,4]]},"7":{"position":[[502,4]]},"10":{"position":[[551,4]]},"12":{"position":[[1355,4]]},"16":{"position":[[471,4],[515,3]]},"21":{"position":[[605,1],[816,1]]},"25":{"position":[[239,1],[687,1]]},"27":{"position":[[140,2]]},"29":{"position":[[281,1]]},"31":{"position":[[563,1]]},"37":{"position":[[119,1]]},"64":{"position":[[343,4]]},"68":{"position":[[1542,4],[1763,4],[1869,4]]},"70":{"position":[[1617,4],[1795,4],[1956,4],[2296,4]]},"72":{"position":[[838,4],[1650,4]]},"74":{"position":[[1097,4],[7362,4]]},"76":{"position":[[1873,4]]},"92":{"position":[[1109,2]]},"94":{"position":[[12297,2],[33999,2],[49298,2],[49377,2],[49914,2],[51431,2],[52046,1],[52169,1],[54532,1],[54567,1],[55590,1],[56297,1],[56681,1],[56703,1],[57392,2],[57798,1],[58830,1],[58859,1],[62609,2],[71883,2],[71890,2]]},"100":{"position":[[966,1],[1481,1],[1662,4],[1669,3]]},"120":{"position":[[196,2],[1618,1]]},"185":{"position":[[2171,1],[2244,3]]},"260":{"position":[[115,3]]},"303":{"position":[[174,1],[2272,1]]},"306":{"position":[[367,4]]},"308":{"position":[[505,4]]}}}],["1);\\\\n",{"_index":2226,"t":{"94":{"position":[[60068,6],[71491,6]]}}}],["1);\\\\n\\\\n",{"_index":2179,"t":{"94":{"position":[[54584,9]]}}}],["1)\\\\n",{"_index":2101,"t":{"94":{"position":[[51821,5]]}}}],["1)`\\\\n",{"_index":2168,"t":{"94":{"position":[[54316,6],[54426,6]]}}}],["1.0.0",{"_index":2950,"t":{"177":{"position":[[1418,6],[1470,5]]}}}],["1.\\\\n",{"_index":1744,"t":{"94":{"position":[[32988,5]]}}}],["10",{"_index":1197,"t":{"89":{"position":[[1594,3]]},"94":{"position":[[56764,2],[56963,2],[56987,2],[57035,2],[57059,2],[57107,2],[57131,2],[57179,2],[57202,2],[57248,2],[57271,2],[57317,2],[57340,2],[57386,2],[57489,3],[57775,2],[70882,4]]},"161":{"position":[[312,2]]}}}],["100",{"_index":2602,"t":{"98":{"position":[[25,3]]},"204":{"position":[[103,4]]},"245":{"position":[[145,4]]},"291":{"position":[[274,4]]}}}],["10000",{"_index":958,"t":{"68":{"position":[[241,5]]},"70":{"position":[[133,5]]},"72":{"position":[[114,5]]},"74":{"position":[[140,5]]}}}],["100000000",{"_index":2795,"t":{"161":{"position":[[162,9],[290,9]]}}}],["100000007",{"_index":1090,"t":{"78":{"position":[[2385,12],[3128,12]]}}}],["101193",{"_index":1060,"t":{"76":{"position":[[2280,9]]}}}],["1024",{"_index":2811,"t":{"161":{"position":[[385,4]]}}}],["10240",{"_index":2808,"t":{"161":{"position":[[347,5]]}}}],["102553563",{"_index":983,"t":{"68":{"position":[[1509,12]]}}}],["102581210",{"_index":993,"t":{"68":{"position":[[1836,12]]}}}],["105000007",{"_index":1070,"t":{"76":{"position":[[2891,12]]}}}],["107806",{"_index":1058,"t":{"76":{"position":[[2234,9]]}}}],["10;\\\\n",{"_index":2404,"t":{"94":{"position":[[70917,6]]}}}],["10x",{"_index":75,"t":{"2":{"position":[[879,3]]}}}],["11).\\\\n",{"_index":2155,"t":{"94":{"position":[[53815,7]]}}}],["1170994",{"_index":616,"t":{"7":{"position":[[534,10]]}}}],["1189623",{"_index":1109,"t":{"80":{"position":[[1128,10]]}}}],["1189643",{"_index":1107,"t":{"80":{"position":[[1051,10]]}}}],["1189663",{"_index":1105,"t":{"80":{"position":[[974,10]]}}}],["1189683",{"_index":1103,"t":{"80":{"position":[[897,10]]}}}],["1189703",{"_index":1101,"t":{"80":{"position":[[820,10]]}}}],["1193",{"_index":2985,"t":{"181":{"position":[[421,4],[1181,4]]}}}],["12",{"_index":2654,"t":{"100":{"position":[[1483,2]]}}}],["120000000000",{"_index":2845,"t":{"161":{"position":[[924,12]]}}}],["1234",{"_index":1157,"t":{"87":{"position":[[982,7],[1000,6]]}}}],["125000009",{"_index":1059,"t":{"76":{"position":[[2256,12]]}}}],["125699",{"_index":1071,"t":{"76":{"position":[[2915,9]]}}}],["12697906",{"_index":595,"t":{"5":{"position":[[357,8]]}}}],["128",{"_index":2193,"t":{"94":{"position":[[55848,3],[58181,3]]}}}],["128;\\\\n",{"_index":2194,"t":{"94":{"position":[[55872,7],[55890,7],[58205,7]]}}}],["12=apach",{"_index":2656,"t":{"100":{"position":[[1508,9]]}}}],["140550",{"_index":992,"t":{"68":{"position":[[1814,9]]}}}],["150040",{"_index":2730,"t":{"120":{"position":[[1342,7]]}}}],["153436",{"_index":1069,"t":{"76":{"position":[[2869,9]]}}}],["1559",{"_index":3275,"t":{"265":{"position":[[1024,4]]}}}],["157800",{"_index":2726,"t":{"120":{"position":[[1007,7]]}}}],["16",{"_index":2198,"t":{"94":{"position":[[56046,2],[57113,3],[58376,2]]}}}],["162996",{"_index":2722,"t":{"120":{"position":[[645,7]]}}}],["165629",{"_index":2721,"t":{"120":{"position":[[625,7]]}}}],["16;\\\\n",{"_index":2199,"t":{"94":{"position":[[56069,6],[56086,6],[57137,6],[57154,6],[58223,6],[58399,6]]}}}],["16core",{"_index":2778,"t":{"159":{"position":[[44,6]]}}}],["16g",{"_index":2775,"t":{"159":{"position":[[15,3]]}}}],["1707134551",{"_index":1026,"t":{"74":{"position":[[823,13]]}}}],["1707134563",{"_index":1033,"t":{"74":{"position":[[7088,13]]}}}],["1713324960",{"_index":1001,"t":{"70":{"position":[[1344,13]]}}}],["1713325008",{"_index":1008,"t":{"70":{"position":[[1683,13]]}}}],["1713325047",{"_index":1012,"t":{"70":{"position":[[2023,13]]}}}],["1713555721",{"_index":602,"t":{"5":{"position":[[466,13]]}}}],["1713753232",{"_index":1065,"t":{"76":{"position":[[2406,13]]}}}],["1713925552",{"_index":1046,"t":{"76":{"position":[[1772,13]]}}}],["1713948988",{"_index":1078,"t":{"78":{"position":[[1793,13],[2536,13]]}}}],["1715011831",{"_index":978,"t":{"68":{"position":[[1320,13]]}}}],["1715012275",{"_index":990,"t":{"68":{"position":[[1662,13]]}}}],["1715845498",{"_index":1110,"t":{"80":{"position":[[1152,13]]}}}],["1715845558",{"_index":1108,"t":{"80":{"position":[[1075,13]]}}}],["1715845618",{"_index":1106,"t":{"80":{"position":[[998,13]]}}}],["1715845678",{"_index":1104,"t":{"80":{"position":[[921,13]]}}}],["1715845738",{"_index":1102,"t":{"80":{"position":[[844,13]]}}}],["1715921315",{"_index":1016,"t":{"72":{"position":[[565,13],[1377,13]]}}}],["18",{"_index":847,"t":{"42":{"position":[[69,2]]},"139":{"position":[[176,2]]},"265":{"position":[[345,2]]},"306":{"position":[[542,2]]}}}],["1800000000000",{"_index":2813,"t":{"161":{"position":[[401,13]]}}}],["18446744073709551615",{"_index":2720,"t":{"120":{"position":[[596,21]]}}}],["1884[eip1884",{"_index":1558,"t":{"94":{"position":[[23652,13]]}}}],["191",{"_index":1925,"t":{"94":{"position":[[42959,4],[43128,3],[44219,3],[44905,3],[45455,3]]}}}],["191[eip",{"_index":1924,"t":{"94":{"position":[[42951,7]]}}}],["1:1",{"_index":3005,"t":{"185":{"position":[[507,3]]}}}],["1;\\\\n",{"_index":2033,"t":{"94":{"position":[[49386,5],[53569,5],[55013,5],[55053,5],[55093,5],[55133,5],[55173,5],[55213,5],[55253,5],[56319,5],[57410,5],[58462,5],[59105,5],[70609,5]]}}}],["1=no",{"_index":2655,"t":{"100":{"position":[[1492,4]]}}}],["1=pass",{"_index":2671,"t":{"102":{"position":[[393,6]]}}}],["1=trace",{"_index":2770,"t":{"155":{"position":[[326,7]]}}}],["1\\\\\\\"){\\\\n",{"_index":2490,"t":{"94":{"position":[[74185,14]]}}}],["1、current",{"_index":2600,"t":{"98":{"position":[[0,9]]}}}],["2",{"_index":131,"t":{"2":{"position":[[1763,1],[2889,1],[3670,1],[4118,1],[4383,1],[4482,1],[4997,1],[6626,1],[6978,1],[7042,1],[7124,1],[7239,1],[8011,1],[8232,1],[8347,1],[8651,1],[9564,1],[11364,1],[12006,1]]},"5":{"position":[[85,1]]},"16":{"position":[[85,1]]},"21":{"position":[[63,1],[573,1],[804,1]]},"23":{"position":[[272,1]]},"25":{"position":[[187,1]]},"27":{"position":[[128,1]]},"29":{"position":[[116,1],[391,1],[497,1]]},"31":{"position":[[108,1],[183,1],[294,1]]},"33":{"position":[[467,1],[472,1]]},"35":{"position":[[66,1],[191,2],[272,2],[799,1]]},"37":{"position":[[131,1],[202,1]]},"48":{"position":[[217,1]]},"54":{"position":[[321,1]]},"94":{"position":[[12385,2],[33720,1],[33995,1],[48835,1],[49613,1],[52425,1],[52485,1],[52546,1],[52607,1],[52668,1],[52730,1],[53981,1],[54139,1],[54471,3],[55651,1],[56235,1],[56398,2],[57323,2],[59100,1],[71870,1]]},"163":{"position":[[295,1],[616,1]]},"226":{"position":[[28,1],[160,1]]},"228":{"position":[[394,1]]},"245":{"position":[[112,1]]},"260":{"position":[[172,3]]},"281":{"position":[[740,1]]},"283":{"position":[[140,1],[353,1]]},"295":{"position":[[357,1]]},"303":{"position":[[719,1],[834,1],[1589,1],[1809,1],[2208,1],[2433,1]]}}}],["2);\\\\n",{"_index":2417,"t":{"94":{"position":[[71794,6]]}}}],["2**((k+1)/2",{"_index":2173,"t":{"94":{"position":[[54400,12]]}}}],["2**(k/2",{"_index":2172,"t":{"94":{"position":[[54377,9],[54416,7]]}}}],["2**(log2(a",{"_index":2167,"t":{"94":{"position":[[54302,11],[54456,12]]}}}],["2**log2(a",{"_index":2166,"t":{"94":{"position":[[54283,11]]}}}],["2*msb(a",{"_index":2162,"t":{"94":{"position":[[54180,10]]}}}],["2.0",{"_index":2657,"t":{"100":{"position":[[1518,4]]},"120":{"position":[[210,6]]}}}],["2.0.0",{"_index":2949,"t":{"177":{"position":[[1304,6],[1494,6],[3326,8]]}}}],["2.0.5",{"_index":1129,"t":{"85":{"position":[[280,9]]}}}],["2.19.4",{"_index":1130,"t":{"85":{"position":[[301,9]]}}}],["20",{"_index":36,"t":{"2":{"position":[[396,4]]},"66":{"position":[[402,2]]},"76":{"position":[[24,2],[872,2],[936,2],[1017,2]]},"94":{"position":[[72151,2]]},"116":{"position":[[85,2],[151,2]]},"118":{"position":[[331,2],[375,2]]},"124":{"position":[[92,2],[158,2]]},"291":{"position":[[81,2]]},"306":{"position":[[37,2],[330,2]]},"308":{"position":[[38,2],[397,2]]}}}],["200",{"_index":1143,"t":{"87":{"position":[[434,4]]},"94":{"position":[[9305,6]]},"100":{"position":[[1044,4],[1058,3]]}}}],["20000000000",{"_index":2790,"t":{"161":{"position":[[88,11]]},"306":{"position":[[399,13]]}}}],["200810",{"_index":1148,"t":{"87":{"position":[[527,7],[1065,7]]},"108":{"position":[[50,6]]},"177":{"position":[[1156,7]]},"209":{"position":[[50,6],[2385,6]]}}}],["200901",{"_index":1151,"t":{"87":{"position":[[634,7],[1213,7]]},"106":{"position":[[55,6]]},"207":{"position":[[55,6]]}}}],["2023",{"_index":3311,"t":{"281":{"position":[[175,4]]},"283":{"position":[[644,5]]}}}],["2024",{"_index":81,"t":{"2":{"position":[[960,5]]}}}],["2063492",{"_index":1000,"t":{"70":{"position":[[1320,10]]}}}],["2063508",{"_index":1007,"t":{"70":{"position":[[1659,10]]}}}],["2063521",{"_index":1011,"t":{"70":{"position":[[1999,10]]}}}],["2098",{"_index":1740,"t":{"94":{"position":[[32645,4]]}}}],["2098[eip",{"_index":1739,"t":{"94":{"position":[[32636,8]]}}}],["20;\\\\n\\\\n",{"_index":2387,"t":{"94":{"position":[[70227,9]]}}}],["2107000",{"_index":1052,"t":{"76":{"position":[[2141,10],[2776,10]]}}}],["215.241526476136819398",{"_index":3378,"t":{"306":{"position":[[515,22]]}}}],["215241526476136819398",{"_index":3379,"t":{"306":{"position":[[580,21]]}}}],["21share",{"_index":68,"t":{"2":{"position":[[811,9]]}}}],["2300",{"_index":1562,"t":{"94":{"position":[[23752,4]]}}}],["24",{"_index":2885,"t":{"167":{"position":[[732,2]]}}}],["24160814822445819116",{"_index":941,"t":{"64":{"position":[[375,22]]},"66":{"position":[[562,22]]}}}],["2443",{"_index":2727,"t":{"120":{"position":[[1027,5]]}}}],["255",{"_index":1746,"t":{"94":{"position":[[33026,4],[60108,4]]}}}],["256",{"_index":2062,"t":{"94":{"position":[[50139,3],[50201,3],[50361,3],[50368,3],[50912,3],[51189,3],[57859,3],[58541,4]]}}}],["256\\\\n",{"_index":2060,"t":{"94":{"position":[[50029,6]]}}}],["2612#specification[relev",{"_index":1363,"t":{"94":{"position":[[13464,27]]}}}],["2612[eip",{"_index":1284,"t":{"94":{"position":[[10870,8]]}}}],["2612].\\\\n",{"_index":1285,"t":{"94":{"position":[[10879,9]]}}}],["263524729\\\\n",{"_index":1434,"t":{"94":{"position":[[16591,12]]}}}],["27",{"_index":1693,"t":{"94":{"position":[[30203,2],[31821,2],[34026,4],[34370,2],[34476,2]]}}}],["27);\\\\n",{"_index":1747,"t":{"94":{"position":[[33033,7]]}}}],["27/28",{"_index":1771,"t":{"94":{"position":[[34465,6]]}}}],["28",{"_index":1760,"t":{"94":{"position":[[34031,4],[34376,2],[44018,4]]}}}],["28.\\\\n",{"_index":1694,"t":{"94":{"position":[[30209,6],[31827,6]]}}}],["28002",{"_index":1092,"t":{"78":{"position":[[2485,7],[3228,7]]}}}],["2814",{"_index":2731,"t":{"120":{"position":[[1362,5]]}}}],["29",{"_index":1025,"t":{"74":{"position":[[804,5]]}}}],["2928943",{"_index":1015,"t":{"72":{"position":[[541,10],[1353,10]]}}}],["2;\\\\n",{"_index":2027,"t":{"94":{"position":[[48881,5],[56257,5],[56273,5],[57346,5],[57362,5],[58416,5]]}}}],["2;\\\\n\\\\n",{"_index":2115,"t":{"94":{"position":[[52221,8]]}}}],["2=fail",{"_index":2672,"t":{"102":{"position":[[400,6]]}}}],["2=trace",{"_index":2771,"t":{"155":{"position":[[357,7]]}}}],["2^128\\\\n",{"_index":2132,"t":{"94":{"position":[[52710,8]]}}}],["2^16\\\\n",{"_index":2129,"t":{"94":{"position":[[52527,7]]}}}],["2^256",{"_index":2055,"t":{"94":{"position":[[49892,5],[49906,5],[50077,5],[50736,6],[51729,5],[51933,6],[52004,5],[52052,6],[52941,6],[53018,6]]}}}],["2^256\\\\n\\\\n",{"_index":2133,"t":{"94":{"position":[[52772,11]]}}}],["2^32\\\\n",{"_index":2130,"t":{"94":{"position":[[52588,7]]}}}],["2^4.\\\\n",{"_index":2113,"t":{"94":{"position":[[52175,7]]}}}],["2^64\\\\n",{"_index":2131,"t":{"94":{"position":[[52649,7]]}}}],["2^8\\\\n",{"_index":2128,"t":{"94":{"position":[[52467,6]]}}}],["2s",{"_index":2891,"t":{"169":{"position":[[143,2]]}}}],["2s…these",{"_index":39,"t":{"2":{"position":[[419,8]]}}}],["2、onli",{"_index":2605,"t":{"98":{"position":[[78,6]]}}}],["3",{"_index":2114,"t":{"94":{"position":[[52201,2],[58846,2]]},"163":{"position":[[311,1],[669,1]]}}}],["3.0\\\\npragma",{"_index":2442,"t":{"94":{"position":[[72721,12]]}}}],["30",{"_index":2662,"t":{"100":{"position":[[1806,2]]},"260":{"position":[[27,2]]}}}],["3000",{"_index":1006,"t":{"70":{"position":[[1633,5],[1972,6],[2312,6]]},"72":{"position":[[1937,6]]}}}],["3000000000",{"_index":2797,"t":{"161":{"position":[[183,10]]}}}],["30000000000",{"_index":2842,"t":{"161":{"position":[[871,11],[898,11]]}}}],["300000000000",{"_index":2788,"t":{"161":{"position":[[61,12]]}}}],["301",{"_index":1757,"t":{"94":{"position":[[33967,6]]}}}],["302",{"_index":1759,"t":{"94":{"position":[[34015,6]]}}}],["31",{"_index":2268,"t":{"94":{"position":[[62560,2],[63261,2],[63504,2],[63765,3],[64540,3]]}}}],["31031",{"_index":2783,"t":{"159":{"position":[[116,5]]},"161":{"position":[[804,8]]}}}],["32",{"_index":1067,"t":{"76":{"position":[[2507,5]]},"94":{"position":[[43943,2],[55981,2],[57041,3],[58312,2],[62639,3],[64855,3],[77271,2],[77330,3],[77384,2],[77432,2],[77507,2],[77582,2],[77660,2]]},"116":{"position":[[6,2]]},"118":{"position":[[104,2],[157,2]]},"132":{"position":[[6,2]]},"161":{"position":[[368,2]]}}}],["32))\\\\n",{"_index":2575,"t":{"94":{"position":[[77564,7]]}}}],["32;\\\\n",{"_index":2197,"t":{"94":{"position":[[56004,6],[56021,6],[57065,6],[57082,6],[58335,6]]}}}],["32\\\\n",{"_index":2568,"t":{"94":{"position":[[77353,5]]}}}],["32g",{"_index":2779,"t":{"159":{"position":[[51,3]]}}}],["33",{"_index":1032,"t":{"74":{"position":[[7069,5]]},"78":{"position":[[1894,5],[2637,5]]}}}],["36357",{"_index":1022,"t":{"72":{"position":[[1325,7]]}}}],["38.43",{"_index":3332,"t":{"283":{"position":[[668,7]]}}}],["3、contract",{"_index":2610,"t":{"98":{"position":[[154,11]]}}}],["4",{"_index":2201,"t":{"94":{"position":[[56173,1],[57254,2]]}}}],["4.0.0",{"_index":1128,"t":{"85":{"position":[[235,9]]}}}],["40000000",{"_index":2793,"t":{"161":{"position":[[123,8],[142,8]]}}}],["417256",{"_index":1031,"t":{"74":{"position":[[7040,8]]}}}],["426364",{"_index":600,"t":{"5":{"position":[[443,9]]}}}],["4337",{"_index":2892,"t":{"169":{"position":[[257,4]]}}}],["44978",{"_index":985,"t":{"68":{"position":[[1558,8]]}}}],["45358",{"_index":982,"t":{"68":{"position":[[1488,8]]}}}],["46143",{"_index":994,"t":{"68":{"position":[[1885,8]]}}}],["476443",{"_index":1091,"t":{"78":{"position":[[2409,9],[3152,9]]}}}],["492201",{"_index":1064,"t":{"76":{"position":[[2383,9]]}}}],["4;\\\\n",{"_index":2202,"t":{"94":{"position":[[56195,5],[56211,5],[57277,5],[57293,5],[58352,5],[71963,5]]}}}],["4、list",{"_index":2612,"t":{"98":{"position":[[288,6]]}}}],["5",{"_index":1198,"t":{"89":{"position":[[1601,2]]}}}],["50",{"_index":1196,"t":{"89":{"position":[[1564,3]]},"98":{"position":[[453,3]]},"161":{"position":[[768,2]]}}}],["512",{"_index":2049,"t":{"94":{"position":[[49828,3],[49985,3],[50905,3],[51209,3]]}}}],["517789",{"_index":1029,"t":{"74":{"position":[[1067,9]]}}}],["520481",{"_index":1089,"t":{"78":{"position":[[2363,9],[3106,9]]}}}],["5267}.\\\\n",{"_index":1898,"t":{"94":{"position":[[41107,9]]}}}],["54",{"_index":2719,"t":{"120":{"position":[[418,3]]}}}],["549641",{"_index":1045,"t":{"76":{"position":[[1749,9]]}}}],["557453",{"_index":1077,"t":{"78":{"position":[[1770,9],[2513,9]]}}}],["5、upon",{"_index":2618,"t":{"98":{"position":[[400,6]]}}}],["6",{"_index":2739,"t":{"139":{"position":[[53,1],[112,1]]}}}],["60",{"_index":5,"t":{"2":{"position":[[71,2]]},"100":{"position":[[1809,2]]}}}],["600000000000",{"_index":2803,"t":{"161":{"position":[[264,12]]}}}],["64",{"_index":2195,"t":{"94":{"position":[[55916,2],[56969,3],[58248,2]]},"161":{"position":[[330,2]]}}}],["64))\\\\n",{"_index":2577,"t":{"94":{"position":[[77614,7]]}}}],["64;\\\\n",{"_index":2196,"t":{"94":{"position":[[55939,6],[55956,6],[56993,6],[57010,6],[58271,6]]}}}],["65",{"_index":1712,"t":{"94":{"position":[[30970,3],[77200,3]]}}}],["65001055500330754286618552158997555046548672384952399608215284533236886254591",{"_index":1085,"t":{"78":{"position":[[2165,80],[2908,80]]}}}],["65676",{"_index":1072,"t":{"76":{"position":[[2991,7]]}}}],["665332",{"_index":1037,"t":{"74":{"position":[[15945,8]]}}}],["6、you",{"_index":2621,"t":{"98":{"position":[[482,5]]}}}],["7",{"_index":2185,"t":{"94":{"position":[[54856,1]]}}}],["712",{"_index":1795,"t":{"94":{"position":[[36445,4],[37011,3],[45435,3]]}}}],["712#definit",{"_index":1854,"t":{"94":{"position":[[39058,14],[40388,14]]}}}],["712.\\\\n",{"_index":1974,"t":{"94":{"position":[[45762,7]]}}}],["712[`eth_signtypeddata",{"_index":1973,"t":{"94":{"position":[[45706,24]]}}}],["712[eip",{"_index":1794,"t":{"94":{"position":[[36437,7],[43003,7]]}}}],["712\\\\n",{"_index":1259,"t":{"94":{"position":[[10207,6]]}}}],["712]:\\\\n",{"_index":1856,"t":{"94":{"position":[[39096,8]]}}}],["712]\\\\n",{"_index":1926,"t":{"94":{"position":[[43011,7]]}}}],["7152743425798252551",{"_index":951,"t":{"66":{"position":[[658,21]]}}}],["721",{"_index":1073,"t":{"78":{"position":[[24,3],[890,3],[955,3],[1037,3]]}}}],["77299",{"_index":1010,"t":{"70":{"position":[[1927,8],[2267,8]]}}}],["77311",{"_index":1005,"t":{"70":{"position":[[1588,8]]}}}],["785842",{"_index":1035,"t":{"74":{"position":[[7332,9]]}}}],["7、verifi",{"_index":2622,"t":{"98":{"position":[[545,10]]}}}],["8",{"_index":850,"t":{"42":{"position":[[117,1]]},"94":{"position":[[56111,1],[57185,2],[58440,1],[65669,1]]},"265":{"position":[[402,1]]}}}],["8000:8000",{"_index":3053,"t":{"193":{"position":[[438,11]]}}}],["8001:8001",{"_index":3054,"t":{"193":{"position":[[452,11]]}}}],["8020:8020",{"_index":3055,"t":{"193":{"position":[[466,11]]}}}],["8030:8030",{"_index":3056,"t":{"193":{"position":[[480,11]]}}}],["8040:8040",{"_index":3057,"t":{"193":{"position":[[494,11]]}}}],["8236",{"_index":1063,"t":{"76":{"position":[[2356,6]]}}}],["8445",{"_index":2861,"t":{"163":{"position":[[274,4],[595,4]]}}}],["8545",{"_index":2824,"t":{"161":{"position":[[558,4]]}}}],["8546",{"_index":2831,"t":{"161":{"position":[[670,4]]}}}],["8;\\\\n",{"_index":2200,"t":{"94":{"position":[[56133,5],[56149,5],[57208,5],[57224,5],[58288,5]]}}}],["8core",{"_index":2774,"t":{"159":{"position":[[9,5]]}}}],["90214",{"_index":1019,"t":{"72":{"position":[[809,8],[1621,8]]}}}],["911734",{"_index":977,"t":{"68":{"position":[[1297,9]]}}}],["911882",{"_index":989,"t":{"68":{"position":[[1639,9]]}}}],["96)))\\\\n",{"_index":2579,"t":{"94":{"position":[[77701,8]]}}}],["99800000000000000",{"_index":981,"t":{"68":{"position":[[1460,20]]}}}],["_;\\\\n",{"_index":2498,"t":{"94":{"position":[[74341,5],[74439,5]]}}}],["_builddomainsepar",{"_index":1880,"t":{"94":{"position":[[40151,23]]}}}],["_builddomainseparator();\\\\n",{"_index":1876,"t":{"94":{"position":[[39764,27],[40101,27]]}}}],["_cachedchainid",{"_index":1873,"t":{"94":{"position":[[39704,14],[40027,15]]}}}],["_cachedchainid;\\\\n",{"_index":1845,"t":{"94":{"position":[[38578,18]]}}}],["_cacheddomainsepar",{"_index":1875,"t":{"94":{"position":[[39739,22]]}}}],["_cacheddomainseparator;\\\\n",{"_index":1844,"t":{"94":{"position":[[38525,26],[40055,26]]}}}],["_cachedthi",{"_index":1877,"t":{"94":{"position":[[39792,11],[39995,11]]}}}],["_cachedthis;\\\\n\\\\n",{"_index":1846,"t":{"94":{"position":[[38623,18]]}}}],["_calloptionalreturn",{"_index":1532,"t":{"94":{"position":[[22118,21]]}}}],["_calloptionalreturn(ierc20",{"_index":1512,"t":{"94":{"position":[[21141,26]]}}}],["_calloptionalreturn(token",{"_index":1473,"t":{"94":{"position":[[18604,26],[19009,26],[20632,26],[20708,26]]}}}],["_calloptionalreturnbool(ierc20",{"_index":1535,"t":{"94":{"position":[[22219,30]]}}}],["_calloptionalreturnbool(token",{"_index":1498,"t":{"94":{"position":[[20579,32]]}}}],["_domainseparatorv4",{"_index":1803,"t":{"94":{"position":[[37032,22],[37850,20],[39916,20]]}}}],["_domainseparatorv4();\\\\n",{"_index":2594,"t":{"94":{"position":[[78469,24]]}}}],["_eip712nam",{"_index":1914,"t":{"94":{"position":[[41841,13]]}}}],["_eip712name(),\\\\n",{"_index":1903,"t":{"94":{"position":[[41406,17]]}}}],["_eip712vers",{"_index":1916,"t":{"94":{"position":[[42276,16]]}}}],["_eip712version(),\\\\n",{"_index":1904,"t":{"94":{"position":[[41424,20]]}}}],["_getimplement",{"_index":2350,"t":{"94":{"position":[[66956,20]]}}}],["_hashednam",{"_index":1869,"t":{"94":{"position":[[39613,11],[40250,12]]}}}],["_hashedname;\\\\n",{"_index":1847,"t":{"94":{"position":[[38668,15]]}}}],["_hashedvers",{"_index":1871,"t":{"94":{"position":[[39654,14],[40263,15]]}}}],["_hashedversion;\\\\n\\\\n",{"_index":1848,"t":{"94":{"position":[[38710,21]]}}}],["_hashtypeddatav4(bytes32",{"_index":1893,"t":{"94":{"position":[[40915,24]]}}}],["_hashtypeddatav4(keccak256(abi.encode(\\\\n",{"_index":1886,"t":{"94":{"position":[[40676,41]]}}}],["_hashtypeddatav4(structhash);\\\\n\\\\n",{"_index":2587,"t":{"94":{"position":[[78105,35]]}}}],["_hashtypeddatav4}).\\\\n",{"_index":1809,"t":{"94":{"position":[[37204,24]]}}}],["_implementation_slot",{"_index":2348,"t":{"94":{"position":[[66846,20]]}}}],["_must_",{"_index":1695,"t":{"94":{"position":[[30241,6],[31859,6]]}}}],["_name",{"_index":1865,"t":{"94":{"position":[[39488,5],[41633,5],[62964,5]]}}}],["_name.tostringwithfallback(_namefallback);\\\\n",{"_index":1915,"t":{"94":{"position":[[41905,45],[63112,45]]}}}],["_name;\\\\n",{"_index":1849,"t":{"94":{"position":[[38762,9],[62865,9]]}}}],["_namefallback;\\\\n",{"_index":1851,"t":{"94":{"position":[[38830,17],[62892,17]]}}}],["_namestr",{"_index":2492,"t":{"94":{"position":[[74223,11]]}}}],["_namestring;\\\\n",{"_index":2461,"t":{"94":{"position":[[73531,15],[78574,15]]}}}],["_nonces;\\\\n\\\\n",{"_index":2242,"t":{"94":{"position":[[60928,14]]}}}],["_nonces[owner]++;\\\\n",{"_index":2251,"t":{"94":{"position":[[61548,20]]}}}],["_nonces[owner];\\\\n",{"_index":2244,"t":{"94":{"position":[[61093,18]]}}}],["_on",{"_index":2550,"t":{"94":{"position":[[76764,4]]}}}],["_on;\\\\n",{"_index":2554,"t":{"94":{"position":[[76886,7]]}}}],["_owner",{"_index":2591,"t":{"94":{"position":[[78289,7]]}}}],["_revert(byt",{"_index":1647,"t":{"94":{"position":[[28253,13]]}}}],["_revert(returndata);\\\\n",{"_index":1635,"t":{"94":{"position":[[27435,23],[28072,23]]}}}],["_setimplementation(address",{"_index":2352,"t":{"94":{"position":[[67105,26]]}}}],["_throwerror(error",{"_index":1731,"t":{"94":{"position":[[32414,18],[33386,18],[35298,18]]}}}],["_throwerror(recovererror",{"_index":1783,"t":{"94":{"position":[[35491,24]]}}}],["_usecheckednonce(address",{"_index":2254,"t":{"94":{"position":[[61691,24]]}}}],["_usenonc",{"_index":2252,"t":{"94":{"position":[[61604,11]]}}}],["_usenonce(address",{"_index":2246,"t":{"94":{"position":[[61228,17]]}}}],["_usenonce(approv",{"_index":2585,"t":{"94":{"position":[[78051,20]]}}}],["_usenonce(owner);\\\\n",{"_index":2255,"t":{"94":{"position":[[61778,20]]}}}],["_version",{"_index":1867,"t":{"94":{"position":[[39546,8],[42065,8]]}}}],["_version.tostringwithfallback(_versionfallback);\\\\n",{"_index":1917,"t":{"94":{"position":[[42343,51]]}}}],["_version;\\\\n",{"_index":1850,"t":{"94":{"position":[[38802,12]]}}}],["_versionfallback;\\\\n\\\\n",{"_index":1852,"t":{"94":{"position":[[38863,23]]}}}],["a\\\\n",{"_index":1591,"t":{"94":{"position":[[24715,4],[25047,4],[62665,4]]}}}],["aa",{"_index":2893,"t":{"169":{"position":[[262,2]]}}}],["aaoption",{"_index":2946,"t":{"177":{"position":[[921,10],[3243,10]]}}}],["abi",{"_index":1205,"t":{"92":{"position":[[52,3]]},"94":{"position":[[429,6]]}}}],["abi.decode(returndata",{"_index":1528,"t":{"94":{"position":[[21627,23],[22693,22]]}}}],["abi.encod",{"_index":1510,"t":{"94":{"position":[[21087,10],[22051,10],[36938,12]]}}}],["abi.encodecall(token.approv",{"_index":1496,"t":{"94":{"position":[[20521,29],[20659,29]]}}}],["abi.encodecall(token.transf",{"_index":1474,"t":{"94":{"position":[[18631,30]]}}}],["abi.encodecall(token.transferfrom",{"_index":1478,"t":{"94":{"position":[[19036,34]]}}}],["abil",{"_index":3247,"t":{"250":{"position":[[433,7]]},"293":{"position":[[173,8]]},"295":{"position":[[85,8]]}}}],["abov",{"_index":468,"t":{"2":{"position":[[9345,5]]},"23":{"position":[[53,6]]},"25":{"position":[[260,6]]},"98":{"position":[[352,5]]},"102":{"position":[[253,5]]},"106":{"position":[[478,5]]},"177":{"position":[[2015,6]]},"183":{"position":[[362,5]]},"187":{"position":[[12,5]]},"202":{"position":[[421,5]]},"207":{"position":[[478,5]]}}}],["above.\\\\n",{"_index":1367,"t":{"94":{"position":[[13558,9]]}}}],["abreast",{"_index":3183,"t":{"232":{"position":[[382,7]]}}}],["abs(int256",{"_index":2230,"t":{"94":{"position":[[60223,10]]}}}],["absolut",{"_index":2229,"t":{"94":{"position":[[60162,8]]}}}],["abstract",{"_index":382,"t":{"2":{"position":[[6835,10]]},"169":{"position":[[52,11]]}}}],["accept",{"_index":714,"t":{"23":{"position":[[208,10]]}}}],["accept\\\\n",{"_index":1772,"t":{"94":{"position":[[34487,9]]}}}],["access",{"_index":467,"t":{"2":{"position":[[9276,6],[11455,6]]},"54":{"position":[[643,6]]},"94":{"position":[[37966,9]]},"143":{"position":[[0,6]]},"145":{"position":[[0,6]]},"177":{"position":[[1763,6]]},"198":{"position":[[64,9],[194,6]]},"209":{"position":[[455,6]]},"262":{"position":[[823,6]]},"270":{"position":[[622,6]]}}}],["accommod",{"_index":3273,"t":{"265":{"position":[[560,11]]}}}],["accompani",{"_index":811,"t":{"37":{"position":[[331,11]]}}}],["accord",{"_index":1126,"t":{"85":{"position":[[180,9]]},"87":{"position":[[381,9]]},"89":{"position":[[53,9]]},"94":{"position":[[35429,9]]},"198":{"position":[[217,9]]},"230":{"position":[[0,9]]}}}],["account",{"_index":404,"t":{"2":{"position":[[7286,8]]},"66":{"position":[[27,8],[494,10],[590,10]]},"87":{"position":[[535,9],[567,9],[642,9],[674,9]]},"94":{"position":[[11047,8],[11109,7],[14703,7],[15329,8],[15442,7],[23105,7],[60758,9],[60846,8],[60900,7],[61305,8]]},"169":{"position":[[44,7],[117,8],[163,8],[350,9],[525,7],[584,8],[604,7]]},"173":{"position":[[351,8]]},"177":{"position":[[988,7],[1240,7],[1796,8]]},"181":{"position":[[353,7],[508,7]]},"185":{"position":[[184,7],[1455,7],[2096,8]]},"187":{"position":[[234,8]]},"200":{"position":[[65,7]]},"209":{"position":[[712,9],[1276,7],[3475,9],[3618,7]]},"303":{"position":[[881,8]]}}}],["account'",{"_index":1286,"t":{"94":{"position":[[10953,9]]}}}],["account);\\\\n\\\\n",{"_index":1547,"t":{"94":{"position":[[23203,15]]}}}],["account`.\\\\n",{"_index":1407,"t":{"94":{"position":[[15282,13]]}}}],["accountcontract",{"_index":2947,"t":{"177":{"position":[[947,17],[3256,17]]}}}],["accountqueu",{"_index":2809,"t":{"161":{"position":[[353,12]]}}}],["accounts.html#sign[web3.js]\\\\n",{"_index":1707,"t":{"94":{"position":[[30714,30]]}}}],["accountslot",{"_index":2806,"t":{"161":{"position":[[315,12]]}}}],["achiev",{"_index":434,"t":{"2":{"position":[[7942,7],[8420,9]]},"25":{"position":[[41,8]]},"169":{"position":[[209,7],[372,8]]},"228":{"position":[[426,7],[988,12]]},"293":{"position":[[143,9]]},"295":{"position":[[184,9]]},"303":{"position":[[1520,7],[1974,9]]}}}],["act",{"_index":733,"t":{"27":{"position":[[11,4]]},"31":{"position":[[38,3]]},"173":{"position":[[29,4]]},"245":{"position":[[96,4]]}}}],["action",{"_index":2627,"t":{"100":{"position":[[268,7]]},"102":{"position":[[279,7]]},"155":{"position":[[306,7]]}}}],["action=bal",{"_index":939,"t":{"64":{"position":[[93,15]]}}}],["action=balancemulti",{"_index":943,"t":{"66":{"position":[[111,20]]}}}],["action=getabi",{"_index":1207,"t":{"92":{"position":[[138,14]]}}}],["action=getblocknobytim",{"_index":612,"t":{"7":{"position":[[167,24]]}}}],["action=getblockreward",{"_index":582,"t":{"5":{"position":[[160,22]]}}}],["action=getcontractcr",{"_index":2598,"t":{"96":{"position":[[50,27]]}}}],["action=getlog",{"_index":621,"t":{"10":{"position":[[126,15]]}}}],["action=getminedblock",{"_index":1094,"t":{"80":{"position":[[101,22],[370,22]]}}}],["action=getsourcecod",{"_index":1227,"t":{"94":{"position":[[104,21]]}}}],["action=gettxreceiptstatu",{"_index":687,"t":{"16":{"position":[[166,26]]}}}],["action=log",{"_index":650,"t":{"12":{"position":[[122,12]]}}}],["action=tokenbal",{"_index":3380,"t":{"308":{"position":[[111,20]]}}}],["action=tokennfttx",{"_index":1074,"t":{"78":{"position":[[279,18],[483,18],[681,18]]}}}],["action=tokensuppli",{"_index":3376,"t":{"306":{"position":[[109,19]]}}}],["action=tokentx",{"_index":1039,"t":{"76":{"position":[[270,15],[471,15],[666,15]]}}}],["action=txlist",{"_index":959,"t":{"68":{"position":[[314,14],[600,14]]}}}],["action=txlistintern",{"_index":997,"t":{"70":{"position":[[323,22],[616,22]]},"72":{"position":[[187,22]]},"74":{"position":[[213,22]]}}}],["activ",{"_index":2745,"t":{"141":{"position":[[153,8]]},"232":{"position":[[298,6]]},"254":{"position":[[55,8]]},"289":{"position":[[231,9]]}}}],["actual",{"_index":527,"t":{"2":{"position":[[10867,11]]},"94":{"position":[[65609,6],[65640,6]]},"216":{"position":[[306,6]]}}}],["ad",{"_index":2206,"t":{"94":{"position":[[57942,6]]},"275":{"position":[[114,5]]}}}],["adapt",{"_index":840,"t":{"39":{"position":[[1173,10]]},"235":{"position":[[73,7]]},"237":{"position":[[98,8],[128,7]]},"303":{"position":[[354,5]]}}}],["adapters/commits/d67f57641b931a04afe05affe4c52605b6544e26/projects/macaron",{"_index":3186,"t":{"235":{"position":[[149,74]]},"239":{"position":[[63,74]]}}}],["adapters/pull/10229/fil",{"_index":3198,"t":{"237":{"position":[[769,25]]}}}],["add",{"_index":1123,"t":{"85":{"position":[[31,3]]},"94":{"position":[[10896,4],[17833,3],[34472,3]]},"163":{"position":[[352,4],[805,4]]},"175":{"position":[[418,3]]},"193":{"position":[[823,4]]},"209":{"position":[[1938,3],[2008,3],[2111,3],[2201,3],[2272,3],[2514,3],[3230,3]]},"235":{"position":[[69,3]]},"237":{"position":[[665,3],[696,3]]}}}],["add(32",{"_index":2399,"t":{"94":{"position":[[70748,7]]}}}],["add(buff",{"_index":2398,"t":{"94":{"position":[[70736,11]]}}}],["add(div(sub(0",{"_index":2100,"t":{"94":{"position":[[51792,14]]}}}],["add(sig",{"_index":2567,"t":{"94":{"position":[[77321,8]]}}}],["addit",{"_index":212,"t":{"2":{"position":[[3102,10],[6009,10]]},"94":{"position":[[11436,10],[29859,10],[46731,8],[49321,9]]}}}],["addition",{"_index":1338,"t":{"94":{"position":[[12543,13],[62651,13]]},"254":{"position":[[273,13]]},"303":{"position":[[462,13]]}}}],["addr",{"_index":2431,"t":{"94":{"position":[[72269,5]]}}}],["address",{"_index":151,"t":{"2":{"position":[[2053,9],[4946,11],[6546,7],[11151,10]]},"10":{"position":[[31,8],[321,7],[357,7],[587,10]]},"12":{"position":[[31,8],[950,7],[986,7],[1391,10]]},"33":{"position":[[571,8]]},"54":{"position":[[203,8]]},"64":{"position":[[35,8],[254,7],[290,7]]},"66":{"position":[[51,10],[320,7],[356,7],[405,9]]},"68":{"position":[[49,8],[822,7],[858,7]]},"70":{"position":[[58,8],[845,7],[881,7]]},"76":{"position":[[52,8],[893,8],[914,7],[965,8],[995,7],[1038,7],[1089,7],[1110,7],[1186,7],[1222,7],[1306,7]]},"78":{"position":[[61,8],[912,8],[933,7],[985,8],[1015,7],[1059,7],[1110,7],[1131,7],[1207,7],[1243,7],[1327,7]]},"80":{"position":[[43,8]]},"89":{"position":[[989,9]]},"92":{"position":[[298,7],[319,7]]},"94":{"position":[[271,7],[292,7],[10383,7],[13594,7],[13612,7],[14831,7],[15057,7],[15948,7],[17048,7],[17458,9],[18019,7],[18563,7],[18954,7],[18968,7],[19326,7],[19737,7],[20447,7],[21362,8],[21444,7],[22466,8],[23026,7],[23055,7],[23367,7],[25623,7],[25644,7],[26293,7],[26314,7],[26669,7],[26690,7],[27309,7],[29623,7],[29943,7],[30388,9],[30908,9],[31482,7],[31556,7],[32006,9],[32307,9],[32322,8],[32756,9],[33283,9],[33298,8],[33675,9],[34775,7],[35193,9],[35208,8],[37759,8],[38597,7],[40837,7],[41279,7],[45110,8],[60645,10],[66999,9],[67372,7],[72120,9],[73460,7],[73488,7],[73555,8],[73600,8],[73736,7],[74480,7],[74512,7],[75827,7],[77464,7],[77789,7],[77810,7],[78141,7]]},"100":{"position":[[369,7]]},"106":{"position":[[284,9],[316,9]]},"108":{"position":[[251,9],[283,9]]},"116":{"position":[[107,7],[173,7]]},"118":{"position":[[342,7],[386,7]]},"124":{"position":[[114,7],[180,7]]},"139":{"position":[[29,7]]},"141":{"position":[[34,9]]},"159":{"position":[[95,7]]},"167":{"position":[[559,7]]},"185":{"position":[[720,7]]},"207":{"position":[[284,9],[316,9]]},"209":{"position":[[251,9],[283,9]]},"228":{"position":[[37,7]]},"237":{"position":[[520,7],[599,7]]},"303":{"position":[[133,10]]},"306":{"position":[[311,7]]},"308":{"position":[[53,8],[378,7],[406,7],[442,7]]}}}],["address(0",{"_index":1683,"t":{"94":{"position":[[29725,10],[31362,12],[34636,12],[34835,11],[34859,12]]}}}],["address(0),\\\\\\\"approver_not_zero_address\\\\\\\");\\\\n",{"_index":2508,"t":{"94":{"position":[[74799,49]]}}}],["address(0),\\\\\\\"operator_should_not_zero_address\\\\\\\");\\\\n",{"_index":2552,"t":{"94":{"position":[[76810,56]]}}}],["address(0),\\\\\\\"owner_should_not_zero_address\\\\\\\");\\\\n",{"_index":2547,"t":{"94":{"position":[[76607,53]]}}}],["address(0),\\\\\\\"receiver_should_not_zero_address\\\\\\\");\\\\n",{"_index":2542,"t":{"94":{"position":[[76278,56]]}}}],["address(0)`.\\\\n",{"_index":1672,"t":{"94":{"position":[[29288,16]]}}}],["address(thi",{"_index":1323,"t":{"94":{"position":[[12043,14],[12225,14],[39977,14],[75131,14]]}}}],["address(this)));\\\\n",{"_index":1882,"t":{"94":{"position":[[40294,19]]}}}],["address(this),\\\\n",{"_index":1906,"t":{"94":{"position":[[41463,17]]}}}],["address(this).bal",{"_index":1586,"t":{"94":{"position":[[24418,22],[26017,22]]}}}],["address(this).balance,\\\\\\\"amountout_illegal\\\\\\\");\\\\n",{"_index":2512,"t":{"94":{"position":[[74967,52]]}}}],["address(this).balance,\\\\\\\"btc_not_enough\\\\\\\");\\\\n",{"_index":2540,"t":{"94":{"position":[[76208,49]]}}}],["address(this);\\\\n",{"_index":1878,"t":{"94":{"position":[[39806,17]]}}}],["address(token).call(data);\\\\n",{"_index":1539,"t":{"94":{"position":[[22618,29]]}}}],["address(token).code.length",{"_index":1540,"t":{"94":{"position":[[22728,26]]}}}],["address(token).functioncall(data);\\\\n",{"_index":1526,"t":{"94":{"position":[[21559,37]]}}}],["address.\\\\n",{"_index":1355,"t":{"94":{"position":[[13100,11],[29100,11],[60994,11]]}}}],["address;\\\\n\\\\n",{"_index":1462,"t":{"94":{"position":[[18031,14]]}}}],["address=0x039bac1779933ee52abf3eff25188c4d673931ac",{"_index":998,"t":{"70":{"position":[[346,51],[639,51]]}}}],["address=0x0fac0285011992215edb080f14a2cc6ab629360b",{"_index":1096,"t":{"80":{"position":[[142,51]]}}}],["address=0x42857b399adba34b75d6bedcacde75c7784e87c6",{"_index":622,"t":{"10":{"position":[[142,51]]}}}],["address=0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1",{"_index":651,"t":{"12":{"position":[[135,51]]}}}],["address=0x718e5b4f5b007bceb7ad6ce8c2629cea767fc4ec",{"_index":1040,"t":{"76":{"position":[[286,51],[742,51]]},"308":{"position":[[192,51]]}}}],["address=0xc9121e476155ebf0b794b7b351808af3787e727d",{"_index":1208,"t":{"92":{"position":[[153,51]]},"94":{"position":[[126,51]]}}}],["address=0xe7564c607c663e5784031229570cbd47290dd87f",{"_index":940,"t":{"64":{"position":[[109,51]]},"68":{"position":[[329,51],[615,51]]}}}],["address=0xe7564c607c663e5784031229570cbd47290dd87f,0xe01a40a0894970fc4c2b06f36f5eb94e73ea502d",{"_index":944,"t":{"66":{"position":[[132,94]]}}}],["address=0xfec8a6cfacbf3da3e0c9988d59542eb6a5d49184",{"_index":1075,"t":{"78":{"position":[[298,51],[760,51]]}}}],["address\\\\n",{"_index":1777,"t":{"94":{"position":[[34764,10]]}}}],["address_length",{"_index":2386,"t":{"94":{"position":[[70210,14]]}}}],["address_length);\\\\n",{"_index":2433,"t":{"94":{"position":[[72361,19]]}}}],["addressemptycode(address",{"_index":1550,"t":{"94":{"position":[[23300,24]]}}}],["addressemptycode(target);\\\\n",{"_index":1641,"t":{"94":{"position":[[27690,28]]}}}],["addressinsufficientbalance(address",{"_index":1546,"t":{"94":{"position":[[23168,34]]}}}],["addressinsufficientbalance(address(this));\\\\n",{"_index":1587,"t":{"94":{"position":[[24463,45],[26061,45]]}}}],["addressslot",{"_index":2357,"t":{"94":{"position":[[67355,11],[67664,13],[67786,12]]}}}],["adequ",{"_index":3274,"t":{"265":{"position":[[987,10]]}}}],["adjust",{"_index":763,"t":{"31":{"position":[[343,7]]},"85":{"position":[[161,6]]},"265":{"position":[[426,10]]}}}],["adopt",{"_index":85,"t":{"2":{"position":[[1004,8],[4274,8]]}}}],["advanc",{"_index":816,"t":{"39":{"position":[[66,11]]},"228":{"position":[[1034,12]]},"250":{"position":[[126,11]]}}}],["advis",{"_index":3277,"t":{"265":{"position":[[1098,7]]}}}],["advoc",{"_index":512,"t":{"2":{"position":[[10506,9]]}}}],["advocaci",{"_index":514,"t":{"2":{"position":[[10537,9]]}}}],["affect",{"_index":3286,"t":{"267":{"position":[[204,9]]}}}],["afford",{"_index":3238,"t":{"245":{"position":[[480,8]]}}}],["aforement",{"_index":221,"t":{"2":{"position":[[3238,14]]},"183":{"position":[[614,14]]}}}],["afterwards:\\\\n",{"_index":1432,"t":{"94":{"position":[[16518,14]]}}}],["against",{"_index":1813,"t":{"94":{"position":[[37382,7]]}}}],["agre",{"_index":773,"t":{"31":{"position":[[774,5]]}}}],["aim",{"_index":219,"t":{"2":{"position":[[3221,4],[4500,6],[5555,4],[5983,4]]},"226":{"position":[[205,4]]},"265":{"position":[[9,4]]},"281":{"position":[[312,3]]},"283":{"position":[[285,4]]},"295":{"position":[[19,3]]}}}],["ajax",{"_index":2623,"t":{"100":{"position":[[38,8]]},"102":{"position":[[40,8]]}}}],["alert('error",{"_index":2677,"t":{"102":{"position":[[650,15]]}}}],["algorithm",{"_index":1661,"t":{"94":{"position":[[28946,9]]}}}],["alice/mysubgraph",{"_index":3078,"t":{"202":{"position":[[78,19]]}}}],["align",{"_index":3272,"t":{"265":{"position":[[437,6]]}}}],["alik",{"_index":3234,"t":{"245":{"position":[[25,6]]}}}],["all.\\\\n",{"_index":1295,"t":{"94":{"position":[[11200,7]]}}}],["allow",{"_index":254,"t":{"2":{"position":[[3964,7],[5894,8],[11435,8]]},"39":{"position":[[1157,5]]},"54":{"position":[[217,6]]},"94":{"position":[[10770,8],[10969,9],[10992,11],[11386,10],[11533,9],[11764,5],[12416,6],[12798,9],[14904,9],[15739,7],[16057,9],[16234,9],[16328,9],[16472,9],[16809,9],[17908,6],[19149,9],[19548,9],[20148,9],[30031,6],[31649,6],[33728,6],[38047,5]]},"155":{"position":[[381,6]]},"167":{"position":[[601,6]]},"169":{"position":[[399,8]]},"212":{"position":[[230,5]]},"272":{"position":[[114,6]]},"283":{"position":[[117,8]]}}}],["allowance(address",{"_index":1420,"t":{"94":{"position":[[15923,17]]}}}],["allowance.\\\\n",{"_index":1402,"t":{"94":{"position":[[14999,13],[16878,13]]}}}],["along",{"_index":1113,"t":{"83":{"position":[[64,5]]},"112":{"position":[[62,5]]},"118":{"position":[[802,5]]}}}],["alreadi",{"_index":1637,"t":{"94":{"position":[[27584,7],[40345,7]]},"209":{"position":[[1510,7]]},"275":{"position":[[244,7]]}}}],["also\\\\n",{"_index":1335,"t":{"94":{"position":[[12492,7],[52331,7]]}}}],["alter",{"_index":334,"t":{"2":{"position":[[5755,5]]}}}],["altern",{"_index":2996,"t":{"183":{"position":[[291,14]]},"185":{"position":[[1490,14]]}}}],["although",{"_index":1940,"t":{"94":{"position":[[43595,8]]},"177":{"position":[[2657,8]]}}}],["alway",{"_index":339,"t":{"2":{"position":[[5882,6],[7096,6]]},"94":{"position":[[37883,6],[51421,6]]},"303":{"position":[[691,6]]}}}],["ambigu",{"_index":1330,"t":{"94":{"position":[[12346,9]]}}}],["amd64",{"_index":2855,"t":{"163":{"position":[[132,5],[453,5]]}}}],["amount",{"_index":760,"t":{"31":{"position":[[266,6]]},"33":{"position":[[130,6],[232,7]]},"42":{"position":[[604,6]]},"94":{"position":[[15407,6],[16033,6],[16757,6],[18381,6],[18719,6],[23519,8],[24393,7],[24443,7],[75853,7],[76085,8],[76158,7]]},"116":{"position":[[322,6]]},"118":{"position":[[739,6]]},"124":{"position":[[329,6]]},"306":{"position":[[20,6]]}}}],["amount);\\\\n",{"_index":2476,"t":{"94":{"position":[[73879,11],[76034,11],[76498,11]]}}}],["amountin",{"_index":2470,"t":{"94":{"position":[[73766,9],[74548,9],[75146,9],[75293,9],[75605,9],[77843,9],[78034,9]]}}}],["amountin,uint256",{"_index":2455,"t":{"94":{"position":[[73393,16]]}}}],["amountout",{"_index":2471,"t":{"94":{"position":[[73784,10],[74614,10],[74954,9],[75615,10]]}}}],["amountout}(\\\\\\\"\\\\\\\");\\\\n",{"_index":2527,"t":{"94":{"position":[[75496,24]]}}}],["amount}(\\\\\\\"\\\\\\\");\\\\n",{"_index":1589,"t":{"94":{"position":[[24558,21],[76398,21]]}}}],["an\\\\n",{"_index":1629,"t":{"94":{"position":[[27233,5]]}}}],["and|or",{"_index":665,"t":{"12":{"position":[[591,7],[638,7],[684,7],[731,7],[777,7],[824,7]]}}}],["ankr",{"_index":2692,"t":{"110":{"position":[[27,4]]},"260":{"position":[[188,4]]}}}],["anoth",{"_index":53,"t":{"2":{"position":[[615,7]]},"94":{"position":[[14728,7]]},"177":{"position":[[1380,7]]},"209":{"position":[[2186,7]]},"237":{"position":[[669,7]]}}}],["anyon",{"_index":1310,"t":{"94":{"position":[[11660,7]]}}}],["apart",{"_index":3167,"t":{"228":{"position":[[837,6]]}}}],["api",{"_index":876,"t":{"42":{"position":[[770,4]]},"83":{"position":[[110,3]]},"87":{"position":[[719,3],[899,3]]},"100":{"position":[[139,3],[212,3]]},"112":{"position":[[31,3]]},"198":{"position":[[120,4]]},"200":{"position":[[89,3],[176,3],[195,3]]},"202":{"position":[[389,3]]},"237":{"position":[[389,4]]},"265":{"position":[[1190,5]]}}}],["api.btrscan.com/scan/api",{"_index":2624,"t":{"100":{"position":[[88,29]]}}}],["apikey",{"_index":1152,"t":{"87":{"position":[[703,7]]},"100":{"position":[[174,7]]},"102":{"position":[[120,7]]},"202":{"position":[[362,8]]}}}],["apikey').v",{"_index":2625,"t":{"100":{"position":[[182,19]]},"102":{"position":[[128,19]]}}}],["apiurl",{"_index":1158,"t":{"87":{"position":[[1081,7],[1229,7]]}}}],["app",{"_index":2909,"t":{"171":{"position":[[261,3],[610,3]]},"173":{"position":[[553,3]]},"175":{"position":[[82,5]]},"177":{"position":[[2913,3],[2922,8],[3512,4]]},"181":{"position":[[864,3]]},"183":{"position":[[872,3],[1413,3]]},"185":{"position":[[2061,3]]}}}],["app.css",{"_index":2999,"t":{"183":{"position":[[853,12],[1394,12]]},"185":{"position":[[2042,12]]}}}],["appeal",{"_index":3296,"t":{"275":{"position":[[23,9]]}}}],["appear",{"_index":503,"t":{"2":{"position":[[10263,7]]},"167":{"position":[[484,7]]}}}],["appendix",{"_index":1752,"t":{"94":{"position":[[33836,8]]}}}],["appid",{"_index":2945,"t":{"177":{"position":[[853,6],[3203,6]]}}}],["appli",{"_index":1351,"t":{"94":{"position":[[12986,5]]},"200":{"position":[[163,5],[185,5]]}}}],["applic",{"_index":46,"t":{"2":{"position":[[516,13],[1063,12],[1337,13],[1616,12],[1784,12],[6281,12],[8912,12],[9133,14],[9302,12],[11374,12],[11723,13]]},"54":{"position":[[583,13]]},"92":{"position":[[21,11]]},"100":{"position":[[988,11],[1090,11],[1203,10],[1379,11]]},"167":{"position":[[57,12]]},"169":{"position":[[754,12]]},"171":{"position":[[145,11],[270,12],[318,11],[533,11],[625,11]]},"173":{"position":[[71,12],[390,12],[444,11],[497,11],[637,11]]},"175":{"position":[[24,11]]},"177":{"position":[[219,11],[1076,11],[3656,11]]},"179":{"position":[[58,11]]},"187":{"position":[[373,11],[562,12]]},"189":{"position":[[52,12]]},"212":{"position":[[299,12]]},"250":{"position":[[220,12],[466,12]]},"254":{"position":[[169,12]]},"270":{"position":[[357,12]]},"272":{"position":[[190,11]]},"275":{"position":[[356,11]]},"277":{"position":[[67,13]]},"291":{"position":[[388,12],[423,12]]}}}],["approach",{"_index":397,"t":{"2":{"position":[[7217,8],[7449,8]]},"39":{"position":[[132,8]]},"183":{"position":[[984,8]]},"277":{"position":[[301,8]]},"303":{"position":[[812,8],[1042,8]]}}}],["approv",{"_index":57,"t":{"2":{"position":[[678,8]]},"68":{"position":[[1936,9]]},"94":{"position":[[10779,9],[11082,9],[12931,8],[13017,10],[14969,10],[15865,9],[16620,10],[18771,8],[73726,9],[74496,9],[78010,9]]},"218":{"position":[[166,7]]}}}],["approval(address",{"_index":1403,"t":{"94":{"position":[[15025,16]]}}}],["approval.\\\\n",{"_index":1348,"t":{"94":{"position":[[12876,12]]}}}],["approval\\\\n",{"_index":1492,"t":{"94":{"position":[[20317,11]]}}}],["approvalcal",{"_index":1495,"t":{"94":{"position":[[20506,12],[20612,14]]}}}],["approvalcall);\\\\n",{"_index":1500,"t":{"94":{"position":[[20735,17]]}}}],["approve(address",{"_index":1435,"t":{"94":{"position":[[16656,15]]}}}],["approver,\\\\\\\"signer_not_signture_owner\\\\\\\");\\\\n",{"_index":2590,"t":{"94":{"position":[[78209,47]]}}}],["approver,\\\\n",{"_index":2582,"t":{"94":{"position":[[77797,12]]}}}],["approver.call{valu",{"_index":2526,"t":{"94":{"position":[[75475,20]]}}}],["approxim",{"_index":2176,"t":{"94":{"position":[[54491,13]]}}}],["april",{"_index":3177,"t":{"232":{"position":[[50,6]]},"248":{"position":[[57,6]]}}}],["arbitrari",{"_index":1698,"t":{"94":{"position":[[30378,9],[31996,9],[44339,9],[45029,9],[62470,9]]}}}],["architectur",{"_index":691,"t":{"19":{"position":[[40,12]]},"21":{"position":[[153,12]]},"39":{"position":[[844,13]]},"228":{"position":[[1160,13],[1213,12]]},"303":{"position":[[258,13]]}}}],["archiv",{"_index":2863,"t":{"163":{"position":[[338,7],[384,7],[647,7]]},"193":{"position":[[810,7],[858,7]]}}}],["arg",{"_index":1183,"t":{"89":{"position":[[1115,4],[1789,4]]}}}],["arg0",{"_index":1186,"t":{"89":{"position":[[1237,7]]}}}],["arg1",{"_index":1187,"t":{"89":{"position":[[1245,6]]}}}],["argent",{"_index":1339,"t":{"94":{"position":[[12599,6]]}}}],["argument",{"_index":1167,"t":{"89":{"position":[[499,9],[919,10],[949,9],[1578,10],[1700,9]]},"94":{"position":[[35454,8]]}}}],["arguments.\\\\n",{"_index":1360,"t":{"94":{"position":[[13277,13]]}}}],["arguments.j",{"_index":1184,"t":{"89":{"position":[[1120,13],[1140,12],[1200,12],[1269,12],[1501,12],[1674,12],[1794,12]]}}}],["arithmet",{"_index":2124,"t":{"94":{"position":[[52359,11]]}}}],["arithmetic.\\\\n",{"_index":2077,"t":{"94":{"position":[[50645,14]]}}}],["ark",{"_index":67,"t":{"2":{"position":[[807,3]]}}}],["around",{"_index":1448,"t":{"94":{"position":[[17559,6]]}}}],["array",{"_index":2704,"t":{"118":{"position":[[268,5],[862,5]]},"177":{"position":[[2159,5]]}}}],["arriv",{"_index":274,"t":{"2":{"position":[[4216,7]]}}}],["asc",{"_index":973,"t":{"68":{"position":[[1165,3]]},"70":{"position":[[1188,3]]},"74":{"position":[[672,3]]},"76":{"position":[[1617,3]]},"78":{"position":[[1638,3]]}}}],["ascend",{"_index":974,"t":{"68":{"position":[[1180,9]]},"70":{"position":[[1203,9]]},"74":{"position":[[687,9]]},"76":{"position":[[1632,9]]},"78":{"position":[[1653,9]]}}}],["ascii",{"_index":2391,"t":{"94":{"position":[[70433,5],[71027,5],[71298,5],[71553,5],[72183,5]]}}}],["aspect",{"_index":1313,"t":{"94":{"position":[[11815,8]]},"262":{"position":[[64,7]]}}}],["aspir",{"_index":452,"t":{"2":{"position":[[8738,7]]}}}],["assembl",{"_index":1652,"t":{"94":{"position":[[28510,8],[31170,8],[43865,8],[45959,8],[50228,8],[51080,8],[51540,8],[64235,8],[67853,8],[68112,8],[68371,8],[68630,8],[68886,8],[69165,8],[69424,8],[69698,8],[70715,8],[70839,8],[77245,8]]}}}],["assembly.\\\\n",{"_index":1717,"t":{"94":{"position":[[31119,12],[66579,12]]}}}],["assembly\\\\n",{"_index":1651,"t":{"94":{"position":[[28460,11],[28498,11],[31158,11],[43853,11],[45947,11],[64223,11],[67841,11],[68100,11],[68359,11],[68618,11],[68874,11],[69153,11],[69412,11],[69686,11],[70703,11],[70827,11]]}}}],["assert",{"_index":1523,"t":{"94":{"position":[[21484,7]]}}}],["asset",{"_index":352,"t":{"2":{"position":[[6099,5],[6923,6],[7085,6],[7177,5],[7424,7],[7510,7],[7628,7],[7922,6],[7977,7],[9828,5]]},"21":{"position":[[218,5],[703,6],[848,5]]},"27":{"position":[[107,6],[211,6]]},"29":{"position":[[13,5],[260,5],[427,5]]},"31":{"position":[[507,5]]},"33":{"position":[[84,6],[434,6]]},"35":{"position":[[175,6],[783,6]]},"37":{"position":[[61,5],[616,5]]},"46":{"position":[[134,5]]},"48":{"position":[[185,6]]},"50":{"position":[[135,7]]},"54":{"position":[[124,6]]},"226":{"position":[[299,7]]},"291":{"position":[[84,6],[154,7]]},"303":{"position":[[190,5],[680,6],[772,5],[1017,7],[1103,7],[1205,7],[1497,6],[1555,7],[2299,5],[2320,5]]}}}],["assign",{"_index":2900,"t":{"169":{"position":[[562,8]]}}}],["associ",{"_index":2956,"t":{"177":{"position":[[1779,10]]},"185":{"position":[[167,10],[1438,10]]}}}],["assum",{"_index":1300,"t":{"94":{"position":[[11418,7],[17769,7],[18492,7],[18879,7],[19246,7],[19657,7],[20245,7]]},"209":{"position":[[1497,8]]}}}],["assur",{"_index":246,"t":{"2":{"position":[[3774,9]]}}}],["async",{"_index":3010,"t":{"185":{"position":[[592,5],[2148,5]]},"237":{"position":[[259,5]]}}}],["at\\\\n",{"_index":2184,"t":{"94":{"position":[[54808,5]]}}}],["atop",{"_index":332,"t":{"2":{"position":[[5661,4]]}}}],["attack",{"_index":1814,"t":{"94":{"position":[[37397,7]]}}}],["attain",{"_index":766,"t":{"31":{"position":[[551,9]]}}}],["attract",{"_index":828,"t":{"39":{"position":[[471,7]]},"277":{"position":[[133,10]]}}}],["authent",{"_index":2901,"t":{"169":{"position":[[633,13]]},"173":{"position":[[146,12]]},"185":{"position":[[1421,12]]}}}],["authrpc.port",{"_index":2860,"t":{"163":{"position":[[261,12],[582,12]]}}}],["automat",{"_index":3101,"t":{"209":{"position":[[1303,13]]}}}],["autonom",{"_index":777,"t":{"33":{"position":[[54,10]]},"303":{"position":[[2288,10]]}}}],["avail",{"_index":446,"t":{"2":{"position":[[8278,10],[11337,9]]},"7":{"position":[[408,9]]},"46":{"position":[[419,9]]},"94":{"position":[[23568,9]]},"155":{"position":[[14,9]]},"270":{"position":[[427,9]]},"303":{"position":[[1855,10]]}}}],["avalon",{"_index":3214,"t":{"243":{"position":[[285,6]]}}}],["averag",{"_index":2024,"t":{"94":{"position":[[48672,7],[59811,7]]},"100":{"position":[[1776,7]]}}}],["average(int256",{"_index":2222,"t":{"94":{"position":[[59918,14]]}}}],["average(uint256",{"_index":2026,"t":{"94":{"position":[[48755,15]]}}}],["avoid",{"_index":2339,"t":{"94":{"position":[[66424,5]]}}}],["await",{"_index":3016,"t":{"185":{"position":[[963,5],[1015,5],[2213,5]]}}}],["away",{"_index":7,"t":{"2":{"position":[[79,6]]},"94":{"position":[[46679,4]]}}}],["b",{"_index":1195,"t":{"89":{"position":[[1479,2]]},"94":{"position":[[46833,2],[47114,2],[47178,2],[47380,2],[47546,3],[47712,2],[47906,2],[47970,2],[48184,2],[48248,2],[48408,2],[48459,1],[48573,2],[48624,1],[48782,2],[48830,2],[48866,2],[48876,2],[49135,2],[49178,2],[49294,1],[49303,1],[49382,1],[59544,2],[59594,1],[59713,2],[59763,1],[59943,2],[60051,2],[60062,2],[72501,2]]}}}],["b));\\\\n",{"_index":2228,"t":{"94":{"position":[[60120,7]]}}}],["b);\\\\n",{"_index":2010,"t":{"94":{"position":[[47226,6],[48019,6],[48297,6]]}}}],["b;\\\\n",{"_index":2006,"t":{"94":{"position":[[46910,5],[47693,5],[48467,5],[48632,5],[49272,5],[59602,5],[59771,5]]}}}],["back",{"_index":292,"t":{"2":{"position":[[4790,6]]},"94":{"position":[[27195,4],[63929,4]]},"185":{"position":[[2181,4]]},"277":{"position":[[81,6]]}}}],["backend",{"_index":820,"t":{"39":{"position":[[228,7],[865,7]]}}}],["balanc",{"_index":936,"t":{"64":{"position":[[16,7],[307,7]]},"66":{"position":[[12,7],[551,10],[647,10]]},"68":{"position":[[875,7]]},"70":{"position":[[898,7]]},"76":{"position":[[1239,7],[1327,7]]},"78":{"position":[[1260,7],[1348,7]]},"94":{"position":[[23090,7],[25803,7]]},"177":{"position":[[1932,9]]},"306":{"position":[[504,7]]},"308":{"position":[[20,7],[469,7]]}}}],["balance,separ",{"_index":945,"t":{"66":{"position":[[373,17]]}}}],["balanceof(address",{"_index":1408,"t":{"94":{"position":[[15311,17]]}}}],["base",{"_index":191,"t":{"2":{"position":[[2704,4],[3866,4],[4130,5],[5678,4],[7295,5],[8305,4],[9602,5],[9668,5],[10912,5]]},"19":{"position":[[53,5]]},"25":{"position":[[70,5]]},"29":{"position":[[139,5]]},"35":{"position":[[297,5]]},"39":{"position":[[728,5]]},"94":{"position":[[55646,4],[56393,4],[56759,4],[57484,4],[57854,4],[58536,4]]},"175":{"position":[[18,5]]},"177":{"position":[[58,5]]},"187":{"position":[[385,5]]},"226":{"position":[[171,5]]},"250":{"position":[[460,5]]},"267":{"position":[[45,5]]},"295":{"position":[[56,5]]},"303":{"position":[[890,5],[1882,4]]}}}],["bash",{"_index":2852,"t":{"163":{"position":[[92,4],[413,4]]}}}],["batch",{"_index":946,"t":{"66":{"position":[[427,5]]}}}],["bb",{"_index":2263,"t":{"94":{"position":[[62256,2]]}}}],["be",{"_index":393,"t":{"2":{"position":[[7157,5]]},"33":{"position":[[518,5]]},"94":{"position":[[13978,5],[47501,5]]},"209":{"position":[[1393,5]]},"256":{"position":[[15,5]]},"303":{"position":[[752,5]]}}}],["be\\\\n",{"_index":1303,"t":{"94":{"position":[[11485,5],[11843,5],[13797,5],[15731,5],[17780,5],[24070,5],[61394,5]]}}}],["becom",{"_index":423,"t":{"2":{"position":[[7686,6],[12258,6],[12457,6]]},"94":{"position":[[51768,7]]},"281":{"position":[[416,7]]},"303":{"position":[[1262,6]]}}}],["bedrock",{"_index":353,"t":{"2":{"position":[[6129,7]]}}}],["befor",{"_index":611,"t":{"7":{"position":[[100,8],[458,6]]},"42":{"position":[[755,6]]},"94":{"position":[[20349,6]]},"151":{"position":[[0,6]]},"171":{"position":[[283,6],[416,6]]},"200":{"position":[[0,6]]},"265":{"position":[[1155,6]]}}}],["begin",{"_index":756,"t":{"31":{"position":[[185,7]]}}}],["behalf",{"_index":1415,"t":{"94":{"position":[[15759,6]]}}}],["behavior",{"_index":729,"t":{"25":{"position":[[525,8]]},"94":{"position":[[49214,8]]}}}],["behind",{"_index":534,"t":{"2":{"position":[[11225,6]]}}}],["below",{"_index":2962,"t":{"177":{"position":[[2325,5]]},"181":{"position":[[704,6]]},"183":{"position":[[250,5],[692,6],[1236,6]]},"185":{"position":[[529,5],[1845,5]]},"245":{"position":[[80,6]]}}}],["belowtopic0_1_opr",{"_index":664,"t":{"12":{"position":[[573,17]]}}}],["benefit",{"_index":204,"t":{"2":{"position":[[3003,8]]},"39":{"position":[[772,10]]},"48":{"position":[[326,8]]},"94":{"position":[[47527,7]]},"254":{"position":[[246,7]]},"275":{"position":[[120,7]]},"277":{"position":[[426,8]]},"291":{"position":[[495,8]]}}}],["best",{"_index":3248,"t":{"250":{"position":[[515,4]]}}}],["better",{"_index":3368,"t":{"303":{"position":[[1400,6]]}}}],["between",{"_index":240,"t":{"2":{"position":[[3610,7],[6568,7]]},"12":{"position":[[599,7],[646,7],[692,7],[739,7],[785,7],[832,7]]},"21":{"position":[[790,7]]},"25":{"position":[[97,7]]},"27":{"position":[[114,7]]},"46":{"position":[[347,7]]},"48":{"position":[[192,7],[276,7]]},"283":{"position":[[327,7]]},"291":{"position":[[91,7]]}}}],["bewar",{"_index":1422,"t":{"94":{"position":[[16210,6]]}}}],["beyond",{"_index":258,"t":{"2":{"position":[[4018,6]]}}}],["bi",{"_index":478,"t":{"2":{"position":[[9629,2]]}}}],["bifrost",{"_index":3074,"t":{"200":{"position":[[57,7]]},"202":{"position":[[135,8],[381,7]]}}}],["big",{"_index":361,"t":{"2":{"position":[[6364,3]]}}}],["biggest",{"_index":55,"t":{"2":{"position":[[643,7]]},"94":{"position":[[53964,7]]}}}],["binanc",{"_index":3135,"t":{"216":{"position":[[38,7]]}}}],["binari",{"_index":1203,"t":{"92":{"position":[[33,6]]},"153":{"position":[[188,6]]}}}],["bip",{"_index":337,"t":{"2":{"position":[[5834,3]]}}}],["bit",{"_index":2050,"t":{"94":{"position":[[49832,3],[49989,3],[50143,4],[50205,4],[51193,3],[51213,3],[51847,4],[52134,5],[52392,4],[53085,4],[54095,4],[54646,3],[54904,3]]}}}],["bit.\\\\n",{"_index":2177,"t":{"94":{"position":[[54542,7]]}}}],["bitcoin",{"_index":0,"t":{"2":{"position":[[0,7],[42,7],[264,8],[472,7],[584,7],[690,7],[770,7],[1055,7],[1107,7],[1462,7],[1738,7],[1948,7],[2178,7],[2217,7],[2400,7],[2510,7],[2593,8],[2716,7],[2735,7],[2788,7],[2875,7],[2971,7],[3495,7],[3787,8],[3922,7],[4010,7],[4139,9],[4258,7],[4403,7],[4538,8],[4633,8],[4668,7],[4847,9],[4983,7],[5414,7],[5524,7],[5670,7],[5761,7],[5826,7],[5847,7],[5903,7],[6041,7],[6178,7],[6378,8],[6612,7],[8464,7],[8599,8],[8680,7],[9319,7],[9776,7],[9784,7],[10027,7],[10122,9],[10303,7],[10967,7],[11140,7],[11166,7],[11350,7],[11483,8],[11628,8],[11886,7],[12076,7],[12388,7],[12491,8],[12578,7]]},"19":{"position":[[12,7]]},"21":{"position":[[124,7]]},"29":{"position":[[102,7]]},"35":{"position":[[230,7],[303,7],[447,7],[609,7],[752,8]]},"37":{"position":[[225,7]]},"42":{"position":[[145,8]]},"48":{"position":[[31,7],[42,7],[236,7],[297,8],[418,7]]},"106":{"position":[[460,7]]},"169":{"position":[[81,7],[129,7],[699,7]]},"177":{"position":[[1708,7]]},"179":{"position":[[506,8]]},"181":{"position":[[1128,7]]},"185":{"position":[[218,7],[1376,7],[1476,7],[1593,8],[1753,8],[1811,7]]},"187":{"position":[[332,8]]},"207":{"position":[[460,7]]},"214":{"position":[[4,7],[88,8],[137,7],[212,7],[227,7],[288,7]]},"216":{"position":[[59,7],[114,7],[140,7]]},"226":{"position":[[43,7],[146,7],[225,7]]},"228":{"position":[[79,7],[102,7],[380,7],[434,7],[772,7]]},"230":{"position":[[291,7]]},"245":{"position":[[127,8]]},"250":{"position":[[146,7],[491,8]]},"277":{"position":[[107,8]]},"279":{"position":[[57,7],[139,8],[243,8]]},"281":{"position":[[118,7],[454,7],[516,7],[595,7]]},"283":{"position":[[100,7],[273,8],[335,7],[507,7]]},"285":{"position":[[68,7]]},"289":{"position":[[201,7]]},"291":{"position":[[103,7],[538,7]]},"293":{"position":[[229,8]]},"295":{"position":[[343,7]]},"303":{"position":[[2019,7],[2156,8],[2237,7],[2419,7]]}}}],["bitcoin'",{"_index":3154,"t":{"226":{"position":[[86,9]]},"250":{"position":[[301,9],[554,9]]},"262":{"position":[[689,9],[861,9]]},"265":{"position":[[380,9]]},"270":{"position":[[373,9]]},"275":{"position":[[77,9]]},"277":{"position":[[361,9]]},"281":{"position":[[360,9]]},"283":{"position":[[172,9]]},"287":{"position":[[280,9]]},"303":{"position":[[363,9],[1872,9],[1938,9]]}}}],["bitcoin’",{"_index":241,"t":{"2":{"position":[[3654,9],[8295,9],[8384,9],[11004,9],[11232,9],[12334,9]]}}}],["bitcow",{"_index":3221,"t":{"243":{"position":[[413,6]]}}}],["bitget",{"_index":2898,"t":{"169":{"position":[[485,6]]}}}],["bitgetconnector",{"_index":2936,"t":{"177":{"position":[[580,15],[2602,16],[3440,18]]}}}],["bitlay",{"_index":269,"t":{"2":{"position":[[4156,8],[4326,9],[4355,8],[4547,9],[4885,9],[4966,8],[5286,9],[5353,8],[5723,8],[5974,8],[6346,8],[8364,8],[8729,8],[8887,8],[8991,8],[9218,8],[9393,9],[9436,8],[9746,8],[10464,8],[10828,8],[12436,8]]},"19":{"position":[[0,9]]},"21":{"position":[[0,8]]},"23":{"position":[[302,8],[426,9],[505,9]]},"25":{"position":[[3,9]]},"29":{"position":[[4,8],[170,8]]},"31":{"position":[[155,8]]},"35":{"position":[[279,8]]},"37":{"position":[[52,8]]},"42":{"position":[[48,9],[259,9]]},"44":{"position":[[41,9]]},"46":{"position":[[42,8],[168,8],[256,8],[444,8]]},"48":{"position":[[17,8],[284,8]]},"50":{"position":[[16,8]]},"52":{"position":[[4,8]]},"54":{"position":[[0,8],[289,8],[348,9],[381,8]]},"78":{"position":[[2274,11],[3017,11]]},"87":{"position":[[580,9],[862,8],[990,9],[1192,11]]},"89":{"position":[[726,8]]},"104":{"position":[[57,8]]},"106":{"position":[[29,8],[383,8],[412,8]]},"108":{"position":[[24,8],[350,8]]},"112":{"position":[[0,8]]},"141":{"position":[[51,8]]},"143":{"position":[[11,8]]},"145":{"position":[[11,8],[49,8]]},"147":{"position":[[51,9]]},"149":{"position":[[13,8]]},"151":{"position":[[17,9]]},"153":{"position":[[47,8],[107,8]]},"155":{"position":[[182,8]]},"163":{"position":[[732,8],[787,8]]},"167":{"position":[[0,8],[136,8],[264,8],[389,8],[570,8],[702,8]]},"169":{"position":[[292,9],[549,8],[770,9],[810,8],[1029,8]]},"171":{"position":[[160,9]]},"175":{"position":[[320,9]]},"177":{"position":[[1279,9],[1347,9]]},"179":{"position":[[486,8]]},"181":{"position":[[364,8]]},"185":{"position":[[0,8],[148,8],[1466,9]]},"187":{"position":[[312,8],[584,9]]},"191":{"position":[[35,9]]},"193":{"position":[[723,8]]},"195":{"position":[[35,8],[129,9]]},"204":{"position":[[64,8],[85,8]]},"207":{"position":[[29,8],[383,8],[412,8]]},"209":{"position":[[24,8],[350,8],[479,8],[572,8],[653,9],[832,8],[1075,8],[1253,8],[1791,9],[1946,8],[2012,8],[2177,8],[2209,8],[2479,8],[2494,8],[2522,8],[2646,9],[2827,8],[2860,8],[3138,8],[3367,11],[3422,9],[3685,8],[3711,8]]},"212":{"position":[[54,8]]},"214":{"position":[[26,8]]},"218":{"position":[[0,8],[81,8],[254,8]]},"220":{"position":[[0,8],[130,8]]},"226":{"position":[[0,8],[196,8]]},"228":{"position":[[3,9],[229,8],[350,8],[673,9],[828,8],[1194,8]]},"230":{"position":[[34,8],[307,8]]},"232":{"position":[[21,8],[404,8]]},"245":{"position":[[59,8],[87,8],[619,9]]},"248":{"position":[[25,8]]},"250":{"position":[[8,8]]},"252":{"position":[[15,8],[78,9]]},"254":{"position":[[37,9],[219,8],[353,8]]},"256":{"position":[[3,8],[263,9]]},"258":{"position":[[34,9],[69,8]]},"262":{"position":[[23,8],[195,8]]},"265":{"position":[[0,8],[140,8],[283,8],[607,8]]},"270":{"position":[[13,8],[479,8]]},"275":{"position":[[0,8]]},"277":{"position":[[0,8],[269,8]]},"287":{"position":[[66,8],[221,8]]},"289":{"position":[[14,8]]},"291":{"position":[[23,8],[123,9],[205,8],[404,9]]},"293":{"position":[[238,8]]},"299":{"position":[[0,8]]},"301":{"position":[[0,8]]},"303":{"position":[[284,8],[1918,8],[2359,8]]}}}],["bitlayer'",{"_index":708,"t":{"21":{"position":[[692,10]]},"27":{"position":[[42,10]]},"39":{"position":[[1129,10]]},"42":{"position":[[0,10]]},"48":{"position":[[200,10],[338,10]]},"54":{"position":[[170,10]]},"177":{"position":[[1135,10]]},"193":{"position":[[345,10]]},"228":{"position":[[871,10]]},"230":{"position":[[149,10]]},"250":{"position":[[36,10]]},"265":{"position":[[292,10]]},"303":{"position":[[0,10]]}}}],["bitlayertestnet",{"_index":1144,"t":{"87":{"position":[[458,16],[965,16],[1037,18]]},"175":{"position":[[300,15]]},"177":{"position":[[2804,15]]}}}],["bitlayertestnet.id",{"_index":2948,"t":{"177":{"position":[[1167,18],[3295,21]]}}}],["bitlayer’",{"_index":280,"t":{"2":{"position":[[4336,10],[5079,10],[6507,10]]},"295":{"position":[[135,10]]}}}],["bitsmiley",{"_index":3202,"t":{"243":{"position":[[45,9]]}}}],["bitvm",{"_index":218,"t":{"2":{"position":[[3199,6],[3387,5],[3954,5],[4287,5],[4493,6],[6666,6],[8504,5],[8722,6],[9611,6],[10400,5],[10520,6],[10551,5],[10636,6],[10717,6],[10821,6],[10879,6],[10921,5]]},"19":{"position":[[66,5]]},"27":{"position":[[266,6]]},"29":{"position":[[451,5]]},"31":{"position":[[21,5],[455,5],[529,5],[664,5]]},"33":{"position":[[541,5]]},"37":{"position":[[468,5]]},"226":{"position":[[180,5]]},"228":{"position":[[402,5]]},"279":{"position":[[0,5],[202,5]]},"281":{"position":[[0,5],[48,5]]},"283":{"position":[[37,5],[475,5],[731,5]]},"285":{"position":[[159,5],[177,5]]},"287":{"position":[[57,5],[109,5]]},"293":{"position":[[75,5]]},"303":{"position":[[65,6],[399,5],[2059,5]]}}}],["bitvm'",{"_index":3313,"t":{"281":{"position":[[304,7],[609,7]]},"285":{"position":[[17,7]]}}}],["bitvm+dlc",{"_index":741,"t":{"29":{"position":[[148,9]]}}}],["bitvm.club",{"_index":3337,"t":{"287":{"position":[[149,10]]}}}],["bitvm_cn",{"_index":3338,"t":{"287":{"position":[[160,9],[179,8]]}}}],["bitvmclub",{"_index":3336,"t":{"287":{"position":[[130,9]]}}}],["bitvmcn.xyz",{"_index":3339,"t":{"287":{"position":[[197,11]]}}}],["bitvm’",{"_index":363,"t":{"2":{"position":[[6387,7],[10765,7]]}}}],["blank",{"_index":2645,"t":{"100":{"position":[[1258,5]]}}}],["block",{"_index":104,"t":{"2":{"position":[[1305,7],[11899,5]]},"5":{"position":[[313,5],[335,5]]},"7":{"position":[[418,5]]},"10":{"position":[[67,5],[406,5],[475,5]]},"12":{"position":[[63,5],[1034,5],[1103,5]]},"35":{"position":[[238,5],[351,5]]},"37":{"position":[[255,6]]},"68":{"position":[[906,5],[976,5]]},"70":{"position":[[929,5],[999,5]]},"74":{"position":[[61,5],[413,5],[483,5]]},"76":{"position":[[1358,5],[1428,5]]},"78":{"position":[[1379,5],[1449,5]]},"80":{"position":[[20,6],[557,5],[576,6],[597,6],[624,6]]},"94":{"position":[[50517,5]]},"118":{"position":[[180,5],[229,5]]},"122":{"position":[[41,5]]},"124":{"position":[[28,5]]},"130":{"position":[[41,5]]},"132":{"position":[[27,6]]},"141":{"position":[[22,7],[87,5]]},"143":{"position":[[28,5]]},"145":{"position":[[28,5]]},"195":{"position":[[240,5]]}}}],["block.chainid",{"_index":1879,"t":{"94":{"position":[[40010,13],[40279,14]]}}}],["block.chainid,\\\\n",{"_index":1905,"t":{"94":{"position":[[41445,17]]}}}],["block.chainid;\\\\n",{"_index":1874,"t":{"94":{"position":[[39721,17]]}}}],["block.timestamp,\\\\\\\"deadline_timeout\\\\\\\");\\\\n",{"_index":2510,"t":{"94":{"position":[[74869,45]]}}}],["blockchain",{"_index":52,"t":{"2":{"position":[[592,10],[1515,10],[2284,10],[5228,10],[6314,10],[9327,10],[11583,10],[11822,10]]},"21":{"position":[[870,10]]},"37":{"position":[[133,11],[204,11]]},"39":{"position":[[503,10],[1225,10]]},"46":{"position":[[62,10],[233,10],[365,12]]},"48":{"position":[[244,11]]},"54":{"position":[[474,10],[661,10]]},"89":{"position":[[273,11]]},"167":{"position":[[30,11]]},"198":{"position":[[84,10],[201,10]]},"228":{"position":[[130,10],[1064,10]]},"250":{"position":[[564,10]]},"256":{"position":[[87,10]]},"281":{"position":[[126,11]]},"283":{"position":[[214,10]]}}}],["blockhash",{"_index":638,"t":{"10":{"position":[[978,12]]},"12":{"position":[[1777,12]]},"76":{"position":[[1878,12],[2513,12]]},"78":{"position":[[1900,12],[2643,12]]},"118":{"position":[[140,10]]},"120":{"position":[[320,12]]}}}],["blockmin",{"_index":603,"t":{"5":{"position":[[480,13]]}}}],["blockno",{"_index":591,"t":{"5":{"position":[[293,7]]},"68":{"position":[[127,7],[173,7]]},"70":{"position":[[200,7],[246,7]]},"76":{"position":[[147,7],[193,7]]},"78":{"position":[[156,7],[202,7]]}}}],["blocknum=426364",{"_index":583,"t":{"5":{"position":[[183,16]]}}}],["blocknumb",{"_index":599,"t":{"5":{"position":[[428,14]]},"10":{"position":[[952,14]]},"12":{"position":[[1750,14]]},"68":{"position":[[1282,14],[1624,14]]},"70":{"position":[[1305,14],[1644,14],[1984,14]]},"72":{"position":[[526,14],[1338,14]]},"74":{"position":[[789,14],[7054,14]]},"76":{"position":[[1734,14],[2368,14]]},"78":{"position":[[1755,14],[2498,14]]},"80":{"position":[[805,14],[882,14],[959,14],[1036,14],[1113,14]]},"118":{"position":[[205,12]]},"120":{"position":[[403,14]]}}}],["blockreward",{"_index":605,"t":{"5":{"position":[[540,14]]},"80":{"position":[[858,14],[935,14],[1012,14],[1089,14],[1166,14]]}}}],["blocktyp",{"_index":1097,"t":{"80":{"position":[[524,9]]}}}],["blocktype=block",{"_index":1095,"t":{"80":{"position":[[124,17],[393,17]]}}}],["bloemen",{"_index":2040,"t":{"94":{"position":[[49574,7]]}}}],["blog",{"_index":3108,"t":{"209":{"position":[[1491,5]]}}}],["blossom",{"_index":505,"t":{"2":{"position":[[10285,10]]}}}],["boast",{"_index":3084,"t":{"204":{"position":[[94,8]]},"245":{"position":[[136,8]]}}}],["bolster",{"_index":3343,"t":{"289":{"position":[[153,7]]}}}],["book",{"_index":2224,"t":{"94":{"position":[[60002,4]]}}}],["bool",{"_index":1529,"t":{"94":{"position":[[21651,8],[22187,4],[22292,6],[22576,5],[22716,8],[24517,5],[26112,5],[26496,5],[26871,5],[27328,4],[46858,6],[47139,6],[47405,6],[47931,6],[48209,6],[59063,6],[67422,4],[72526,6],[73567,4],[73612,5],[74063,4],[75433,5],[75679,4],[76335,5]]}}}],["bool);\\\\n\\\\n",{"_index":1414,"t":{"94":{"position":[[15644,13],[16713,13]]}}}],["bool);\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/token/erc20/utils/safeerc20.sol\\\":{\\\"cont",{"_index":1439,"t":{"94":{"position":[[17092,95]]}}}],["boolean",{"_index":1411,"t":{"94":{"position":[[15479,7],[16131,7],[16909,7]]},"118":{"position":[[511,7]]},"177":{"position":[[1590,7]]}}}],["booleanslot",{"_index":2358,"t":{"94":{"position":[[67405,11],[67923,13],[68045,12]]}}}],["boost",{"_index":765,"t":{"31":{"position":[[383,5]]}}}],["both",{"_index":810,"t":{"37":{"position":[[108,4]]},"76":{"position":[[1084,4]]},"78":{"position":[[1105,4]]},"94":{"position":[[16303,4]]},"141":{"position":[[165,4]]},"179":{"position":[[481,4]]},"187":{"position":[[307,4]]},"209":{"position":[[3094,4]]},"230":{"position":[[302,4]]},"250":{"position":[[523,4]]},"260":{"position":[[46,4]]},"262":{"position":[[160,4]]},"277":{"position":[[439,4]]}}}],["brand",{"_index":230,"t":{"2":{"position":[[3404,5]]}}}],["brc",{"_index":35,"t":{"2":{"position":[[392,3]]},"116":{"position":[[344,4]]},"118":{"position":[[497,4]]},"124":{"position":[[351,4]]}}}],["break",{"_index":178,"t":{"2":{"position":[[2452,5]]},"250":{"position":[[270,6]]}}}],["break;\\\\n",{"_index":2405,"t":{"94":{"position":[[70940,9]]}}}],["bridg",{"_index":391,"t":{"2":{"position":[[7078,6]]},"21":{"position":[[224,8],[710,6]]},"27":{"position":[[4,6]]},"29":{"position":[[19,6],[213,6],[433,6]]},"31":{"position":[[164,7],[443,7],[535,6],[727,6]]},"35":{"position":[[4,6],[97,7],[109,6],[634,6]]},"37":{"position":[[67,7],[390,6],[622,7],[634,6]]},"46":{"position":[[0,7],[159,8],[296,6],[429,7]]},"48":{"position":[[98,6],[154,7],[259,8]]},"52":{"position":[[39,6]]},"54":{"position":[[23,7],[90,8],[372,8],[564,7]]},"228":{"position":[[462,7]]},"283":{"position":[[238,8],[319,7]]},"295":{"position":[[49,6]]},"303":{"position":[[196,9],[673,6],[2326,9]]}}}],["bring",{"_index":172,"t":{"2":{"position":[[2374,8],[2680,8],[5026,5]]},"94":{"position":[[16261,6]]},"256":{"position":[[205,5]]}}}],["broad",{"_index":3300,"t":{"277":{"position":[[219,5]]}}}],["broader",{"_index":189,"t":{"2":{"position":[[2691,7]]}}}],["browni",{"_index":3116,"t":{"209":{"position":[[1926,8],[1991,7],[2587,7],[2796,7]]}}}],["browser",{"_index":586,"t":{"5":{"position":[[226,7]]},"7":{"position":[[256,7]]},"10":{"position":[[254,7]]},"12":{"position":[[883,7]]},"16":{"position":[[294,7]]},"64":{"position":[[187,7]]},"66":{"position":[[253,7]]},"68":{"position":[[450,7],[755,7]]},"70":{"position":[[466,7],[778,7]]},"72":{"position":[[311,7]]},"74":{"position":[[323,7]]},"76":{"position":[[408,7],[603,7],[850,7]]},"78":{"position":[[420,7],[618,7],[868,7]]},"80":{"position":[[220,7],[457,7]]},"83":{"position":[[102,7]]},"87":{"position":[[871,7]]},"92":{"position":[[231,7]]},"94":{"position":[[204,7]]},"96":{"position":[[166,7]]},"212":{"position":[[159,7]]},"306":{"position":[[215,7]]},"308":{"position":[[282,7]]}}}],["browserurl",{"_index":1160,"t":{"87":{"position":[[1133,11],[1273,11]]}}}],["bstr",{"_index":2288,"t":{"94":{"position":[[63725,4]]}}}],["bstr.length",{"_index":2290,"t":{"94":{"position":[[63750,12]]}}}],["bstr.length));\\\\n",{"_index":2293,"t":{"94":{"position":[[63866,17]]}}}],["btc",{"_index":746,"t":{"29":{"position":[[293,3]]},"31":{"position":[[276,4]]},"33":{"position":[[126,3]]},"35":{"position":[[171,3],[779,3]]},"42":{"position":[[31,4],[58,3],[138,3]]},"44":{"position":[[30,3]]},"64":{"position":[[12,3]]},"106":{"position":[[78,3]]},"108":{"position":[[73,3]]},"167":{"position":[[635,3]]},"169":{"position":[[19,3],[159,3],[360,3],[580,3],[670,3],[780,3],[1014,3]]},"171":{"position":[[121,3],[356,3],[452,3],[660,3]]},"173":{"position":[[93,3],[159,3],[621,3]]},"175":{"position":[[143,3],[221,3]]},"177":{"position":[[0,3],[973,4],[1230,3],[1400,3],[2090,3],[2894,3],[3276,4],[3623,3]]},"179":{"position":[[186,3],[241,3],[440,3]]},"181":{"position":[[17,3],[403,3]]},"183":{"position":[[66,3],[111,3]]},"185":{"position":[[566,4],[778,3],[1618,3]]},"187":{"position":[[124,3],[543,3]]},"207":{"position":[[78,3]]},"209":{"position":[[73,3]]},"245":{"position":[[197,3]]},"265":{"position":[[323,4]]},"299":{"position":[[12,3]]},"301":{"position":[[14,3],[154,3],[234,3]]}}}],["btc/brc",{"_index":3345,"t":{"291":{"position":[[73,7]]}}}],["btr",{"_index":913,"t":{"57":{"position":[[53,3]]},"59":{"position":[[53,3]]},"237":{"position":[[434,4]]}}}],["btr(xname",{"_index":1086,"t":{"78":{"position":[[2259,11],[3002,11]]}}}],["btrscan",{"_index":2746,"t":{"143":{"position":[[49,7]]}}}],["bubbl",{"_index":1627,"t":{"94":{"position":[[27156,8],[27862,8],[28334,6],[28415,6]]}}}],["bubbled\\\\n",{"_index":1595,"t":{"94":{"position":[[24887,10]]}}}],["buffer",{"_index":2395,"t":{"94":{"position":[[70629,6],[71762,6]]}}}],["buffer;\\\\n",{"_index":2406,"t":{"94":{"position":[[70962,10]]}}}],["buffer[0",{"_index":2418,"t":{"94":{"position":[[71801,9]]}}}],["buffer[1",{"_index":2420,"t":{"94":{"position":[[71827,9]]}}}],["buffer[i",{"_index":2422,"t":{"94":{"position":[[71903,9]]}}}],["build",{"_index":277,"t":{"2":{"position":[[4246,5],[5219,8],[5956,8],[10109,9],[10886,8],[12500,8]]},"52":{"position":[[18,6]]},"171":{"position":[[230,8]]},"187":{"position":[[273,5]]},"189":{"position":[[29,8]]},"193":{"position":[[917,5]]},"198":{"position":[[172,6]]},"204":{"position":[[15,8]]},"228":{"position":[[362,8]]},"260":{"position":[[147,5]]},"270":{"position":[[351,5]]},"279":{"position":[[111,5]]},"291":{"position":[[364,6]]}}}],["build/bin",{"_index":2763,"t":{"153":{"position":[[202,9]]}}}],["build/bin/geth",{"_index":2765,"t":{"155":{"position":[[67,16]]}}}],["build@bitlayer.org",{"_index":3153,"t":{"222":{"position":[[246,18]]},"258":{"position":[[287,18]]}}}],["builder",{"_index":252,"t":{"2":{"position":[[3906,8],[5095,8]]},"256":{"position":[[119,8]]}}}],["builduserop",{"_index":2980,"t":{"181":{"position":[[134,11]]}}}],["built",{"_index":50,"t":{"2":{"position":[[568,5],[1394,5],[4484,5],[11758,5]]},"94":{"position":[[11609,5]]},"183":{"position":[[125,5],[495,5]]},"187":{"position":[[575,5]]},"256":{"position":[[21,5]]}}}],["burn",{"_index":3007,"t":{"185":{"position":[[554,5],[715,4]]}}}],["button",{"_index":2978,"t":{"179":{"position":[[427,7]]},"183":{"position":[[167,7]]}}}],["buy",{"_index":3264,"t":{"260":{"position":[[196,3]]}}}],["buyer",{"_index":100,"t":{"2":{"position":[[1246,6],[1470,6]]}}}],["by\\\\n",{"_index":1289,"t":{"94":{"position":[[11004,5],[14951,5],[49653,5]]}}}],["bybit",{"_index":2897,"t":{"169":{"position":[[475,6]]},"183":{"position":[[1499,8]]}}}],["bybitconnector",{"_index":2938,"t":{"177":{"position":[[617,14],[2734,14],[3491,18]]}}}],["bypass",{"_index":1514,"t":{"94":{"position":[[21255,6],[22352,6]]}}}],["byte",{"_index":1194,"t":{"89":{"position":[[1473,5],[1610,5]]},"94":{"position":[[20493,5],[21175,5],[21533,5],[22257,5],[22591,5],[25481,5],[25517,6],[25652,5],[25943,5],[25994,6],[26127,5],[26322,5],[26435,5],[26476,6],[26511,5],[26698,5],[26815,5],[26851,6],[26886,5],[27345,5],[27396,6],[27986,5],[28033,6],[30862,5],[32261,5],[43953,5],[45244,5],[62563,6],[62612,5],[62643,7],[63712,5],[65549,8],[67615,5],[69528,5],[71749,5],[72154,5],[74632,5],[74659,5],[75448,5],[76350,5],[77274,5],[77387,5],[77435,5],[77510,6],[77631,4],[77643,4]]},"116":{"position":[[9,6],[88,5],[154,5]]},"118":{"position":[[107,5],[160,5],[334,5],[378,5]]},"124":{"position":[[95,5],[161,5]]},"132":{"position":[[9,5]]}}}],["byte(0",{"_index":1721,"t":{"94":{"position":[[31261,7],[77678,7]]}}}],["byte(mod(valu",{"_index":2402,"t":{"94":{"position":[[70866,15]]}}}],["bytecod",{"_index":831,"t":{"39":{"position":[[598,8]]},"89":{"position":[[213,8],[241,8]]},"228":{"position":[[652,8]]},"245":{"position":[[598,8]]}}}],["bytelength(shortstr",{"_index":2309,"t":{"94":{"position":[[64399,22]]}}}],["bytelength(sstr);\\\\n",{"_index":2298,"t":{"94":{"position":[[64064,20]]}}}],["bytelength(value);\\\\n",{"_index":2330,"t":{"94":{"position":[[65915,21]]}}}],["bytelengthwithfallback(shortstr",{"_index":2329,"t":{"94":{"position":[[65750,34]]}}}],["bytes(2",{"_index":2416,"t":{"94":{"position":[[71775,7]]}}}],["bytes(a).length",{"_index":2436,"t":{"94":{"position":[[72545,15]]}}}],["bytes(b).length",{"_index":2437,"t":{"94":{"position":[[72564,15]]}}}],["bytes(store).length;\\\\n",{"_index":2331,"t":{"94":{"position":[[65956,23]]}}}],["bytes(str);\\\\n",{"_index":2289,"t":{"94":{"position":[[63732,14]]}}}],["bytes(strings.tostring(message.length",{"_index":1960,"t":{"94":{"position":[[44789,40]]}}}],["bytes(value).length",{"_index":2314,"t":{"94":{"position":[[64832,20]]}}}],["bytes)\\\\n",{"_index":2578,"t":{"94":{"position":[[77663,9]]}}}],["bytes.\\\\n",{"_index":2275,"t":{"94":{"position":[[63264,9],[65725,9]]}}}],["bytes1",{"_index":1264,"t":{"94":{"position":[[10296,6],[41192,6]]}}}],["bytes16",{"_index":2383,"t":{"94":{"position":[[70120,7]]}}}],["bytes32",{"_index":1271,"t":{"94":{"position":[[10413,7],[11978,7],[11989,7],[13683,7],[13697,7],[29841,7],[30932,8],[30979,7],[30993,7],[32362,7],[32711,7],[32722,7],[32780,8],[32809,7],[33238,7],[33249,7],[33338,7],[33595,7],[33624,7],[33638,7],[33699,8],[35149,7],[35160,7],[35248,7],[35523,7],[38160,7],[38499,7],[38642,7],[38684,7],[39959,9],[40196,9],[40659,7],[40982,9],[41309,7],[43247,7],[43608,7],[43805,8],[44695,9],[45285,9],[45857,7],[45899,8],[63274,7],[66820,7],[67469,7],[73285,7],[75020,8],[75033,7],[75186,8],[75199,7],[77138,8],[77150,7],[77908,7],[77922,7],[77951,7],[78090,7],[78447,9]]}}}],["bytes32(0));\\\\n",{"_index":1779,"t":{"94":{"position":[[34903,15],[34965,15]]}}}],["bytes32(0),\\\\n",{"_index":1907,"t":{"94":{"position":[[41481,14]]}}}],["bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\\\n",{"_index":1742,"t":{"94":{"position":[[32826,79]]}}}],["bytes32(signature.length));\\\\n",{"_index":1726,"t":{"94":{"position":[[31412,30]]}}}],["bytes32);\\\\n}\\\\n\\\"},\\\"@openzeppelin/contracts/token/erc20/ierc20.sol\\\":{\\\"cont",{"_index":1392,"t":{"94":{"position":[[14314,89]]}}}],["bytes32;\\\\n\\\\n/**\\\\n",{"_index":2265,"t":{"94":{"position":[[62283,20]]}}}],["bytes32slot",{"_index":2359,"t":{"94":{"position":[[67452,11],[68182,13],[68304,12]]}}}],["bytes\\\\n",{"_index":2576,"t":{"94":{"position":[[77585,8]]}}}],["bytesslot",{"_index":2362,"t":{"94":{"position":[[67600,9],[69241,11],[69359,10],[69494,11],[69633,10]]}}}],["byzantium",{"_index":2649,"t":{"100":{"position":[[1331,10]]}}}],["c",{"_index":2005,"t":{"94":{"position":[[46902,1],[46919,2],[47685,1],[47702,2]]}}}],["c);\\\\n",{"_index":2007,"t":{"94":{"position":[[46963,6],[47751,6]]}}}],["cach",{"_index":717,"t":{"23":{"position":[[341,6]]},"94":{"position":[[37722,6],[37978,6],[38312,5],[38447,6]]}}}],["caches.\\\\n",{"_index":1853,"t":{"94":{"position":[[38948,10]]}}}],["cairovm",{"_index":3358,"t":{"303":{"position":[[108,8]]}}}],["calcul",{"_index":1763,"t":{"94":{"position":[[34247,9],[43221,10],[44312,10],[45002,10],[45500,10],[49417,10],[53223,10],[55324,10]]},"237":{"position":[[624,10]]}}}],["call",{"_index":802,"t":{"35":{"position":[[650,5]]},"42":{"position":[[762,7]]},"94":{"position":[[11781,4],[13889,4],[14961,4],[17759,5],[17922,4],[18408,7],[18482,5],[18808,7],[18869,5],[19130,7],[19236,5],[19529,7],[19647,5],[20129,7],[20235,5],[20811,4],[20841,4],[21062,4],[21241,4],[21401,5],[21775,4],[21805,4],[22026,4],[22338,4],[23356,4],[24684,4],[24707,7],[24728,6],[24775,5],[24952,7],[24981,4],[25388,7],[25769,7],[25843,6],[27064,4],[27516,4],[27805,4],[30546,7],[32164,7]]},"118":{"position":[[543,4],[655,4],[885,4]]},"120":{"position":[[579,7]]},"183":{"position":[[540,7],[601,8]]},"209":{"position":[[2314,6]]},"218":{"position":[[74,6]]}}}],["call.\\\\n",{"_index":1509,"t":{"94":{"position":[[21035,8],[21999,8],[26376,8],[26754,8],[27254,8]]}}}],["call.\\\\n\\\\n",{"_index":1524,"t":{"94":{"position":[[21521,11]]}}}],["call/create/suicid",{"_index":2768,"t":{"155":{"position":[[286,19]]}}}],["called.\\\\n",{"_index":1419,"t":{"94":{"position":[[15897,10]]}}}],["caller'",{"_index":1409,"t":{"94":{"position":[[15433,8],[16094,8]]}}}],["caller's\\\\n",{"_index":1437,"t":{"94":{"position":[[16864,11]]}}}],["cancun",{"_index":3289,"t":{"270":{"position":[[260,6]]}}}],["canon",{"_index":1099,"t":{"80":{"position":[[587,9]]}}}],["can’t",{"_index":121,"t":{"2":{"position":[[1632,5]]}}}],["capabl",{"_index":263,"t":{"2":{"position":[[4057,11],[7566,12],[11396,7]]},"21":{"position":[[748,12]]},"39":{"position":[[807,12]]},"54":{"position":[[323,12]]},"230":{"position":[[160,13]]},"250":{"position":[[592,12]]},"272":{"position":[[159,12]]},"281":{"position":[[370,12]]},"303":{"position":[[1159,12]]}}}],["captur",{"_index":356,"t":{"2":{"position":[[6209,9]]}}}],["care",{"_index":1573,"t":{"94":{"position":[[24060,4]]}}}],["case",{"_index":347,"t":{"2":{"position":[[6024,6],[10952,5]]},"94":{"position":[[27225,4],[41717,4],[42152,4],[50354,6]]},"177":{"position":[[1110,5]]},"303":{"position":[[1244,6]]}}}],["case.\\\\n",{"_index":2273,"t":{"94":{"position":[[62719,8]]}}}],["catch",{"_index":1324,"t":{"94":{"position":[[12087,5],[22153,7]]}}}],["categori",{"_index":3201,"t":{"243":{"position":[[5,8]]}}}],["caus",{"_index":1827,"t":{"94":{"position":[[37840,5]]}}}],["caution",{"_index":1366,"t":{"94":{"position":[[13521,8]]},"209":{"position":[[1364,7]]}}}],["cd",{"_index":2760,"t":{"153":{"position":[[75,2]]}}}],["cdp",{"_index":3203,"t":{"243":{"position":[[55,3]]}}}],["ceil",{"_index":1999,"t":{"94":{"position":[[46607,5],[48921,7]]}}}],["ceildiv(uint256",{"_index":2030,"t":{"94":{"position":[[49108,15]]}}}],["censorship",{"_index":3169,"t":{"228":{"position":[[970,11]]}}}],["central",{"_index":214,"t":{"2":{"position":[[3122,14]]},"54":{"position":[[49,11],[136,11],[264,11],[498,11]]},"173":{"position":[[41,7]]},"177":{"position":[[2447,7],[3648,7]]}}}],["certain",{"_index":420,"t":{"2":{"position":[[7651,7]]},"94":{"position":[[23697,7]]},"303":{"position":[[1228,7]]}}}],["cet",{"_index":780,"t":{"33":{"position":[[199,4],[264,4],[607,3]]}}}],["cex",{"_index":906,"t":{"54":{"position":[[71,7]]}}}],["chain",{"_index":233,"t":{"2":{"position":[[3474,5]]},"25":{"position":[[241,5],[312,5],[689,6]]},"29":{"position":[[124,5]]},"31":{"position":[[437,5]]},"33":{"position":[[732,5]]},"42":{"position":[[244,7]]},"46":{"position":[[128,5]]},"48":{"position":[[61,7]]},"94":{"position":[[37362,5],[38381,5],[38478,5]]},"106":{"position":[[46,5]]},"108":{"position":[[41,5]]},"165":{"position":[[31,5]]},"175":{"position":[[276,5]]},"177":{"position":[[1059,6],[1146,5],[1455,6]]},"207":{"position":[[46,5]]},"209":{"position":[[41,5]]},"216":{"position":[[52,6]]},"265":{"position":[[507,7]]},"281":{"position":[[234,5],[783,5]]},"283":{"position":[[570,6]]},"291":{"position":[[55,5]]},"303":{"position":[[519,5]]}}}],["chain.\\\\n",{"_index":1817,"t":{"94":{"position":[[37432,9],[39891,9]]}}}],["chainid",{"_index":1147,"t":{"87":{"position":[[518,8],[625,8],[1056,8],[1204,8]]},"177":{"position":[[1033,9],[3285,9]]},"209":{"position":[[2376,8]]}}}],["chainid,\\\\n",{"_index":1269,"t":{"94":{"position":[[10371,11],[41267,11]]}}}],["chainid,address",{"_index":1841,"t":{"94":{"position":[[38262,15]]}}}],["chainid=200810",{"_index":3118,"t":{"209":{"position":[[2059,14]]}}}],["challeng",{"_index":448,"t":{"2":{"position":[[8519,10],[9583,9],[11254,10]]},"21":{"position":[[437,12]]},"23":{"position":[[616,11],[651,9]]},"25":{"position":[[120,11],[331,11],[343,11],[359,10],[551,10],[574,9]]},"228":{"position":[[61,10]]},"293":{"position":[[109,11]]},"303":{"position":[[156,11],[450,11],[2074,10]]}}}],["chang",{"_index":1,"t":{"2":{"position":[[11,9],[3521,7],[12142,7]]},"39":{"position":[[1274,8]]},"94":{"position":[[10943,6],[15852,7],[16222,8],[39321,7],[50532,6]]},"98":{"position":[[70,7]]},"100":{"position":[[261,6],[305,6]]},"161":{"position":[[983,6]]},"283":{"position":[[163,8]]},"287":{"position":[[269,7]]}}}],["changed.\\\\n",{"_index":1255,"t":{"94":{"position":[[10045,11]]}}}],["changes.\\\\n",{"_index":1843,"t":{"94":{"position":[[38487,11]]}}}],["channel",{"_index":743,"t":{"29":{"position":[[193,7]]},"31":{"position":[[542,8],[734,8]]},"252":{"position":[[66,8]]},"258":{"position":[[118,9]]},"287":{"position":[[99,9]]}}}],["chapter",{"_index":2154,"t":{"94":{"position":[[53806,8]]}}}],["char",{"_index":2281,"t":{"94":{"position":[[63507,5]]}}}],["charact",{"_index":2326,"t":{"94":{"position":[[65647,10],[65692,9]]},"98":{"position":[[457,11]]}}}],["characterist",{"_index":141,"t":{"2":{"position":[[1929,15]]},"303":{"position":[[46,15]]}}}],["charli",{"_index":271,"t":{"2":{"position":[[4175,7]]}}}],["cheaper",{"_index":290,"t":{"2":{"position":[[4758,8]]},"94":{"position":[[37953,7],[47470,7]]}}}],["check",{"_index":593,"t":{"5":{"position":[[329,5]]},"10":{"position":[[368,5]]},"12":{"position":[[997,5]]},"16":{"position":[[416,5]]},"64":{"position":[[301,5]]},"66":{"position":[[367,5]]},"68":{"position":[[869,5]]},"70":{"position":[[892,5]]},"72":{"position":[[433,5]]},"76":{"position":[[1233,5],[1317,5]]},"78":{"position":[[1254,5],[1338,5]]},"94":{"position":[[21290,8],[22387,8],[24256,6],[27479,5],[32919,5],[61620,8]]},"100":{"position":[[1736,5],[2013,8]]},"102":{"position":[[0,7]]},"167":{"position":[[504,5]]},"209":{"position":[[3629,5]]},"308":{"position":[[453,5]]}}}],["checksum",{"_index":2428,"t":{"94":{"position":[[72171,11]]}}}],["checkverifystatu",{"_index":2669,"t":{"102":{"position":[[287,19]]}}}],["chines",{"_index":2057,"t":{"94":{"position":[[49940,7]]}}}],["choic",{"_index":443,"t":{"2":{"position":[[8143,6],[9088,6]]},"265":{"position":[[231,6]]},"303":{"position":[[1720,6]]}}}],["choos",{"_index":3076,"t":{"202":{"position":[[0,6],[191,6]]},"216":{"position":[[162,8]]}}}],["chosen",{"_index":3082,"t":{"202":{"position":[[466,6]]}}}],["circul",{"_index":3374,"t":{"306":{"position":[[49,12]]}}}],["cli",{"_index":3075,"t":{"200":{"position":[[223,4]]}}}],["click",{"_index":2686,"t":{"106":{"position":[[346,5],[468,5]]},"108":{"position":[[313,5]]},"207":{"position":[[346,5],[468,5]]},"209":{"position":[[313,5],[1339,5]]}}}],["client",{"_index":792,"t":{"35":{"position":[[21,6],[204,6],[387,6],[561,6]]},"37":{"position":[[177,6],[323,7]]},"173":{"position":[[537,6]]}}}],["client'",{"_index":803,"t":{"35":{"position":[[666,8]]}}}],["clientkey",{"_index":2944,"t":{"177":{"position":[[838,10],[3102,10]]}}}],["clone",{"_index":2750,"t":{"149":{"position":[[71,5]]},"153":{"position":[[36,6]]}}}],["closest",{"_index":610,"t":{"7":{"position":[[85,7],[388,7],[400,7]]}}}],["closest=befor",{"_index":614,"t":{"7":{"position":[[214,15]]}}}],["club",{"_index":3335,"t":{"287":{"position":[[115,5]]}}}],["coalesc",{"_index":516,"t":{"2":{"position":[[10576,9]]}}}],["code",{"_index":875,"t":{"42":{"position":[[750,4]]},"92":{"position":[[354,4]]},"94":{"position":[[19,4],[327,4],[12456,4],[21470,4],[23244,4]]},"98":{"position":[[207,4],[563,5]]},"100":{"position":[[16,4],[449,4],[1475,5]]},"102":{"position":[[15,4],[235,4]]},"149":{"position":[[29,4]]},"153":{"position":[[63,4]]}}}],["codeformat",{"_index":2632,"t":{"100":{"position":[[479,11]]}}}],["codeformat').v",{"_index":2633,"t":{"100":{"position":[[491,23]]}}}],["codeformat=solid",{"_index":2636,"t":{"100":{"position":[[674,19],[1005,19],[1107,19],[1396,19]]}}}],["cofound",{"_index":270,"t":{"2":{"position":[[4165,9],[4872,9]]}}}],["coin",{"_index":2740,"t":{"139":{"position":[[102,4]]}}}],["coinbas",{"_index":900,"t":{"50":{"position":[[88,8]]}}}],["cold",{"_index":1830,"t":{"94":{"position":[[37996,4]]}}}],["collabor",{"_index":705,"t":{"21":{"position":[[519,11]]}}}],["collect",{"_index":716,"t":{"23":{"position":[[330,10]]},"31":{"position":[[472,12]]},"94":{"position":[[22987,10]]},"175":{"position":[[262,10]]}}}],["combin",{"_index":674,"t":{"12":{"position":[[1284,12]]},"27":{"position":[[240,11]]},"94":{"position":[[11795,9],[36923,11]]},"177":{"position":[[2670,11]]},"250":{"position":[[291,9]]},"295":{"position":[[251,8]]}}}],["come",{"_index":27,"t":{"2":{"position":[[254,6],[1810,6]]},"191":{"position":[[50,6]]}}}],["command",{"_index":1133,"t":{"85":{"position":[[335,7]]},"89":{"position":[[1066,7],[1733,7]]},"149":{"position":[[58,8]]},"153":{"position":[[141,8]]},"155":{"position":[[104,7]]},"175":{"position":[[383,8]]},"202":{"position":[[326,7]]},"209":{"position":[[462,8],[1982,8],[2261,7],[2578,8],[2674,8]]}}}],["commit",{"_index":171,"t":{"2":{"position":[[2361,9],[9572,10]]},"37":{"position":[[241,7]]},"232":{"position":[[131,9]]},"270":{"position":[[536,10]]},"293":{"position":[[95,9]]}}}],["common",{"_index":396,"t":{"2":{"position":[[7201,6]]},"283":{"position":[[809,6]]},"303":{"position":[[796,6]]}}}],["commun",{"_index":13,"t":{"2":{"position":[[136,10],[10496,9],[10562,9]]},"46":{"position":[[333,13]]},"232":{"position":[[324,10]]},"252":{"position":[[24,10],[168,9]]},"254":{"position":[[79,9]]},"258":{"position":[[104,13]]},"262":{"position":[[786,9]]},"275":{"position":[[430,10]]},"287":{"position":[[89,9]]}}}],["compani",{"_index":63,"t":{"2":{"position":[[759,10],[1361,10]]},"256":{"position":[[153,9]]}}}],["compar",{"_index":437,"t":{"2":{"position":[[8055,10]]},"262":{"position":[[14,8]]},"303":{"position":[[1633,10],[2398,8]]}}}],["compat",{"_index":457,"t":{"2":{"position":[[8872,14],[9148,13]]},"42":{"position":[[233,10]]},"48":{"position":[[50,10],[353,13]]},"54":{"position":[[185,10]]},"167":{"position":[[19,10]]},"204":{"position":[[135,14]]},"212":{"position":[[211,10]]},"214":{"position":[[38,10]]},"228":{"position":[[809,13]]},"245":{"position":[[177,14],[445,10]]},"250":{"position":[[24,11],[256,13]]},"262":{"position":[[369,10]]},"265":{"position":[[496,10]]},"270":{"position":[[83,10],[163,10]]},"275":{"position":[[178,13]]},"291":{"position":[[283,10]]},"303":{"position":[[2344,14]]}}}],["compens",{"_index":561,"t":{"2":{"position":[[12274,12]]}}}],["compet",{"_index":3282,"t":{"267":{"position":[[76,7]]}}}],["competit",{"_index":329,"t":{"2":{"position":[[5613,11]]}}}],["compil",{"_index":1163,"t":{"89":{"position":[[9,11],[30,9],[204,8]]},"100":{"position":[[1268,8]]},"147":{"position":[[29,9]]},"151":{"position":[[7,9]]},"153":{"position":[[99,7],[179,8]]},"209":{"position":[[965,9]]},"228":{"position":[[636,8]]},"245":{"position":[[582,8]]},"260":{"position":[[128,7]]}}}],["compilervers",{"_index":1235,"t":{"94":{"position":[[9335,18]]},"100":{"position":[[763,16]]}}}],["compilerversion').v",{"_index":2639,"t":{"100":{"position":[[780,28]]}}}],["complement",{"_index":326,"t":{"2":{"position":[[5493,10]]}}}],["complet",{"_index":147,"t":{"2":{"position":[[2011,8],[3638,12],[4442,13],[6596,12],[6963,8],[7475,10],[11205,12]]},"21":{"position":[[534,8]]},"171":{"position":[[88,10]]},"187":{"position":[[359,8]]},"226":{"position":[[111,13]]},"237":{"position":[[31,10]]},"279":{"position":[[48,8]]},"295":{"position":[[103,10],[272,13]]},"303":{"position":[[626,8],[1068,10]]}}}],["complex",{"_index":215,"t":{"2":{"position":[[3141,10],[8555,7]]},"89":{"position":[[966,7],[1291,7]]},"283":{"position":[[126,7]]},"303":{"position":[[2112,7]]}}}],["complianc",{"_index":704,"t":{"21":{"position":[[483,10]]}}}],["compon",{"_index":476,"t":{"2":{"position":[[9528,9]]},"21":{"position":[[233,11],[717,10]]},"23":{"position":[[118,10],[492,9]]},"27":{"position":[[29,9]]},"29":{"position":[[409,10],[479,11]]},"33":{"position":[[359,9]]},"177":{"position":[[182,10],[231,9],[474,9],[699,9],[2862,9],[3668,10]]},"232":{"position":[[164,9]]},"293":{"position":[[81,9]]},"303":{"position":[[430,9],[525,9]]}}}],["component'",{"_index":3365,"t":{"303":{"position":[[575,11]]}}}],["compos",{"_index":3048,"t":{"193":{"position":[[215,7]]}}}],["compose.yml",{"_index":3050,"t":{"193":{"position":[[316,11]]}}}],["compris",{"_index":696,"t":{"21":{"position":[[166,9]]}}}],["compromis",{"_index":837,"t":{"39":{"position":[[1005,12]]},"218":{"position":[[223,10]]},"283":{"position":[[201,12]]}}}],["comput",{"_index":184,"t":{"2":{"position":[[2578,11],[3414,13],[3480,11],[4517,11],[4708,9],[7325,11],[8563,12],[11712,10],[12468,13]]},"19":{"position":[[20,13]]},"21":{"position":[[362,13]]},"23":{"position":[[482,9]]},"39":{"position":[[383,13]]},"94":{"position":[[49868,7],[51097,7],[51362,7],[52059,7],[53068,7]]},"220":{"position":[[40,12]]},"267":{"position":[[88,13]]},"279":{"position":[[11,9],[228,11]]},"281":{"position":[[69,9],[240,12]]},"283":{"position":[[142,12],[553,12]]},"303":{"position":[[920,11],[2120,12]]}}}],["concaten",{"_index":2611,"t":{"98":{"position":[[212,12]]}}}],["conceiv",{"_index":123,"t":{"2":{"position":[[1648,8]]}}}],["concept",{"_index":525,"t":{"2":{"position":[[10742,8]]},"245":{"position":[[48,7]]}}}],["concern",{"_index":162,"t":{"2":{"position":[[2149,10]]},"94":{"position":[[11293,10]]}}}],["condit",{"_index":1429,"t":{"94":{"position":[[16429,9]]}}}],["config",{"_index":2773,"t":{"157":{"position":[[29,8]]},"161":{"position":[[958,7]]},"163":{"position":[[142,6],[463,6]]},"209":{"position":[[526,6],[607,7],[2145,6]]}}}],["config.toml",{"_index":2784,"t":{"161":{"position":[[0,11]]}}}],["config.yaml",{"_index":3120,"t":{"209":{"position":[[2329,11],[2621,11]]}}}],["configur",{"_index":1116,"t":{"83":{"position":[[114,14]]},"87":{"position":[[90,14],[202,9],[361,9]]},"89":{"position":[[70,13]]},"171":{"position":[[57,12],[423,11],[545,10]]},"173":{"position":[[611,9]]},"177":{"position":[[80,11],[493,14],[669,9],[2355,10],[3585,11]]},"179":{"position":[[175,10],[278,9]]},"183":{"position":[[386,10]]},"185":{"position":[[66,10]]},"187":{"position":[[59,9]]},"209":{"position":[[1570,13],[3156,9]]}}}],["confirm",{"_index":706,"t":{"21":{"position":[[607,13]]},"76":{"position":[[2339,16],[2974,16]]},"78":{"position":[[2468,16],[3211,16]]}}}],["conflict",{"_index":2340,"t":{"94":{"position":[[66438,8]]}}}],["confluenc",{"_index":83,"t":{"2":{"position":[[975,10]]}}}],["conform",{"_index":1923,"t":{"94":{"position":[[42895,8]]}}}],["congest",{"_index":3323,"t":{"281":{"position":[[807,11]]}}}],["connect",{"_index":889,"t":{"46":{"position":[[31,10]]},"54":{"position":[[36,7],[412,13]]},"106":{"position":[[331,7],[360,7]]},"108":{"position":[[298,7],[327,7]]},"163":{"position":[[720,7],[776,7]]},"169":{"position":[[23,7],[364,7],[417,7],[505,11],[784,7],[1018,7]]},"171":{"position":[[125,7],[360,8],[456,8],[664,7]]},"173":{"position":[[97,7],[163,8],[625,8]]},"175":{"position":[[147,8],[225,8]]},"177":{"position":[[4,7],[1693,8],[2094,7],[2898,7],[3627,7]]},"179":{"position":[[190,7],[245,8],[410,8],[444,7]]},"181":{"position":[[21,7],[456,9],[1118,9]]},"183":{"position":[[7,10],[70,8],[134,10],[455,10],[1034,7],[1074,7],[1197,7],[1435,7]]},"185":{"position":[[51,10],[1366,9],[1521,10],[1622,7],[1801,9]]},"187":{"position":[[128,7],[261,11],[547,7]]},"193":{"position":[[361,10],[771,9]]},"207":{"position":[[331,7],[360,7]]},"209":{"position":[[298,7],[327,7],[1218,7]]},"232":{"position":[[348,7]]}}}],["connect'",{"_index":2984,"t":{"181":{"position":[[407,9]]},"183":{"position":[[115,9]]}}}],["connect('unisat",{"_index":3002,"t":{"183":{"position":[[1467,18]]}}}],["connectkit",{"_index":2904,"t":{"169":{"position":[[866,11]]},"175":{"position":[[189,11],[444,10],[519,10]]},"177":{"position":[[35,11],[435,11],[2782,12]]},"179":{"position":[[134,10],[388,11]]},"181":{"position":[[812,12]]},"183":{"position":[[800,12],[1341,12]]},"185":{"position":[[2022,12]]},"187":{"position":[[159,12]]}}}],["connector",{"_index":2941,"t":{"177":{"position":[[733,10],[2114,10],[2135,10],[2634,9]]},"183":{"position":[[217,10]]}}}],["connectors={[new",{"_index":2975,"t":{"177":{"position":[[3380,16]]}}}],["connectprovid",{"_index":2933,"t":{"177":{"position":[[447,16],[683,15],[2378,15],[2548,16],[3026,16],[3520,18],[3566,15]]},"179":{"position":[[206,16]]},"183":{"position":[[232,17]]}}}],["consensi",{"_index":3107,"t":{"209":{"position":[[1481,9]]}}}],["consensu",{"_index":235,"t":{"2":{"position":[[3546,9]]},"283":{"position":[[182,9]]},"289":{"position":[[209,9]]}}}],["consequ",{"_index":2174,"t":{"94":{"position":[[54442,13]]}}}],["consid",{"_index":1304,"t":{"94":{"position":[[11493,10],[24126,8],[58941,10]]}}}],["consider",{"_index":1297,"t":{"94":{"position":[[11278,14],[11746,13],[13543,14]]},"285":{"position":[[204,14]]}}}],["considerations.html#us",{"_index":1580,"t":{"94":{"position":[[24228,23]]}}}],["considerations\\\\n",{"_index":1296,"t":{"94":{"position":[[11229,17]]}}}],["consist",{"_index":752,"t":{"29":{"position":[[440,7]]},"42":{"position":[[179,11]]},"265":{"position":[[524,11]]},"272":{"position":[[243,12]]}}}],["console.log(\"error",{"_index":1225,"t":{"92":{"position":[[1053,21]]},"100":{"position":[[2293,22]]}}}],["console.log(\"messag",{"_index":2673,"t":{"102":{"position":[[407,20]]}}}],["console.log(\"result",{"_index":2666,"t":{"100":{"position":[[2221,19]]},"102":{"position":[[511,19]]}}}],["console.log(\"result1",{"_index":1222,"t":{"92":{"position":[[928,20]]}}}],["console.log(\"result2",{"_index":1224,"t":{"92":{"position":[[1008,20]]}}}],["console.log(\"statu",{"_index":2665,"t":{"100":{"position":[[2179,19]]},"102":{"position":[[339,19]]}}}],["console.log(result",{"_index":2659,"t":{"100":{"position":[[1620,20]]}}}],["const",{"_index":2991,"t":{"181":{"position":[[858,5],[878,5],[917,5]]},"183":{"position":[[866,5],[886,5],[1407,5],[1427,5]]},"185":{"position":[[571,5],[606,5],[649,5],[944,5],[997,5],[2055,5],[2075,5],[2127,5],[2200,5]]},"209":{"position":[[601,5],[1693,5],[2939,5],[3344,5]]},"237":{"position":[[204,5]]}}}],["constant",{"_index":1836,"t":{"94":{"position":[[38176,8],[63290,8],[66837,8],[70136,8],[70201,8],[73301,8]]}}}],["constantinopl",{"_index":2650,"t":{"100":{"position":[[1342,15]]}}}],["construct",{"_index":265,"t":{"2":{"position":[[4081,9],[5563,9]]},"181":{"position":[[151,12],[682,12],[1057,12]]},"185":{"position":[[264,12],[456,11]]},"187":{"position":[[172,9]]}}}],["constructor",{"_index":1166,"t":{"89":{"position":[[435,11],[487,11],[907,11],[937,11],[1103,11],[1361,12],[1422,11],[1777,11]]}}}],["constructor(str",{"_index":1864,"t":{"94":{"position":[[39428,18],[62917,18],[74124,18]]}}}],["constructorargu",{"_index":1170,"t":{"89":{"position":[[654,23]]},"94":{"position":[[9381,23]]},"100":{"position":[[1140,22]]}}}],["constructorarguements').v",{"_index":2643,"t":{"100":{"position":[[1163,34]]}}}],["constructorarguments1",{"_index":1176,"t":{"89":{"position":[[820,21]]}}}],["constructorarguments2",{"_index":1177,"t":{"89":{"position":[[842,21]]}}}],["constructorarguments3",{"_index":1178,"t":{"89":{"position":[[864,24]]}}}],["consum",{"_index":114,"t":{"2":{"position":[[1481,9]]},"94":{"position":[[42775,8],[61134,8]]}}}],["contain",{"_index":1522,"t":{"94":{"position":[[21452,8],[66654,7]]},"118":{"position":[[10,10]]},"177":{"position":[[938,8],[1569,9]]},"183":{"position":[[158,8]]},"185":{"position":[[1659,10]]}}}],["contend",{"_index":570,"t":{"2":{"position":[[12445,8]]}}}],["contents)\\\\\\\"),\\\\n",{"_index":1889,"t":{"94":{"position":[[40757,18]]}}}],["contextu",{"_index":2907,"t":{"171":{"position":[[200,13]]}}}],["continu",{"_index":367,"t":{"2":{"position":[[6462,11],[10643,9],[12044,8]]},"37":{"position":[[588,10]]},"293":{"position":[[252,12]]}}}],["contract",{"_index":149,"t":{"2":{"position":[[2026,10],[4595,8]]},"23":{"position":[[547,9]]},"29":{"position":[[505,10]]},"35":{"position":[[47,9],[122,8],[211,8],[394,8],[568,8],[641,8]]},"37":{"position":[[445,8]]},"39":{"position":[[96,8],[187,8],[445,8],[567,8],[740,9]]},"76":{"position":[[94,9],[956,8],[986,8],[1066,9],[1101,8],[1297,8]]},"78":{"position":[[103,9],[976,8],[1006,8],[1087,9],[1122,8],[1318,8]]},"83":{"position":[[133,8],[190,8]]},"85":{"position":[[97,8]]},"87":{"position":[[316,9]]},"89":{"position":[[0,8],[44,8],[257,8],[341,9],[384,8],[399,8],[426,8],[558,9],[737,8],[1322,8],[1407,8],[1809,8]]},"92":{"position":[[12,8],[78,9],[310,8]]},"94":{"position":[[44,9],[283,8],[9862,9],[10190,8],[10607,9],[12573,8],[12666,9],[14451,9],[17235,9],[17626,8],[18416,8],[18816,9],[20851,10],[21461,8],[21815,10],[22886,9],[23730,9],[25777,8],[27078,8],[27144,8],[27500,8],[28801,9],[36086,9],[36983,8],[37460,8],[37708,9],[37820,9],[38095,8],[39400,8],[42540,9],[46277,9],[59242,9],[60519,9],[60701,8],[62006,9],[62777,8],[66112,9],[66796,8],[69864,9]]},"98":{"position":[[603,9]]},"100":{"position":[[240,11],[358,10],[431,10]]},"102":{"position":[[267,11]]},"106":{"position":[[275,8],[307,8]]},"108":{"position":[[242,8],[274,8]]},"118":{"position":[[426,8]]},"139":{"position":[[20,8]]},"185":{"position":[[822,8]]},"195":{"position":[[259,8]]},"202":{"position":[[287,8]]},"204":{"position":[[42,9]]},"207":{"position":[[275,8],[307,8]]},"209":{"position":[[242,8],[274,8],[980,10],[2743,9]]},"212":{"position":[[257,9]]},"218":{"position":[[49,8]]},"228":{"position":[[571,9],[786,9]]},"237":{"position":[[511,8]]},"245":{"position":[[517,9]]},"250":{"position":[[192,9],[625,8]]},"262":{"position":[[386,9]]},"270":{"position":[[136,10],[174,9],[680,10]]},"272":{"position":[[150,8],[396,8]]},"275":{"position":[[329,8]]},"277":{"position":[[331,8]]},"279":{"position":[[65,10]]},"281":{"position":[[206,9]]},"283":{"position":[[720,10],[792,10]]},"306":{"position":[[302,8]]},"308":{"position":[[369,8]]}}}],["contract'",{"_index":1479,"t":{"94":{"position":[[19138,10],[19537,10],[20137,10]]}}}],["contract).\\\\n",{"_index":1549,"t":{"94":{"position":[[23274,13]]}}}],["contract,\\\\n",{"_index":1458,"t":{"94":{"position":[[17887,12]]}}}],["contract.\\\\n",{"_index":1605,"t":{"94":{"position":[[25371,12]]}}}],["contract/lightn",{"_index":375,"t":{"2":{"position":[[6694,18]]}}}],["contract\\\\n",{"_index":1639,"t":{"94":{"position":[[27611,11],[36742,11]]}}}],["contract_addr",{"_index":3192,"t":{"237":{"position":[[315,20],[486,17]]}}}],["contract_address",{"_index":1175,"t":{"89":{"position":[[800,19]]}}}],["contractabi",{"_index":1215,"t":{"92":{"position":[[624,11],[642,11],[684,12]]}}}],["contractaddress",{"_index":1044,"t":{"76":{"position":[[1247,15],[2015,18],[2650,18]]},"78":{"position":[[1268,15],[2037,18],[2780,18]]},"100":{"position":[[312,16]]},"306":{"position":[[282,15]]},"308":{"position":[[349,15]]}}}],["contractaddress').v",{"_index":2629,"t":{"100":{"position":[[329,28]]}}}],["contractaddress=0x963c039406f8b10d3a0691328b4d2ae90fa43230",{"_index":1076,"t":{"78":{"position":[[502,59],[700,59]]}}}],["contractaddress=0xfe9f969faf8ad72a83b761138bf25de87eff9dd2",{"_index":1042,"t":{"76":{"position":[[487,59],[682,59]]},"306":{"position":[[129,59]]},"308":{"position":[[132,59]]}}}],["contractaddresses=0xff82b0676f7bc1038dda706374ac706a59cc2163",{"_index":2599,"t":{"96":{"position":[[78,61]]}}}],["contractnam",{"_index":1239,"t":{"94":{"position":[[9657,15],[62943,13],[74150,13]]},"100":{"position":[[615,13],[655,14],[726,12]]}}}],["contractname').v",{"_index":2635,"t":{"100":{"position":[[629,25]]}}}],["contractname.toshortstringwithfallback(_namefallback);\\\\n",{"_index":2274,"t":{"94":{"position":[[62972,57]]}}}],["contractname;\\\\n",{"_index":2493,"t":{"94":{"position":[[74237,16]]}}}],["contracts.\\\\n",{"_index":2342,"t":{"94":{"position":[[66477,13]]}}}],["contracts.adoc[smart\\\\n",{"_index":1862,"t":{"94":{"position":[[39374,23]]}}}],["contracts/path/path/simplecontract.sol:simplecontract",{"_index":1201,"t":{"89":{"position":[[1818,53]]}}}],["contracts/proxy/erc1967/erc1967proxy.sol:erc1967proxi",{"_index":1174,"t":{"89":{"position":[[746,53]]}}}],["contracts/pull/522\\\\n",{"_index":2015,"t":{"94":{"position":[[47622,21]]}}}],["contrast",{"_index":3280,"t":{"267":{"position":[[3,9]]}}}],["contribut",{"_index":455,"t":{"2":{"position":[[8823,10],[9969,11]]},"254":{"position":[[136,10]]},"287":{"position":[[24,10]]}}}],["control",{"_index":395,"t":{"2":{"position":[[7183,8],[7493,7],[7903,7]]},"29":{"position":[[40,10],[249,10]]},"33":{"position":[[65,7]]},"94":{"position":[[24021,7]]},"173":{"position":[[49,7]]},"303":{"position":[[778,8],[1086,7],[1478,7]]}}}],["conveni",{"_index":3046,"t":{"193":{"position":[[167,11]]}}}],["convent",{"_index":3371,"t":{"303":{"position":[[2089,12]]}}}],["converg",{"_index":2182,"t":{"94":{"position":[[54765,9]]}}}],["convert",{"_index":1600,"t":{"94":{"position":[[25123,7],[62346,7],[70405,8],[71000,8],[71270,8],[71525,8],[72108,8]]}}}],["convey",{"_index":1301,"t":{"94":{"position":[[11429,6]]}}}],["copi",{"_index":2919,"t":{"173":{"position":[[515,4]]}}}],["core",{"_index":300,"t":{"2":{"position":[[5090,4],[6518,4],[7146,4],[9523,4]]},"29":{"position":[[404,4]]},"35":{"position":[[36,4]]},"177":{"position":[[214,4]]},"256":{"position":[[114,4]]},"303":{"position":[[741,4]]}}}],["corner",{"_index":552,"t":{"2":{"position":[[12105,6]]}}}],["cornerston",{"_index":3298,"t":{"275":{"position":[[307,11]]}}}],["correct",{"_index":2110,"t":{"94":{"position":[[52111,7],[52384,7],[52919,7],[54534,7]]},"100":{"position":[[131,7]]}}}],["correspond",{"_index":1781,"t":{"94":{"position":[[35402,13],[37741,10],[38398,11],[43355,11],[44458,11],[45628,11]]},"173":{"position":[[675,13]]},"177":{"position":[[162,13]]},"185":{"position":[[79,13]]},"301":{"position":[[59,13]]}}}],["cost",{"_index":209,"t":{"2":{"position":[[3056,5],[9007,5]]},"167":{"position":[[152,5]]},"228":{"position":[[222,6]]},"265":{"position":[[41,5]]},"267":{"position":[[214,4]]},"275":{"position":[[161,6]]},"277":{"position":[[20,4],[382,4]]}}}],["cost\\\\n",{"_index":1559,"t":{"94":{"position":[[23684,7]]}}}],["count",{"_index":112,"t":{"2":{"position":[[1432,9]]}}}],["countless",{"_index":106,"t":{"2":{"position":[[1327,9]]}}}],["cover",{"_index":3039,"t":{"187":{"position":[[512,8]]}}}],["craft",{"_index":1696,"t":{"94":{"position":[[30340,5],[31958,5]]}}}],["creat",{"_index":357,"t":{"2":{"position":[[6240,7]]},"33":{"position":[[630,7]]},"94":{"position":[[24091,6]]},"153":{"position":[[170,6]]},"171":{"position":[[248,6],[597,6]]},"173":{"position":[[338,6],[360,6],[431,6]]},"175":{"position":[[69,6]]},"179":{"position":[[32,7]]},"195":{"position":[[272,8]]},"198":{"position":[[280,9]]},"202":{"position":[[494,6]]},"209":{"position":[[872,6],[2232,6],[3591,6]]},"218":{"position":[[245,6]]},"237":{"position":[[107,6]]},"283":{"position":[[293,6]]}}}],["creation",{"_index":785,"t":{"33":{"position":[[390,8]]},"118":{"position":[[435,8]]}}}],["credit",{"_index":2038,"t":{"94":{"position":[[49558,6]]}}}],["critic",{"_index":539,"t":{"2":{"position":[[11497,8]]},"37":{"position":[[20,9]]}}}],["cross",{"_index":740,"t":{"29":{"position":[[118,5]]},"31":{"position":[[431,5]]},"33":{"position":[[726,5]]},"46":{"position":[[122,5]]},"291":{"position":[[49,5]]},"303":{"position":[[513,5]]}}}],["crosschain",{"_index":508,"t":{"2":{"position":[[10410,10]]}}}],["crowd",{"_index":16,"t":{"2":{"position":[[173,8]]}}}],["crucial",{"_index":734,"t":{"27":{"position":[[21,7]]},"46":{"position":[[15,7]]}}}],["cryptograph",{"_index":3162,"t":{"228":{"position":[[294,13]]},"289":{"position":[[178,13]]}}}],["cryptographi",{"_index":3171,"t":{"228":{"position":[[1050,13]]}}}],["cultiv",{"_index":572,"t":{"2":{"position":[[12590,11]]}}}],["cultur",{"_index":490,"t":{"2":{"position":[[9912,7],[10086,8]]}}}],["cumulativegasus",{"_index":1061,"t":{"76":{"position":[[2290,20],[2925,20]]},"78":{"position":[[2419,20],[3162,20]]}}}],["curl",{"_index":2711,"t":{"120":{"position":[[9,4]]},"128":{"position":[[9,4]]},"136":{"position":[[9,4]]}}}],["currenc",{"_index":2679,"t":{"106":{"position":[[62,8]]},"108":{"position":[[57,8],[375,9]]},"207":{"position":[[62,8]]},"209":{"position":[[57,8],[375,9]]},"237":{"position":[[585,8]]}}}],["current",{"_index":122,"t":{"2":{"position":[[1638,9],[3315,7]]},"87":{"position":[[854,7]]},"94":{"position":[[13330,7],[13754,7],[31099,9],[34063,7],[39233,7],[39883,7],[60788,7],[61174,7],[61768,7],[61812,8]]},"204":{"position":[[159,9]]},"245":{"position":[[266,9]]},"270":{"position":[[468,10]]},"306":{"position":[[12,7]]},"308":{"position":[[12,7]]}}}],["current);\\\\n",{"_index":2257,"t":{"94":{"position":[[61860,12]]}}}],["currentallow",{"_index":1470,"t":{"94":{"position":[[18298,17],[19818,16],[19884,17],[19977,17],[20052,16]]}}}],["currentnonce);\\\\n\\\\n",{"_index":2240,"t":{"94":{"position":[[60863,20]]}}}],["curv",{"_index":1660,"t":{"94":{"position":[[28922,5]]}}}],["custodi",{"_index":738,"t":{"29":{"position":[[65,8]]},"31":{"position":[[513,7]]},"50":{"position":[[59,7]]}}}],["custom",{"_index":1115,"t":{"83":{"position":[[95,6]]},"89":{"position":[[1002,6]]},"94":{"position":[[24867,6],[35416,6]]},"112":{"position":[[81,6]]},"155":{"position":[[167,6],[200,6],[413,6]]},"185":{"position":[[1893,6]]},"187":{"position":[[184,6]]},"198":{"position":[[14,11],[179,10]]}}}],["custom:oz",{"_index":1832,"t":{"94":{"position":[[38020,10]]}}}],["customchain",{"_index":1136,"t":{"87":{"position":[[77,12],[1010,13]]}}}],["customprovid",{"_index":2992,"t":{"181":{"position":[[923,14]]},"185":{"position":[[929,14]]}}}],["customprovider.getsign",{"_index":3003,"t":{"185":{"position":[[400,27],[621,27]]}}}],["cut",{"_index":3161,"t":{"228":{"position":[[281,7]]}}}],["daili",{"_index":2601,"t":{"98":{"position":[[10,5]]}}}],["dapp",{"_index":872,"t":{"42":{"position":[[675,4]]},"94":{"position":[[39189,4]]},"167":{"position":[[255,5]]},"169":{"position":[[433,4]]},"173":{"position":[[474,5]]},"189":{"position":[[65,7]]},"212":{"position":[[193,4]]},"250":{"position":[[233,7]]},"262":{"position":[[844,5],[899,6]]},"265":{"position":[[1078,4]]},"277":{"position":[[250,6]]}}}],["dashboard",{"_index":2913,"t":{"171":{"position":[[576,10]]},"173":{"position":[[19,9],[219,10],[307,10]]},"177":{"position":[[910,10]]},"179":{"position":[[91,10]]},"187":{"position":[[90,10]]}}}],["data",{"_index":635,"t":{"10":{"position":[[938,7]]},"12":{"position":[[1672,7]]},"37":{"position":[[184,4]]},"92":{"position":[[611,6]]},"94":{"position":[[20950,4],[21053,4],[21067,4],[21188,5],[21280,4],[21914,4],[22017,4],[22031,4],[22270,5],[22377,4],[25114,5],[25410,6],[25494,5],[25574,5],[25956,5],[26448,5],[26828,5],[27551,4],[30413,5],[32031,5],[36628,5],[36910,4],[43139,4],[44230,4],[44916,4],[44946,5],[45039,6],[45257,5],[45445,4]]},"100":{"position":[[166,5]]},"102":{"position":[[112,5]]},"116":{"position":[[0,5]]},"118":{"position":[[98,5],[151,5],[325,5],[369,5],[572,4],[785,4],[792,4]]},"120":{"position":[[24,4]]},"128":{"position":[[24,4]]},"132":{"position":[[0,5]]},"136":{"position":[[24,4]]},"185":{"position":[[340,5],[782,5]]},"198":{"position":[[95,4],[212,4]]},"283":{"position":[[544,4]]}}}],["data));\\\\n",{"_index":1969,"t":{"94":{"position":[[45363,10]]}}}],["data.\\\\n",{"_index":1797,"t":{"94":{"position":[[36508,8]]}}}],["data.html[`eth_signtypeddatav4",{"_index":1824,"t":{"94":{"position":[[37611,31]]}}}],["data/bitlay",{"_index":2815,"t":{"161":{"position":[[432,15]]},"163":{"position":[[97,14],[149,14],[198,14],[418,14],[470,14],[519,14]]},"165":{"position":[[85,14]]}}}],["databas",{"_index":3049,"t":{"193":{"position":[[233,9]]}}}],["datadir",{"_index":2814,"t":{"161":{"position":[[422,7]]}}}],["datasources.source.startblock",{"_index":3070,"t":{"195":{"position":[[171,29]]}}}],["data|array",{"_index":2696,"t":{"116":{"position":[[73,11],[139,11]]},"124":{"position":[[80,11],[146,11]]}}}],["day",{"_index":6,"t":{"2":{"position":[[74,4]]},"98":{"position":[[45,3]]}}}],["dcl",{"_index":771,"t":{"31":{"position":[[723,3]]}}}],["deadlin",{"_index":1318,"t":{"94":{"position":[[11959,9],[12065,9],[13116,10],[74572,9],[75156,9],[75310,9]]}}}],["deadline));\\\\n\\\\n",{"_index":2586,"t":{"94":{"position":[[78072,17]]}}}],["deadline);\\\\n",{"_index":2472,"t":{"94":{"position":[[73803,13],[75626,13]]}}}],["deadline)\\\\\\\");\\\\n\\\\n",{"_index":2458,"t":{"94":{"position":[[73438,21]]}}}],["deadline,\\\\n",{"_index":1372,"t":{"94":{"position":[[13658,12],[77883,12]]}}}],["deal",{"_index":2341,"t":{"94":{"position":[[66452,7]]}}}],["decad",{"_index":557,"t":{"2":{"position":[[12193,7]]}}}],["decemb",{"_index":3331,"t":{"283":{"position":[[635,8]]}}}],["decentr",{"_index":183,"t":{"2":{"position":[[2564,13],[4694,13],[5575,13],[6151,13],[6267,13],[9875,13],[11698,13],[11792,13]]},"29":{"position":[[51,13]]},"31":{"position":[[402,17],[493,13]]},"189":{"position":[[38,13]]},"212":{"position":[[285,13]]},"228":{"position":[[934,17]]},"232":{"position":[[144,14]]},"250":{"position":[[206,13]]},"272":{"position":[[176,13]]},"275":{"position":[[342,13]]},"277":{"position":[[53,13]]},"283":{"position":[[305,13]]}}}],["decim",{"_index":853,"t":{"42":{"position":[[208,7]]},"94":{"position":[[70448,7],[71042,7]]},"139":{"position":[[12,7]]},"265":{"position":[[461,7]]},"306":{"position":[[462,7],[545,7]]}}}],["decod",{"_index":1603,"t":{"94":{"position":[[25282,8],[63906,6],[65033,6]]}}}],["decreas",{"_index":98,"t":{"2":{"position":[[1225,9]]},"94":{"position":[[19516,8]]}}}],["decreaseallow",{"_index":1467,"t":{"94":{"position":[[18196,19]]}}}],["decrement",{"_index":2247,"t":{"94":{"position":[[61403,11]]}}}],["dedic",{"_index":3036,"t":{"187":{"position":[[438,9]]}}}],["deduct",{"_index":1436,"t":{"94":{"position":[[16846,8]]}}}],["deep",{"_index":3242,"t":{"250":{"position":[[47,4]]}}}],["default",{"_index":852,"t":{"42":{"position":[[200,7],[842,7]]},"94":{"position":[[418,10],[27904,7],[41605,7],[42037,7]]},"100":{"position":[[538,9],[1065,7],[1277,8]]},"155":{"position":[[255,9]]},"163":{"position":[[752,8]]},"209":{"position":[[2094,7],[2168,8],[3267,7]]},"260":{"position":[[34,7]]},"265":{"position":[[453,7],[1219,7]]}}}],["default.\\\\n",{"_index":1418,"t":{"94":{"position":[[15822,11]]}}}],["defaultnetwork",{"_index":3130,"t":{"209":{"position":[[3350,14]]}}}],["defi",{"_index":37,"t":{"2":{"position":[[407,5],[1505,5],[6308,5]]}}}],["defillama",{"_index":3184,"t":{"235":{"position":[[51,9],[84,9]]},"243":{"position":[[22,9]]}}}],["defin",{"_index":1098,"t":{"80":{"position":[[549,7]]},"89":{"position":[[1334,7]]},"94":{"position":[[10819,7],[14182,7],[14592,7]]},"177":{"position":[[794,6],[1373,6],[1969,7]]},"181":{"position":[[566,6]]},"183":{"position":[[202,7]]},"185":{"position":[[811,6]]}}}],["defines\\\\n",{"_index":1756,"t":{"94":{"position":[[33928,10]]}}}],["delay",{"_index":3088,"t":{"204":{"position":[[245,8]]},"245":{"position":[[352,8]]}}}],["deleg",{"_index":1622,"t":{"94":{"position":[[26745,8]]}}}],["delight",{"_index":2153,"t":{"94":{"position":[[53794,11]]}}}],["delight\\\\\\\"\\\\n",{"_index":2225,"t":{"94":{"position":[[60020,14]]}}}],["demand",{"_index":3266,"t":{"262":{"position":[[290,7],[303,6]]},"267":{"position":[[62,7],[196,7]]},"281":{"position":[[403,7]]}}}],["demo",{"_index":2910,"t":{"171":{"position":[[265,4]]},"187":{"position":[[368,4]]}}}],["demonstr",{"_index":2964,"t":{"177":{"position":[[2424,12]]},"185":{"position":[[1851,12]]}}}],["denomin",{"_index":2036,"t":{"94":{"position":[[49442,12],[49521,11],[49753,12],[50433,11],[50757,11],[50781,12],[51346,11],[51504,11],[51564,11],[51588,11],[51917,11],[51949,11],[52026,11],[52149,11],[52206,12],[52429,11],[52489,11],[52550,11],[52611,11],[52672,11],[52734,11],[53242,11],[53373,12],[53536,12]]}}}],["denominator);\\\\n",{"_index":2094,"t":{"94":{"position":[[51523,16],[53472,16]]}}}],["denominator)\\\\n\\\\n",{"_index":2085,"t":{"94":{"position":[[51158,18]]}}}],["denominator.\\\\n",{"_index":2092,"t":{"94":{"position":[[51402,15],[52878,15]]}}}],["denominator;\\\\n",{"_index":2078,"t":{"94":{"position":[[50675,15]]}}}],["depend",{"_index":1124,"t":{"85":{"position":[[49,13],[354,13]]},"171":{"position":[[690,12]]},"175":{"position":[[119,12]]},"262":{"position":[[269,9]]}}}],["depends_on",{"_index":3058,"t":{"193":{"position":[[506,11]]}}}],["depin",{"_index":359,"t":{"2":{"position":[[6336,6]]}}}],["deploy",{"_index":916,"t":{"57":{"position":[[116,10]]},"87":{"position":[[292,9]]},"89":{"position":[[107,10],[540,10]]},"169":{"position":[[244,8],[891,8]]},"193":{"position":[[54,11],[252,11]]},"198":{"position":[[290,10]]},"209":{"position":[[815,6],[1010,6],[1108,7],[1345,9],[2636,6],[2726,6],[3046,6],[3325,6],[3543,10],[3668,6],[3697,6]]},"250":{"position":[[444,6]]},"291":{"position":[[381,6]]},"295":{"position":[[174,9]]}}}],["deployed_contract_address",{"_index":1202,"t":{"89":{"position":[[1872,25]]}}}],["deposit",{"_index":747,"t":{"29":{"position":[[297,7]]},"31":{"position":[[244,10]]},"33":{"position":[[14,8],[141,8]]},"68":{"position":[[1609,9]]}}}],["deprec",{"_index":1062,"t":{"76":{"position":[[2325,13],[2960,13]]},"78":{"position":[[2454,13],[3197,13]]}}}],["depth",{"_index":2705,"t":{"118":{"position":[[620,6],[642,5],[896,5]]},"120":{"position":[[587,8],[988,8],[1323,8]]}}}],["deriv",{"_index":1671,"t":{"94":{"position":[[29276,7]]}}}],["desc",{"_index":975,"t":{"68":{"position":[[1194,4]]},"70":{"position":[[1217,4]]},"74":{"position":[[701,4]]},"76":{"position":[[1646,4]]},"78":{"position":[[1667,4]]}}}],["descend",{"_index":976,"t":{"68":{"position":[[1210,10]]},"70":{"position":[[1233,10]]},"74":{"position":[[717,10]]},"76":{"position":[[1662,10]]},"78":{"position":[[1683,10]]}}}],["describ",{"_index":725,"t":{"25":{"position":[[250,9]]},"94":{"position":[[10147,8]]}}}],["descript",{"_index":590,"t":{"5":{"position":[[281,11]]},"7":{"position":[[311,11]]},"10":{"position":[[309,11]]},"12":{"position":[[938,11]]},"16":{"position":[[349,11]]},"64":{"position":[[242,11]]},"66":{"position":[[308,11]]},"68":{"position":[[810,11]]},"70":{"position":[[833,11]]},"72":{"position":[[366,11]]},"74":{"position":[[378,11]]},"76":{"position":[[1174,11]]},"78":{"position":[[1195,11]]},"80":{"position":[[512,11]]},"92":{"position":[[286,11]]},"94":{"position":[[259,11],[29768,12]]},"155":{"position":[[42,12]]},"185":{"position":[[1098,12],[2306,12]]},"306":{"position":[[270,11]]},"308":{"position":[[337,11]]}}}],["description=bitlay",{"_index":2866,"t":{"165":{"position":[[7,20]]}}}],["deserv",{"_index":532,"t":{"2":{"position":[[11087,8]]}}}],["design",{"_index":370,"t":{"2":{"position":[[6644,6],[9512,6],[9538,6]]},"46":{"position":[[268,8]]},"94":{"position":[[37283,8]]},"183":{"position":[[432,6],[996,9]]},"214":{"position":[[62,8]]},"228":{"position":[[1084,7]]},"281":{"position":[[88,8]]},"289":{"position":[[109,8]]}}}],["desir",{"_index":531,"t":{"2":{"position":[[11076,6]]},"94":{"position":[[16504,7]]}}}],["despit",{"_index":124,"t":{"2":{"position":[[1657,7]]}}}],["destruct",{"_index":794,"t":{"35":{"position":[[156,11]]}}}],["detail",{"_index":2744,"t":{"141":{"position":[[122,8]]},"155":{"position":[[158,8]]},"163":{"position":[[13,6]]},"171":{"position":[[34,7]]},"177":{"position":[[2006,8]]},"228":{"position":[[1123,8]]},"285":{"position":[[98,8]]}}}],["detect",{"_index":730,"t":{"25":{"position":[[537,9]]}}}],["deter",{"_index":3324,"t":{"281":{"position":[[896,5]]}}}],["determin",{"_index":444,"t":{"2":{"position":[[8189,10]]},"33":{"position":[[207,9]]},"177":{"position":[[1598,11]]},"303":{"position":[[1766,10]]}}}],["determinist",{"_index":915,"t":{"57":{"position":[[102,13]]}}}],["dev",{"_index":1252,"t":{"94":{"position":[[9988,4],[10107,4],[10725,4],[12773,4],[13737,4],[14093,4],[14552,4],[14651,4],[14882,4],[15113,4],[15240,4],[15386,4],[15667,4],[16013,4],[16736,4],[17545,4],[18055,4],[18172,4],[18359,4],[18697,4],[19112,4],[19511,4],[20116,4],[20775,4],[21739,4],[22982,4],[23077,4],[23228,4],[23349,4],[23469,4],[24650,4],[25604,4],[26274,4],[26650,4],[27027,4],[27768,4],[28152,4],[28908,4],[29257,4],[29357,4],[29474,4],[29606,4],[31465,4],[32485,4],[33100,4],[33457,4],[34998,4],[35369,4],[36397,4],[38896,4],[39841,4],[40331,4],[41092,4],[41539,4],[41968,4],[42709,4],[43084,4],[44175,4],[44861,4],[45391,4],[46375,4],[46473,4],[46714,4],[46992,4],[47255,4],[47780,4],[48048,4],[48326,4],[48490,4],[48655,4],[48904,4],[49544,4],[53615,4],[55623,4],[56370,4],[56736,4],[57461,4],[57831,4],[58513,4],[58892,4],[59346,4],[59457,4],[59625,4],[59794,4],[60145,4],[60611,4],[60731,4],[60952,4],[61129,4],[61591,4],[62306,4],[63472,4],[63901,4],[64338,4],[64621,4],[65028,4],[65388,4],[66302,4],[67648,4],[67907,4],[68166,4],[68425,4],[68684,4],[68940,4],[69225,4],[69478,4],[70067,4],[70246,4],[70400,4],[70995,4],[71265,4],[71520,4],[72103,4],[72398,4]]}}}],["develop",{"_index":40,"t":{"2":{"position":[[428,12],[501,11],[1040,11],[1700,12],[2743,10],[3726,11],[5449,12],[5649,11],[6437,10],[8776,10],[8841,12],[8929,10],[9724,11],[10004,11],[10701,12]]},"39":{"position":[[479,10],[691,10]]},"42":{"position":[[314,10],[680,11]]},"46":{"position":[[187,10]]},"54":{"position":[[521,10]]},"167":{"position":[[74,10],[608,10],[662,11],[745,11]]},"169":{"position":[[308,10]]},"177":{"position":[[1859,10]]},"198":{"position":[[138,10]]},"216":{"position":[[92,11],[263,12]]},"228":{"position":[[520,10]]},"232":{"position":[[413,13]]},"245":{"position":[[14,10],[465,10]]},"250":{"position":[[396,10]]},"252":{"position":[[217,13]]},"254":{"position":[[154,11]]},"256":{"position":[[248,11]]},"262":{"position":[[165,10],[637,9]]},"265":{"position":[[668,10],[1083,10]]},"270":{"position":[[337,10],[606,10]]},"272":{"position":[[202,13],[308,10],[405,12]]},"275":{"position":[[46,10],[233,10],[368,12]]},"277":{"position":[[444,10]]},"279":{"position":[[208,9]]},"287":{"position":[[42,11]]},"291":{"position":[[294,11],[342,10]]}}}],["dex",{"_index":3209,"t":{"243":{"position":[[180,5],[420,5]]},"299":{"position":[[74,3]]},"301":{"position":[[196,4]]}}}],["differ",{"_index":849,"t":{"42":{"position":[[98,9]]},"46":{"position":[[355,9]]},"94":{"position":[[48976,7]]},"104":{"position":[[47,9]]}}}],["digest",{"_index":1807,"t":{"94":{"position":[[37162,6],[40667,6],[42761,7],[43111,6],[43211,6],[43659,6],[43814,7],[44054,6],[44202,6],[44302,6],[44888,6],[44992,6],[45418,6],[45490,6],[45908,7],[46113,6]]}}}],["digit",{"_index":349,"t":{"2":{"position":[[6070,7],[12613,7]]},"42":{"position":[[72,5],[119,5]]},"94":{"position":[[28928,7]]},"265":{"position":[[348,5],[404,5]]}}}],["diminish",{"_index":550,"t":{"2":{"position":[[11940,9]]}}}],["direct",{"_index":430,"t":{"2":{"position":[[7835,10],[9632,11]]},"94":{"position":[[56433,10],[57525,10],[58578,10]]},"177":{"position":[[1756,6]]},"183":{"position":[[306,6]]},"303":{"position":[[1407,10]]}}}],["direction.\\\\n",{"_index":2142,"t":{"94":{"position":[[53307,13],[55376,13]]}}}],["directli",{"_index":907,"t":{"54":{"position":[[158,8]]},"167":{"position":[[368,8]]},"169":{"position":[[647,8]]},"181":{"position":[[1032,8],[1143,8]]},"185":{"position":[[1412,8]]},"228":{"position":[[661,8]]},"245":{"position":[[607,8]]},"250":{"position":[[479,8]]},"283":{"position":[[84,8]]}}}],["directori",{"_index":2759,"t":{"153":{"position":[[16,9]]}}}],["disabl",{"_index":1388,"t":{"94":{"position":[[14223,7],[41791,7],[42226,7]]},"155":{"position":[[405,7]]}}}],["discord",{"_index":3146,"t":{"222":{"position":[[76,8]]},"232":{"position":[[305,7]]},"252":{"position":[[113,8],[231,8]]}}}],["discreet",{"_index":373,"t":{"2":{"position":[[6680,9]]}}}],["discuss",{"_index":3255,"t":{"254":{"position":[[89,12]]},"287":{"position":[[9,10]]}}}],["display",{"_index":970,"t":{"68":{"position":[[1113,9]]},"70":{"position":[[1136,9]]},"74":{"position":[[620,9]]},"76":{"position":[[1565,9]]},"78":{"position":[[1586,9]]},"80":{"position":[[725,9]]},"98":{"position":[[577,9]]}}}],["disput",{"_index":836,"t":{"39":{"position":[[979,9]]},"283":{"position":[[867,7]]}}}],["disrupt",{"_index":273,"t":{"2":{"position":[[4189,10]]}}}],["dissatisfi",{"_index":424,"t":{"2":{"position":[[7693,12]]},"303":{"position":[[1269,12]]}}}],["dissemin",{"_index":524,"t":{"2":{"position":[[10724,13]]}}}],["distribut",{"_index":2881,"t":{"167":{"position":[[377,11]]}}}],["distribute.\\\\n",{"_index":2032,"t":{"94":{"position":[[49337,14]]}}}],["div",{"_index":2071,"t":{"94":{"position":[[50462,3]]},"185":{"position":[[1113,5],[1295,6],[2321,5],[2462,6]]}}}],["div(denomin",{"_index":2096,"t":{"94":{"position":[[51603,16]]}}}],["div(prod0",{"_index":2098,"t":{"94":{"position":[[51677,10]]}}}],["diverg",{"_index":3271,"t":{"265":{"position":[[365,9]]}}}],["divers",{"_index":3155,"t":{"226":{"position":[[286,9]]},"277":{"position":[[229,7]]}}}],["divid",{"_index":12,"t":{"2":{"position":[[125,6]]},"94":{"position":[[48078,8],[51557,6],[51635,6],[52828,6]]}}}],["divis",{"_index":2016,"t":{"94":{"position":[[47797,8],[47839,8],[48117,8],[48936,8],[48998,8],[50991,8],[52799,8]]}}}],["division.\\\\n",{"_index":2031,"t":{"94":{"position":[[49248,12],[50372,12],[50916,12]]}}}],["divisor",{"_index":2091,"t":{"94":{"position":[[51391,7]]}}}],["dlc",{"_index":737,"t":{"27":{"position":[[258,3]]},"29":{"position":[[475,3]]},"33":{"position":[[6,3],[175,3],[355,3],[638,4]]},"303":{"position":[[72,4]]}}}],["dlc/ln",{"_index":372,"t":{"2":{"position":[[6673,6],[7765,6],[7857,6],[9677,7]]}}}],["dlc|bitvm",{"_index":3363,"t":{"303":{"position":[[476,9],[1341,9],[1429,9]]}}}],["docker",{"_index":3047,"t":{"193":{"position":[[208,6],[309,6]]}}}],["document",{"_index":1684,"t":{"94":{"position":[[29792,10],[30613,13]]},"155":{"position":[[125,13]]},"169":{"position":[[929,8]]},"171":{"position":[[401,14]]},"177":{"position":[[1533,14]]},"187":{"position":[[498,13]]},"193":{"position":[[36,13]]},"198":{"position":[[248,8]]},"262":{"position":[[5,8]]}}}],["document.getelementbyid(\"postresult\").innerhtml",{"_index":2663,"t":{"100":{"position":[[1820,47],[2067,47],[2316,47]]}}}],["doesn't",{"_index":2388,"t":{"94":{"position":[[70270,7]]}}}],["doesn't\\\\n",{"_index":1292,"t":{"94":{"position":[[11117,10]]}}}],["dom/client",{"_index":2966,"t":{"177":{"position":[[2526,12]]}}}],["domain",{"_index":1254,"t":{"94":{"position":[[10027,6],[10160,6],[14110,6],[36576,6],[37015,6],[37262,6],[38322,6],[38454,6],[38917,6],[39160,7],[39858,6]]}}}],["domain.\\\\n",{"_index":1859,"t":{"94":{"position":[[39270,10],[40514,10],[41578,10],[42010,10]]}}}],["domain\\\\n",{"_index":1826,"t":{"94":{"position":[[37776,9]]}}}],["domain_separ",{"_index":1391,"t":{"94":{"position":[[14273,18],[78398,18]]}}}],["domainsepar",{"_index":1971,"t":{"94":{"position":[[45518,17],[45840,16]]}}}],["domainseparator)\\\\n",{"_index":1982,"t":{"94":{"position":[[46055,19]]}}}],["domainseparator[eip",{"_index":1855,"t":{"94":{"position":[[39076,19]]}}}],["don't",{"_index":1169,"t":{"89":{"position":[[634,5]]},"94":{"position":[[12706,5],[53054,5]]}}}],["done",{"_index":851,"t":{"42":{"position":[[162,4]]},"185":{"position":[[256,4]]}}}],["don’t",{"_index":29,"t":{"2":{"position":[[299,5],[11637,5]]}}}],["doth",{"_index":1325,"t":{"94":{"position":[[12101,12],[12148,12]]}}}],["dothingwithpermit",{"_index":1317,"t":{"94":{"position":[[11913,22]]}}}],["doubl",{"_index":2125,"t":{"94":{"position":[[52371,8],[54800,7]]}}}],["down",{"_index":3099,"t":{"209":{"position":[[1170,4]]}}}],["download",{"_index":2748,"t":{"149":{"position":[[0,8]]},"151":{"position":[[141,8]]}}}],["drastic",{"_index":2,"t":{"2":{"position":[[21,12]]}}}],["drive",{"_index":331,"t":{"2":{"position":[[5641,7]]}}}],["drop",{"_index":3098,"t":{"209":{"position":[[1165,4]]}}}],["dual",{"_index":742,"t":{"29":{"position":[[188,4]]}}}],["due",{"_index":2608,"t":{"98":{"position":[[104,3]]},"185":{"position":[[879,3]]},"262":{"position":[[229,3]]}}}],["dure",{"_index":1164,"t":{"89":{"position":[[100,6],[529,6]]},"118":{"position":[[902,6]]},"267":{"position":[[173,6]]},"291":{"position":[[225,6]]}}}],["dx/ux",{"_index":464,"t":{"2":{"position":[[9208,6]]}}}],["dynam",{"_index":762,"t":{"31":{"position":[[331,11]]},"250":{"position":[[584,7]]},"265":{"position":[[683,11]]}}}],["e.g",{"_index":882,"t":{"42":{"position":[[869,5]]},"216":{"position":[[13,6]]}}}],["each",{"_index":2126,"t":{"94":{"position":[[52400,4],[61300,4]]},"193":{"position":[[904,4]]},"232":{"position":[[159,4]]},"289":{"position":[[98,4]]}}}],["earli",{"_index":3176,"t":{"232":{"position":[[44,5]]},"248":{"position":[[51,5]]},"291":{"position":[[474,5]]}}}],["earliest",{"_index":511,"t":{"2":{"position":[[10487,8]]}}}],["eas",{"_index":3239,"t":{"245":{"position":[[493,4]]}}}],["easi",{"_index":137,"t":{"2":{"position":[[1891,5]]}}}],["easier",{"_index":3268,"t":{"262":{"position":[[709,6]]}}}],["easiest",{"_index":1650,"t":{"94":{"position":[[28400,7]]},"209":{"position":[[995,7]]}}}],["easili",{"_index":827,"t":{"39":{"position":[[464,6]]},"228":{"position":[[535,6]]}}}],["east",{"_index":515,"t":{"2":{"position":[[10557,4]]}}}],["ecdsa",{"_index":1662,"t":{"94":{"position":[[28956,7],[29125,5],[32502,6],[33117,6],[33474,6],[35015,6],[40568,6],[42787,7],[43704,6],[44593,6],[45158,6],[45781,6]]}}}],["ecdsa.recover(digest",{"_index":1892,"t":{"94":{"position":[[40854,21]]}}}],["ecdsa.recover(hash",{"_index":2588,"t":{"94":{"position":[[78158,19]]}}}],["ecdsa\\\\n",{"_index":1808,"t":{"94":{"position":[[37193,8]]}}}],["ecdsainvalidsignature();\\\\n",{"_index":1785,"t":{"94":{"position":[[35697,27]]}}}],["ecdsainvalidsignature();\\\\n\\\\n",{"_index":1673,"t":{"94":{"position":[[29317,30]]}}}],["ecdsainvalidsignaturelength(uint256",{"_index":1675,"t":{"94":{"position":[[29414,35]]}}}],["ecdsainvalidsignaturelength(uint256(errorarg));\\\\n",{"_index":1786,"t":{"94":{"position":[[35794,50]]}}}],["ecdsainvalidsignatures(bytes32",{"_index":1680,"t":{"94":{"position":[[29556,30]]}}}],["ecdsainvalidsignatures(errorarg);\\\\n",{"_index":1787,"t":{"94":{"position":[[35909,36]]}}}],["econom",{"_index":475,"t":{"2":{"position":[[9497,8]]},"265":{"position":[[220,10]]}}}],["economi",{"_index":102,"t":{"2":{"position":[[1284,9],[5589,7],[6165,8],[12621,8]]}}}],["ecosystem",{"_index":130,"t":{"2":{"position":[[1746,10],[2186,10],[2225,9],[2295,10],[2724,10],[4120,9],[5532,10],[8794,9],[8967,9],[9247,9],[10035,10],[10214,9],[10311,9],[10975,10],[11533,9],[11594,11],[11833,10],[12008,11],[12396,9],[12535,10]]},"39":{"position":[[514,11]]},"46":{"position":[[244,11],[453,10]]},"54":{"position":[[672,11]]},"167":{"position":[[112,9]]},"169":{"position":[[89,10]]},"226":{"position":[[233,9]]},"262":{"position":[[886,9]]},"275":{"position":[[277,10]]},"277":{"position":[[237,9]]},"281":{"position":[[462,9]]},"291":{"position":[[214,10],[314,9]]}}}],["ecrecov",{"_index":1687,"t":{"94":{"position":[[30004,11],[31022,9],[31622,11],[33762,12]]}}}],["ecrecover(hash",{"_index":1778,"t":{"94":{"position":[[34792,15]]}}}],["edg",{"_index":330,"t":{"2":{"position":[[5625,4]]},"228":{"position":[[289,4]]}}}],["edit",{"_index":2044,"t":{"94":{"position":[[49647,5]]}}}],["effect",{"_index":1581,"t":{"94":{"position":[[24263,7],[24299,7],[77359,12]]},"267":{"position":[[219,14]]},"277":{"position":[[25,9],[387,9]]},"283":{"position":[[899,12]]}}}],["effici",{"_index":701,"t":{"21":{"position":[[376,11]]},"39":{"position":[[1082,9]]},"94":{"position":[[37301,9]]},"262":{"position":[[236,10]]},"265":{"position":[[66,10]]},"277":{"position":[[189,11]]},"281":{"position":[[220,9]]}}}],["eg",{"_index":594,"t":{"5":{"position":[[353,3]]},"306":{"position":[[485,3]]}}}],["eip",{"_index":1258,"t":{"94":{"position":[[10203,3],[33716,3],[36561,3],[37007,3],[43124,3],[44215,3],[44901,3],[45431,3],[45450,4],[45758,3]]},"181":{"position":[[417,3],[1177,3]]},"265":{"position":[[1020,3]]}}}],["eip.\\\\n",{"_index":1394,"t":{"94":{"position":[[14607,7]]}}}],["eip1559",{"_index":871,"t":{"42":{"position":[[632,7]]}}}],["eip712",{"_index":1359,"t":{"94":{"position":[[13251,6],[38104,6],[40490,6],[41571,6],[42003,6],[73265,7]]}}}],["eip712(contractnam",{"_index":2489,"t":{"94":{"position":[[74164,20]]}}}],["eip712domain()\\\\n",{"_index":1261,"t":{"94":{"position":[[10245,17],[41132,17]]}}}],["eip712domainchanged();\\\\n\\\\n",{"_index":1256,"t":{"94":{"position":[[10069,28]]}}}],["eip712}.\\\\n",{"_index":1386,"t":{"94":{"position":[[14193,12]]}}}],["eip\\\\n",{"_index":1364,"t":{"94":{"position":[[13492,6]]}}}],["elev",{"_index":257,"t":{"2":{"position":[[4001,8],[6031,9]]},"295":{"position":[[309,7]]}}}],["elimin",{"_index":458,"t":{"2":{"position":[[9013,11]]},"167":{"position":[[158,11]]}}}],["ellipt",{"_index":1659,"t":{"94":{"position":[[28913,8]]}}}],["elucid",{"_index":229,"t":{"2":{"position":[[3372,10]]}}}],["email",{"_index":3152,"t":{"222":{"position":[[239,6]]},"258":{"position":[[280,6]]}}}],["embed",{"_index":2953,"t":{"177":{"position":[[1644,8],[1818,8]]}}}],["emerg",{"_index":216,"t":{"2":{"position":[[3176,7],[3941,9],[9802,7]]},"39":{"position":[[1121,7],[1247,8]]},"275":{"position":[[9,7]]}}}],["emit",{"_index":1253,"t":{"94":{"position":[[10000,7],[13008,5],[14656,7],[14887,7],[15547,5],[16611,5],[16977,5],[75562,4],[75743,4],[76046,4],[76461,4],[76682,4],[76894,4],[77028,4],[78630,4]]}}}],["employ",{"_index":3279,"t":{"265":{"position":[[1238,8]]}}}],["empti",{"_index":878,"t":{"42":{"position":[[821,5]]}}}],["empty\\\\n",{"_index":1636,"t":{"94":{"position":[[27559,8]]}}}],["enabl",{"_index":231,"t":{"2":{"position":[[3437,8],[8333,7],[8905,6]]},"21":{"position":[[764,8]]},"39":{"position":[[141,7]]},"46":{"position":[[83,8]]},"48":{"position":[[162,6]]},"54":{"position":[[426,8]]},"68":{"position":[[1071,7]]},"70":{"position":[[1094,7]]},"74":{"position":[[578,7]]},"76":{"position":[[1523,7]]},"78":{"position":[[1544,7]]},"80":{"position":[[683,7]]},"87":{"position":[[413,8],[891,7]]},"89":{"position":[[174,8]]},"155":{"position":[[395,6]]},"167":{"position":[[50,6]]},"195":{"position":[[121,7]]},"250":{"position":[[163,8]]},"270":{"position":[[329,7]]},"281":{"position":[[183,6]]},"291":{"position":[[333,8]]},"303":{"position":[[1910,7]]}}}],["enablemsgev",{"_index":2839,"t":{"161":{"position":[[813,15]]}}}],["encod",{"_index":1385,"t":{"94":{"position":[[14139,8],[21072,8],[22036,8],[25269,8],[36528,8],[36645,8],[36779,8],[36842,8],[37131,8],[37499,8],[40482,7],[63477,6],[64626,6],[65058,7],[65432,7],[65671,8]]}}}],["encoding\\\\n",{"_index":1804,"t":{"94":{"position":[[37083,11]]}}}],["encompass",{"_index":427,"t":{"2":{"position":[[7777,9]]},"303":{"position":[[1356,9]]}}}],["encourag",{"_index":3156,"t":{"226":{"position":[[311,11]]}}}],["end",{"_index":955,"t":{"68":{"position":[[166,6]]},"70":{"position":[[239,6]]},"76":{"position":[[186,6]]},"78":{"position":[[195,6]]}}}],["endblock",{"_index":954,"t":{"68":{"position":[[156,9],[955,8]]},"70":{"position":[[229,9],[978,8]]},"74":{"position":[[462,8]]},"76":{"position":[[176,9],[1407,8]]},"78":{"position":[[185,9],[1428,8]]}}}],["endblock=2702578",{"_index":999,"t":{"70":{"position":[[412,17],[705,17]]}}}],["endblock=2928944",{"_index":1024,"t":{"74":{"position":[[250,17]]}}}],["endblock=99999999",{"_index":961,"t":{"68":{"position":[[395,18],[681,18]]}}}],["endblock=999999999",{"_index":1041,"t":{"76":{"position":[[352,19]]},"78":{"position":[[364,19]]}}}],["endeavor",{"_index":535,"t":{"2":{"position":[[11279,8]]}}}],["endpoint",{"_index":585,"t":{"5":{"position":[[209,8]]},"7":{"position":[[239,8]]},"10":{"position":[[237,8]]},"12":{"position":[[866,8]]},"16":{"position":[[277,8]]},"64":{"position":[[170,8]]},"66":{"position":[[236,8]]},"68":{"position":[[433,8],[738,8]]},"70":{"position":[[449,8],[761,8]]},"72":{"position":[[294,8]]},"74":{"position":[[306,8]]},"76":{"position":[[391,8],[586,8],[833,8]]},"78":{"position":[[403,8],[601,8],[851,8]]},"80":{"position":[[203,8],[440,8]]},"92":{"position":[[214,8]]},"94":{"position":[[187,8]]},"96":{"position":[[149,8]]},"104":{"position":[[90,10]]},"306":{"position":[[198,8]]},"308":{"position":[[265,8]]}}}],["endur",{"_index":484,"t":{"2":{"position":[[9814,7]]}}}],["enemi",{"_index":26,"t":{"2":{"position":[[242,5]]}}}],["engag",{"_index":3236,"t":{"245":{"position":[[371,6]]}}}],["engin",{"_index":303,"t":{"2":{"position":[[5122,9]]},"256":{"position":[[40,9]]}}}],["enhanc",{"_index":709,"t":{"21":{"position":[[736,7]]},"39":{"position":[[373,9],[788,8]]},"54":{"position":[[618,8]]},"218":{"position":[[112,8]]},"220":{"position":[[65,8]]},"226":{"position":[[213,7]]},"272":{"position":[[373,12]]},"281":{"position":[[350,9]]},"283":{"position":[[676,8],[737,8]]},"289":{"position":[[121,7]]},"293":{"position":[[322,8]]}}}],["enjoy",{"_index":897,"t":{"48":{"position":[[316,5]]}}}],["enough",{"_index":869,"t":{"42":{"position":[[597,6],[663,7]]},"94":{"position":[[23120,6],[62546,6]]}}}],["enrich",{"_index":3347,"t":{"291":{"position":[[170,9]]},"303":{"position":[[210,9]]}}}],["ensu",{"_index":59,"t":{"2":{"position":[[711,7]]}}}],["ensur",{"_index":703,"t":{"21":{"position":[[450,7]]},"27":{"position":[[176,6]]},"31":{"position":[[71,6]]},"33":{"position":[[39,7]]},"35":{"position":[[761,8]]},"37":{"position":[[576,7]]},"218":{"position":[[188,8]]},"228":{"position":[[899,8]]},"232":{"position":[[188,8]]},"265":{"position":[[515,8],[1286,6]]},"270":{"position":[[593,7]]},"275":{"position":[[201,7]]}}}],["ensure\\\\n",{"_index":1699,"t":{"94":{"position":[[30433,9],[32051,9]]}}}],["enter",{"_index":2637,"t":{"100":{"position":[[720,5]]}}}],["enthusiast",{"_index":518,"t":{"2":{"position":[[10597,11]]},"214":{"position":[[145,12]]}}}],["entir",{"_index":48,"t":{"2":{"position":[[550,6],[1376,6],[6144,6]]},"21":{"position":[[547,6]]},"23":{"position":[[153,6]]},"272":{"position":[[72,6]]}}}],["entri",{"_index":386,"t":{"2":{"position":[[6897,5]]},"23":{"position":[[394,5]]},"94":{"position":[[12688,5]]}}}],["enum",{"_index":1665,"t":{"94":{"position":[[29136,4],[29812,4],[46550,4]]}}}],["environ",{"_index":832,"t":{"39":{"position":[[621,12]]},"141":{"position":[[194,13]]},"173":{"position":[[689,11]]},"193":{"position":[[536,12]]},"195":{"position":[[94,11]]},"209":{"position":[[1151,13],[1533,11]]},"230":{"position":[[107,11]]},"250":{"position":[[634,12]]},"270":{"position":[[652,11]]}}}],["envis",{"_index":255,"t":{"2":{"position":[[3978,8]]}}}],["enzo",{"_index":3225,"t":{"243":{"position":[[512,4]]}}}],["equal(str",{"_index":2435,"t":{"94":{"position":[[72464,12]]}}}],["equal.\\\\n",{"_index":2434,"t":{"94":{"position":[[72439,9]]}}}],["equival",{"_index":283,"t":{"2":{"position":[[4411,10],[4804,10],[8450,10],[11174,10]]},"177":{"position":[[340,10]]},"226":{"position":[[72,10]]},"293":{"position":[[45,10]]},"295":{"position":[[231,10]]},"303":{"position":[[333,10],[1987,10]]}}}],["erc",{"_index":1038,"t":{"76":{"position":[[20,3],[868,3],[932,3],[1013,3]]},"78":{"position":[[20,3],[886,3],[951,3],[1033,3]]},"169":{"position":[[253,3]]},"306":{"position":[[33,3],[326,3]]},"308":{"position":[[34,3],[393,3]]}}}],["erc1967",{"_index":2346,"t":{"94":{"position":[[66745,7],[66805,7]]}}}],["erc20",{"_index":1277,"t":{"94":{"position":[[10747,5],[10963,5],[14574,5],[17566,5],[18081,5]]}}}],["erc20.sol:erc20",{"_index":2638,"t":{"100":{"position":[[746,16]]}}}],["error",{"_index":1464,"t":{"94":{"position":[[18110,5],[18234,5],[23162,5],[23294,5],[23429,5],[24874,6],[29311,5],[29408,5],[29550,5],[29692,6],[29762,5],[29781,6],[29817,6],[29915,5],[32355,6],[33331,6],[35241,6],[35423,5],[35446,7],[35516,6],[35562,6],[35613,6],[35644,6],[35735,6],[35855,6],[46514,5],[60812,5],[63393,5],[63429,5],[63581,5],[70318,5]]},"100":{"position":[[2061,5],[2266,6],[2378,6]]},"102":{"position":[[623,6]]}}}],["error.\\\\n",{"_index":1598,"t":{"94":{"position":[[25072,9],[27930,9],[29892,9]]}}}],["errorarg",{"_index":1729,"t":{"94":{"position":[[32370,9],[33346,9],[35256,9],[35531,9]]}}}],["errorarg);\\\\n",{"_index":1732,"t":{"94":{"position":[[32433,13],[33405,13],[35317,13]]}}}],["errors.\\\\n",{"_index":1557,"t":{"94":{"position":[[23599,10]]}}}],["escap",{"_index":435,"t":{"2":{"position":[[7959,6]]},"303":{"position":[[1537,6],[2305,7]]}}}],["especi",{"_index":95,"t":{"2":{"position":[[1195,11]]},"281":{"position":[[479,10]]}}}],["essenc",{"_index":3301,"t":{"277":{"position":[[260,8]]}}}],["essenti",{"_index":841,"t":{"39":{"position":[[1184,9]]},"216":{"position":[[192,9]]}}}],["establish",{"_index":287,"t":{"2":{"position":[[4611,11],[5601,9]]},"265":{"position":[[620,11]]}}}],["estim",{"_index":858,"t":{"42":{"position":[[377,8]]},"94":{"position":[[54626,10]]},"265":{"position":[[695,8]]}}}],["etc",{"_index":210,"t":{"2":{"position":[[3062,4]]},"39":{"position":[[319,6]]},"89":{"position":[[183,6],[414,4]]},"181":{"position":[[669,5]]},"183":{"position":[[1508,4]]},"185":{"position":[[346,5]]},"245":{"position":[[700,4]]}}}],["etc.\\\\n",{"_index":1460,"t":{"94":{"position":[[17977,7]]}}}],["etf",{"_index":58,"t":{"2":{"position":[[698,4]]},"281":{"position":[[603,5]]}}}],["eth",{"_index":908,"t":{"54":{"position":[[181,3]]},"94":{"position":[[23086,3],[25799,3],[30710,3]]},"139":{"position":[[172,3]]},"161":{"position":[[12,5],[619,7],[687,7]]},"209":{"position":[[3038,4],[3068,4]]}}}],["eth.min",{"_index":2791,"t":{"161":{"position":[[100,11]]}}}],["eth.txpool",{"_index":2798,"t":{"161":{"position":[[194,12]]}}}],["eth_gaspric",{"_index":856,"t":{"42":{"position":[[333,12]]},"265":{"position":[[750,12]]}}}],["eth_gettraceactionbytxhash",{"_index":2734,"t":{"126":{"position":[[8,26]]},"128":{"position":[[132,26]]},"134":{"position":[[8,26]]},"136":{"position":[[192,26]]}}}],["eth_maxpriorityfeeperga",{"_index":857,"t":{"42":{"position":[[349,24]]},"265":{"position":[[766,25]]}}}],["ether",{"_index":1294,"t":{"94":{"position":[[11191,5]]},"179":{"position":[[288,7]]},"181":{"position":[[259,7],[381,6],[643,6],[834,6],[848,9],[1004,6]]},"183":{"position":[[822,6],[836,9],[1363,6],[1377,9]]},"185":{"position":[[93,6],[240,7],[489,6]]},"187":{"position":[[191,6]]},"209":{"position":[[2892,6],[2916,6],[2930,8]]}}}],["ether;\\\\n\\\\n",{"_index":2467,"t":{"94":{"position":[[73677,12]]}}}],["ethereum",{"_index":168,"t":{"2":{"position":[[2325,9],[4724,10],[6780,8],[8958,8],[11546,9]]},"94":{"position":[[33854,8]]},"112":{"position":[[53,8]]},"139":{"position":[[157,8]]},"167":{"position":[[103,8]]},"189":{"position":[[84,8]]},"193":{"position":[[291,8],[666,9]]},"204":{"position":[[116,8]]},"209":{"position":[[2355,8]]},"212":{"position":[[21,8]]},"216":{"position":[[20,8]]},"228":{"position":[[712,8],[800,8]]},"245":{"position":[[158,8],[436,8],[672,8]]},"250":{"position":[[73,8],[451,8]]},"262":{"position":[[36,8],[204,8]]},"270":{"position":[[99,8],[440,9]]},"272":{"position":[[13,9],[234,8]]},"275":{"position":[[288,8]]},"277":{"position":[[201,8]]},"281":{"position":[[294,9]]},"283":{"position":[[821,9]]}}}],["ethereum'",{"_index":3246,"t":{"250":{"position":[[348,10],[608,10]]},"262":{"position":[[751,10]]},"267":{"position":[[13,10]]},"275":{"position":[[266,10]]},"281":{"position":[[723,10]]}}}],["ethereum’",{"_index":501,"t":{"2":{"position":[[10236,11]]}}}],["ethers.j",{"_index":3125,"t":{"209":{"position":[[2836,10]]}}}],["ethers.providers.jsonrpcprovider(\"https://testnet",{"_index":3126,"t":{"209":{"position":[[2960,49]]}}}],["ethers.providers.web3provider(provid",{"_index":2993,"t":{"181":{"position":[[944,39]]}}}],["ethers.utils.parseether('0.001",{"_index":3012,"t":{"185":{"position":[[735,33]]}}}],["etherscan",{"_index":1118,"t":{"83":{"position":[[222,9]]},"85":{"position":[[128,9]]},"87":{"position":[[690,10]]}}}],["even",{"_index":20,"t":{"2":{"position":[[209,4]]}}}],["event",{"_index":422,"t":{"2":{"position":[[7667,7]]},"10":{"position":[[12,5]]},"12":{"position":[[12,5]]},"94":{"position":[[10063,5],[14794,5],[15019,5],[73690,5],[73817,5],[73891,5],[73937,5],[73982,5],[74032,5],[74080,5]]},"281":{"position":[[504,6]]}}}],["event.\\\\n",{"_index":1353,"t":{"94":{"position":[[13028,9],[15566,9],[16631,9],[16996,9]]}}}],["eventu",{"_index":1815,"t":{"94":{"position":[[37411,8]]}}}],["evm",{"_index":378,"t":{"2":{"position":[[6771,4],[8868,3]]},"39":{"position":[[540,3],[661,3],[724,3]]},"42":{"position":[[229,3]]},"48":{"position":[[349,3]]},"94":{"position":[[30016,3],[31634,3],[62630,3]]},"116":{"position":[[229,3]]},"118":{"position":[[583,3],[669,4]]},"124":{"position":[[236,3]]},"167":{"position":[[15,3]]},"181":{"position":[[504,3]]},"185":{"position":[[9,6]]},"204":{"position":[[108,3]]},"212":{"position":[[40,3],[207,3],[327,3]]},"216":{"position":[[0,3]]},"228":{"position":[[648,3]]},"245":{"position":[[150,3],[594,3]]},"250":{"position":[[20,3],[98,5]]},"262":{"position":[[110,3],[344,3],[365,3],[444,3],[762,4]]},"265":{"position":[[492,3]]},"270":{"position":[[0,3],[124,5],[159,3]]},"272":{"position":[[0,3],[44,4],[88,3]]},"275":{"position":[[197,3]]},"291":{"position":[[279,3]]},"303":{"position":[[103,4],[2340,3]]}}}],["evm/cairovm",{"_index":819,"t":{"39":{"position":[[211,12]]}}}],["evmvers",{"_index":1228,"t":{"94":{"position":[[404,13]]},"100":{"position":[[1214,11]]}}}],["evmversion').v",{"_index":2644,"t":{"100":{"position":[[1226,23]]}}}],["evolv",{"_index":843,"t":{"39":{"position":[[1216,8]]}}}],["ex",{"_index":2616,"t":{"98":{"position":[[372,3]]},"100":{"position":[[742,3]]}}}],["exact",{"_index":2081,"t":{"94":{"position":[[51000,5],[52815,5]]}}}],["exampl",{"_index":1172,"t":{"89":{"position":[[688,8],[1186,7],[1255,7],[1309,8],[1657,7]]},"94":{"position":[[66724,7]]},"175":{"position":[[45,8]]},"177":{"position":[[257,8],[2337,7]]},"181":{"position":[[275,8]]},"183":{"position":[[658,7]]},"185":{"position":[[541,7],[1867,7]]},"202":{"position":[[69,8]]},"209":{"position":[[2291,7],[2691,8]]},"237":{"position":[[161,8]]},"239":{"position":[[15,8]]},"303":{"position":[[313,7]]}}}],["example:\\\\n",{"_index":1885,"t":{"94":{"position":[[40623,11],[62741,11]]}}}],["excel",{"_index":463,"t":{"2":{"position":[[9198,9]]}}}],["except",{"_index":1860,"t":{"94":{"position":[[39329,6]]},"270":{"position":[[220,9]]}}}],["exchang",{"_index":905,"t":{"54":{"position":[[61,9],[148,9],[276,9],[510,10]]},"301":{"position":[[145,8],[225,8]]}}}],["execstart=/bin/sh",{"_index":2869,"t":{"165":{"position":[[67,17]]}}}],["execut",{"_index":222,"t":{"2":{"position":[[3279,10],[8635,9]]},"16":{"position":[[426,9]]},"21":{"position":[[95,10]]},"23":{"position":[[222,9],[531,9],[665,9]]},"25":{"position":[[216,9],[403,9],[463,9]]},"31":{"position":[[89,9]]},"39":{"position":[[105,10],[611,9],[797,9]]},"85":{"position":[[311,7]]},"89":{"position":[[1714,7]]},"118":{"position":[[909,10]]},"179":{"position":[[455,9]]},"181":{"position":[[198,9],[1074,10]]},"185":{"position":[[124,7],[356,9],[472,8],[1316,10],[1562,7]]},"187":{"position":[[283,7]]},"212":{"position":[[243,7]]},"265":{"position":[[129,10]]},"303":{"position":[[2192,9]]}}}],["executetxbtc",{"_index":3031,"t":{"185":{"position":[[1910,13],[2133,12]]}}}],["executetxevm",{"_index":3009,"t":{"185":{"position":[[577,12]]}}}],["exhibit",{"_index":3372,"t":{"303":{"position":[[2368,8]]}}}],["exist",{"_index":320,"t":{"2":{"position":[[5370,5],[8534,8],[8949,8]]},"39":{"position":[[715,8],[1018,8]]},"167":{"position":[[94,8]]},"228":{"position":[[556,8]]},"303":{"position":[[2410,8]]}}}],["existence.\\\\n",{"_index":1404,"t":{"94":{"position":[[15149,13]]}}}],["exit",{"_index":387,"t":{"2":{"position":[[6907,4]]}}}],["expand",{"_index":345,"t":{"2":{"position":[[6002,6],[9236,6],[11117,9]]},"54":{"position":[[390,7]]},"94":{"position":[[46669,6]]}}}],["expans",{"_index":536,"t":{"2":{"position":[[11302,9]]},"281":{"position":[[339,10]]}}}],["expect",{"_index":198,"t":{"2":{"position":[[2837,12],[9458,6],[9703,8]]},"94":{"position":[[25138,8],[54936,8],[60779,8]]},"270":{"position":[[278,8]]}}}],["experi",{"_index":291,"t":{"2":{"position":[[4774,11]]},"226":{"position":[[406,11]]},"230":{"position":[[133,10]]},"256":{"position":[[55,10]]},"285":{"position":[[145,10]]},"289":{"position":[[138,10]]},"293":{"position":[[367,10]]}}}],["experiment",{"_index":491,"t":{"2":{"position":[[9923,16]]}}}],["expertis",{"_index":3258,"t":{"256":{"position":[[217,9]]}}}],["explan",{"_index":2675,"t":{"102":{"position":[[562,11]]}}}],["explor",{"_index":910,"t":{"54":{"position":[[536,7]]},"106":{"position":[[82,8]]},"108":{"position":[[77,8]]},"141":{"position":[[0,7],[93,10]]},"143":{"position":[[34,8]]},"145":{"position":[[34,8],[66,8]]},"167":{"position":[[579,9]]},"207":{"position":[[82,8]]},"209":{"position":[[77,8],[2392,9]]},"230":{"position":[[253,7]]},"254":{"position":[[295,7]]},"287":{"position":[[209,7]]}}}],["explos",{"_index":567,"t":{"2":{"position":[[12364,9]]}}}],["export",{"_index":1185,"t":{"89":{"position":[[1153,7]]}}}],["exposur",{"_index":61,"t":{"2":{"position":[[732,8]]}}}],["express",{"_index":1299,"t":{"94":{"position":[[11373,9]]},"279":{"position":[[33,7]]},"281":{"position":[[195,10]]},"303":{"position":[[237,12]]}}}],["extens",{"_index":1279,"t":{"94":{"position":[[10760,9]]},"187":{"position":[[488,9]]},"212":{"position":[[167,9]]},"275":{"position":[[398,9]]},"291":{"position":[[527,10]]}}}],["extensions/ierc20permit.sol\\\\\\\";\\\\nimport",{"_index":1443,"t":{"94":{"position":[[17409,48]]}}}],["extensions\\\\n",{"_index":1273,"t":{"94":{"position":[[10447,13],[41343,13]]}}}],["extern",{"_index":1382,"t":{"94":{"position":[[14045,8],[14292,8],[15192,8],[15338,8],[15627,8],[15965,8],[16696,8],[17075,8],[63060,8],[74685,8],[75692,8],[75861,8],[76166,8],[76563,8],[76769,8],[76974,8],[78417,8],[78608,8]]},"159":{"position":[[83,8]]},"181":{"position":[[229,8]]}}}],["external;\\\\n\\\\n",{"_index":1376,"t":{"94":{"position":[[13712,15]]}}}],["external\\\\n",{"_index":1262,"t":{"94":{"position":[[10263,11]]}}}],["extract",{"_index":77,"t":{"2":{"position":[[916,7]]}}}],["extrem",{"_index":421,"t":{"2":{"position":[[7659,7]]},"303":{"position":[[1236,7]]}}}],["ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn",{"_index":2668,"t":{"102":{"position":[[154,53]]}}}],["f",{"_index":1753,"t":{"94":{"position":[[33845,1]]}}}],["face",{"_index":3159,"t":{"228":{"position":[[164,5]]}}}],["facilit",{"_index":711,"t":{"21":{"position":[[828,12]]},"27":{"position":[[69,12]]},"33":{"position":[[375,10]]},"46":{"position":[[322,10]]},"181":{"position":[[36,11]]},"185":{"position":[[32,11]]},"187":{"position":[[243,10]]},"283":{"position":[[43,11]]},"301":{"position":[[87,10]]}}}],["fact.\\\\n",{"_index":2074,"t":{"94":{"position":[[50544,8]]}}}],["factor",{"_index":84,"t":{"2":{"position":[[995,8]]},"94":{"position":[[51318,6]]}}}],["fail",{"_index":576,"t":{"5":{"position":[[31,6]]},"16":{"position":[[31,6]]},"87":{"position":[[819,4]]},"94":{"position":[[11789,5],[12437,4],[18189,6],[23382,7]]},"102":{"position":[[470,4]]}}}],["failed.\\\\n",{"_index":1463,"t":{"94":{"position":[[18093,10]]}}}],["failedinnercal",{"_index":1597,"t":{"94":{"position":[[25054,17],[27203,18],[27912,17]]}}}],["failedinnercall();\\\\n",{"_index":1590,"t":{"94":{"position":[[24606,21],[28640,21]]}}}],["failedinnercall();\\\\n\\\\n",{"_index":1553,"t":{"94":{"position":[[23435,24]]}}}],["failedinnercall}.\\\\n",{"_index":1646,"t":{"94":{"position":[[28216,21]]}}}],["failur",{"_index":1450,"t":{"94":{"position":[[17597,7],[17716,8]]},"165":{"position":[[183,7]]}}}],["fairli",{"_index":3362,"t":{"303":{"position":[[298,6]]}}}],["fall",{"_index":1628,"t":{"94":{"position":[[27186,8]]}}}],["fallback",{"_index":2272,"t":{"94":{"position":[[62672,8]]}}}],["fallback_sentinel",{"_index":2276,"t":{"94":{"position":[[63299,17],[65286,18],[65884,18]]}}}],["fals",{"_index":1452,"t":{"94":{"position":[[17643,7],[46934,7],[47193,7],[47722,7],[47986,7],[48264,7]]},"161":{"position":[[785,5],[831,5]]},"177":{"position":[[1852,6]]}}}],["false).\\\\n",{"_index":1506,"t":{"94":{"position":[[20983,10],[21947,10]]}}}],["false\\\\n",{"_index":1536,"t":{"94":{"position":[[22519,8]]}}}],["familiar",{"_index":3165,"t":{"228":{"position":[[689,8]]},"245":{"position":[[657,8]]},"262":{"position":[[737,8]]},"275":{"position":[[252,8]]}}}],["faq",{"_index":3106,"t":{"209":{"position":[[1465,5]]}}}],["far",{"_index":165,"t":{"2":{"position":[[2261,3],[12115,4]]},"232":{"position":[[109,3]]}}}],["faster",{"_index":173,"t":{"2":{"position":[[2383,6],[4767,6]]},"226":{"position":[[373,7]]}}}],["faucet",{"_index":2879,"t":{"167":{"position":[[318,8],[361,6],[594,6]]}}}],["feasibl",{"_index":1801,"t":{"94":{"position":[[36722,9]]}}}],["featur",{"_index":3134,"t":{"214":{"position":[[266,8]]},"262":{"position":[[187,7]]},"272":{"position":[[335,9]]},"281":{"position":[[617,8]]}}}],["februari",{"_index":80,"t":{"2":{"position":[[950,9]]}}}],["feder",{"_index":753,"t":{"29":{"position":[[457,10]]},"31":{"position":[[27,10],[230,10],[320,10],[461,10],[670,10]]},"33":{"position":[[547,10]]},"37":{"position":[[474,10]]}}}],["fee",{"_index":94,"t":{"2":{"position":[[1190,4],[11978,4],[12249,3]]},"42":{"position":[[297,3]]},"265":{"position":[[651,3]]},"283":{"position":[[469,5],[527,4],[610,5]]},"291":{"position":[[515,4]]}}}],["feedback",{"_index":3256,"t":{"254":{"position":[[110,8]]}}}],["few",{"_index":308,"t":{"2":{"position":[[5185,4],[12189,3]]},"167":{"position":[[460,3]]}}}],["fidel",{"_index":71,"t":{"2":{"position":[[841,8]]}}}],["field",{"_index":573,"t":{"5":{"position":[[11,5]]},"16":{"position":[[11,5]]},"94":{"position":[[10124,6],[32568,6],[33179,6],[33543,6],[35081,6]]},"185":{"position":[[314,6]]},"193":{"position":[[300,5]]}}}],["fields,\\\\n",{"_index":1265,"t":{"94":{"position":[[10303,10],[41199,10]]}}}],["figur",{"_index":713,"t":{"23":{"position":[[46,6]]}}}],["file",{"_index":1122,"t":{"85":{"position":[[17,4]]},"89":{"position":[[1213,4],[1282,4],[1514,4],[1687,4]]},"94":{"position":[[66178,4]]},"98":{"position":[[234,4],[282,5]]},"100":{"position":[[533,4],[1032,5],[1134,5],[1423,5]]},"177":{"position":[[327,4],[2465,5]]},"209":{"position":[[533,4],[1584,5],[2152,5],[2246,4],[2309,4],[3217,5]]}}}],["fill",{"_index":879,"t":{"42":{"position":[[827,7]]},"167":{"position":[[330,4]]},"200":{"position":[[142,4]]}}}],["filter",{"_index":618,"t":{"10":{"position":[[54,9]]},"12":{"position":[[40,8]]},"76":{"position":[[75,9],[1046,8]]},"78":{"position":[[84,9],[1067,8]]},"116":{"position":[[47,6]]},"124":{"position":[[54,6]]}}}],["final",{"_index":1805,"t":{"94":{"position":[[37113,5],[43653,5],[53037,5],[77625,5]]},"173":{"position":[[480,8]]},"228":{"position":[[442,9]]},"281":{"position":[[842,9]]},"295":{"position":[[146,5]]}}}],["financ",{"_index":3220,"t":{"243":{"position":[[405,7]]}}}],["finance#inform",{"_index":3218,"t":{"243":{"position":[[369,19]]}}}],["finance?borrowed=false&twitter=true&tvl=fals",{"_index":3232,"t":{"243":{"position":[[693,45]]}}}],["financi",{"_index":2887,"t":{"167":{"position":[[786,9]]}}}],["find",{"_index":2906,"t":{"171":{"position":[[29,4],[308,4]]}}}],["fine",{"_index":781,"t":{"33":{"position":[[251,4]]}}}],["first",{"_index":282,"t":{"2":{"position":[[4371,5],[4470,5],[11771,6]]},"33":{"position":[[333,5]]},"94":{"position":[[11329,5],[16445,5],[53940,5],[54485,5],[77265,5],[77378,5],[77501,5],[77636,6]]},"167":{"position":[[287,5]]},"169":{"position":[[38,5]]},"183":{"position":[[83,5]]},"226":{"position":[[16,5],[140,5]]}}}],["firstli",{"_index":2895,"t":{"169":{"position":[[390,8]]}}}],["fit",{"_index":1912,"t":{"94":{"position":[[41748,3],[42183,3],[70278,3]]}}}],["five",{"_index":2967,"t":{"177":{"position":[[2691,4]]}}}],["fix",{"_index":2414,"t":{"94":{"position":[[71600,5],[72135,5]]}}}],["flag",{"_index":2848,"t":{"163":{"position":[[37,6],[685,5]]},"193":{"position":[[828,4]]}}}],["flag.\\\\n",{"_index":2003,"t":{"94":{"position":[[46783,8],[47064,8],[47330,8],[47856,8],[48134,8]]}}}],["flagship",{"_index":2902,"t":{"169":{"position":[[830,8]]}}}],["flatten",{"_index":2631,"t":{"100":{"position":[[454,10]]}}}],["flexibl",{"_index":826,"t":{"39":{"position":[[397,12],[1140,11]]},"54":{"position":[[627,11]]},"226":{"position":[[397,8]]},"250":{"position":[[379,12]]},"293":{"position":[[331,11]]}}}],["flip",{"_index":1767,"t":{"94":{"position":[[34358,4],[51703,4]]}}}],["floor",{"_index":1996,"t":{"94":{"position":[[46569,6]]}}}],["floor(x",{"_index":2035,"t":{"94":{"position":[[49428,7]]}}}],["flourish",{"_index":551,"t":{"2":{"position":[[11988,11]]}}}],["flow",{"_index":3006,"t":{"185":{"position":[[523,5]]}}}],["fluctuat",{"_index":3281,"t":{"267":{"position":[[35,9]]}}}],["focu",{"_index":520,"t":{"2":{"position":[[10653,5],[11098,5]]},"181":{"position":[[290,5]]},"228":{"position":[[25,5]]}}}],["focus",{"_index":519,"t":{"2":{"position":[[10625,7]]},"214":{"position":[[176,7]]},"283":{"position":[[698,8]]}}}],["folder",{"_index":2764,"t":{"153":{"position":[[212,7]]}}}],["follow",{"_index":472,"t":{"2":{"position":[[9403,9]]},"85":{"position":[[39,9]]},"89":{"position":[[1351,9],[1747,8]]},"94":{"position":[[53275,9],[55344,9],[56401,9],[57493,9],[58546,9]]},"149":{"position":[[44,9]]},"153":{"position":[[131,9]]},"171":{"position":[[489,9]]},"173":{"position":[[262,9]]},"175":{"position":[[373,9]]},"177":{"position":[[390,9],[532,9],[805,9]]},"179":{"position":[[267,10]]},"193":{"position":[[13,9]]},"200":{"position":[[122,9]]},"202":{"position":[[316,9]]},"209":{"position":[[1972,9],[2119,9],[2568,9],[2664,9]]},"232":{"position":[[261,9]]},"237":{"position":[[4,9]]},"281":{"position":[[585,9]]}}}],["foo",{"_index":1191,"t":{"89":{"position":[[1416,3]]}}}],["for\\\\n",{"_index":2111,"t":{"94":{"position":[[52119,6]]}}}],["forceapprove(ierc20",{"_index":1494,"t":{"94":{"position":[[20420,19]]}}}],["forceapprove(token",{"_index":1484,"t":{"94":{"position":[[19439,19],[20023,19]]}}}],["foresight",{"_index":569,"t":{"2":{"position":[[12425,10]]}}}],["forg",{"_index":3094,"t":{"209":{"position":[[866,5]]}}}],["fork",{"_index":1816,"t":{"94":{"position":[[37420,4]]},"237":{"position":[[42,4]]},"281":{"position":[[280,6]]}}}],["form",{"_index":217,"t":{"2":{"position":[[3191,4],[3323,5]]},"200":{"position":[[155,4]]}}}],["format",{"_index":607,"t":{"7":{"position":[[23,7]]},"94":{"position":[[13258,9],[13408,7]]},"100":{"position":[[600,6]]},"202":{"position":[[30,6]]}}}],["formerli",{"_index":313,"t":{"2":{"position":[[5304,8]]}}}],["formid",{"_index":323,"t":{"2":{"position":[[5403,10]]}}}],["formula",{"_index":2223,"t":{"94":{"position":[[59985,7]]}}}],["forward",{"_index":813,"t":{"37":{"position":[[422,8]]},"94":{"position":[[23553,10]]}}}],["foster",{"_index":489,"t":{"2":{"position":[[9901,8]]}}}],["found",{"_index":2702,"t":{"118":{"position":[[74,6]]},"187":{"position":[[607,5]]}}}],["foundament",{"_index":3304,"t":{"279":{"position":[[89,12]]}}}],["foundat",{"_index":188,"t":{"2":{"position":[[2665,10],[2956,11],[10350,12]]}}}],["foundri",{"_index":3093,"t":{"209":{"position":[[803,8]]}}}],["four",{"_index":2112,"t":{"94":{"position":[[52129,4]]}}}],["fourth",{"_index":566,"t":{"2":{"position":[[12344,6]]}}}],["framework",{"_index":833,"t":{"39":{"position":[[680,10]]},"277":{"position":[[397,10]]},"291":{"position":[[546,10]]}}}],["franklin",{"_index":69,"t":{"2":{"position":[[821,8]]}}}],["fraud",{"_index":731,"t":{"25":{"position":[[604,5]]},"281":{"position":[[925,6]]},"283":{"position":[[442,6]]}}}],["fraudul",{"_index":3333,"t":{"283":{"position":[[875,10]]}}}],["friendli",{"_index":784,"t":{"33":{"position":[[295,8],[717,8]]}}}],["fromblock",{"_index":671,"t":{"12":{"position":[[1012,9]]}}}],["fromblock=1191962",{"_index":652,"t":{"12":{"position":[[187,18]]}}}],["fromblock=585180",{"_index":623,"t":{"10":{"position":[[194,17]]}}}],["fromus",{"_index":2695,"t":{"116":{"position":[[63,9]]},"124":{"position":[[70,9]]}}}],["frontend",{"_index":818,"t":{"39":{"position":[[172,8],[430,8]]}}}],["frontrun",{"_index":1311,"t":{"94":{"position":[[11680,9],[12473,13]]}}}],["full",{"_index":504,"t":{"2":{"position":[[10280,4],[12560,4]]},"94":{"position":[[49460,4],[53259,4]]},"161":{"position":[[969,4],[1032,6]]},"163":{"position":[[8,4],[368,4],[631,4]]},"171":{"position":[[101,4]]},"193":{"position":[[844,4]]},"262":{"position":[[439,4]]}}}],["fulli",{"_index":1884,"t":{"94":{"position":[[40476,5]]},"270":{"position":[[77,5]]},"295":{"position":[[168,5]]}}}],["func",{"_index":1389,"t":{"94":{"position":[[14241,4],[41809,4],[42244,4]]}}}],["function",{"_index":338,"t":{"2":{"position":[[5862,8]]},"31":{"position":[[681,9]]},"33":{"position":[[339,8],[591,8]]},"35":{"position":[[426,8],[682,8]]},"37":{"position":[[649,10]]},"39":{"position":[[1027,16]]},"92":{"position":[[602,8]]},"94":{"position":[[10236,8],[11904,8],[12139,8],[13268,8],[13574,8],[14014,8],[14264,8],[15169,8],[15302,8],[15582,8],[15914,8],[16647,8],[17012,8],[18527,8],[18914,8],[19281,8],[19692,8],[20411,8],[20832,8],[21132,8],[21796,8],[22210,8],[23001,9],[24339,8],[24675,8],[24766,8],[24795,8],[24911,8],[24943,8],[25025,8],[25443,8],[25859,8],[25896,8],[26391,8],[26769,8],[27269,8],[27946,8],[28244,8],[28992,9],[30087,8],[30828,8],[31705,8],[32230,8],[32677,8],[33207,8],[33571,8],[35109,8],[35482,8],[37871,8],[39907,8],[40142,8],[40443,8],[40906,8],[41123,8],[41618,8],[41832,8],[42050,8],[42267,8],[43730,8],[44619,8],[45184,8],[45807,8],[46798,8],[47079,8],[47345,8],[47871,8],[48149,8],[48376,8],[48541,8],[48746,8],[49099,8],[49707,8],[53327,8],[53829,8],[55396,8],[55731,8],[56501,8],[56845,8],[57593,8],[58062,8],[58646,8],[58996,8],[59514,8],[59683,8],[59909,8],[60214,8],[61012,8],[61219,8],[61682,8],[62333,9],[63044,8],[63629,8],[63971,8],[64390,8],[64715,8],[65139,8],[65741,8],[66603,9],[66947,8],[67096,8],[67726,8],[67985,8],[68244,8],[68503,8],[68761,8],[69032,8],[69301,8],[69568,8],[70481,8],[71075,8],[71350,8],[71623,8],[72240,8],[72455,8],[74453,8],[75645,8],[75782,8],[76103,8],[76518,8],[76724,8],[76934,8],[77065,8],[77761,8],[78265,8],[78389,8],[78502,8]]},"100":{"position":[[1600,8],[2273,8]]},"102":{"position":[[319,8],[630,8]]},"181":{"position":[[86,9]]},"183":{"position":[[1082,8],[1124,8]]},"185":{"position":[[1670,9],[1900,9]]},"202":{"position":[[244,13]]},"237":{"position":[[265,8]]},"270":{"position":[[413,13]]},"272":{"position":[[92,16]]},"277":{"position":[[340,13]]},"287":{"position":[[290,13]]},"301":{"position":[[182,8]]}}}],["functioncal",{"_index":1520,"t":{"94":{"position":[[21371,13],[22475,13],[25631,12],[26301,12],[26677,12]]}}}],["functioncall(address",{"_index":1607,"t":{"94":{"position":[[25452,20]]}}}],["functioncall`],\\\\n",{"_index":1611,"t":{"94":{"position":[[25658,21],[26328,21],[26704,21]]}}}],["functioncallwithvalue(address",{"_index":1615,"t":{"94":{"position":[[25905,29]]}}}],["functioncallwithvalue(target",{"_index":1608,"t":{"94":{"position":[[25544,29]]}}}],["functiondelegatecall(address",{"_index":1623,"t":{"94":{"position":[[26778,28]]}}}],["functionnam",{"_index":988,"t":{"68":{"position":[[1593,15],[1920,15]]}}}],["functions[`abi.decode`].\\\\n",{"_index":1604,"t":{"94":{"position":[[25291,27]]}}}],["functionstaticcall(address",{"_index":1620,"t":{"94":{"position":[[26400,26]]}}}],["fund",{"_index":786,"t":{"33":{"position":[[402,7]]},"54":{"position":[[253,5]]},"94":{"position":[[23825,5]]},"209":{"position":[[3534,4],[3639,6],[3651,7]]},"218":{"position":[[238,6]]}}}],["fundament",{"_index":333,"t":{"2":{"position":[[5741,13]]},"245":{"position":[[36,11]]}}}],["further",{"_index":466,"t":{"2":{"position":[[9257,8]]},"21":{"position":[[728,7]]},"37":{"position":[[504,7]]},"94":{"position":[[49639,7]]},"232":{"position":[[72,7]]}}}],["futur",{"_index":256,"t":{"2":{"position":[[3989,6],[4266,7],[11062,6],[11655,6],[11876,6]]},"33":{"position":[[663,6]]},"39":{"position":[[1051,7]]},"237":{"position":[[639,6]]},"262":{"position":[[538,6]]},"270":{"position":[[564,6]]}}}],["future.\\\\n",{"_index":1356,"t":{"94":{"position":[[13154,10]]}}}],["ga",{"_index":845,"t":{"42":{"position":[[18,3],[390,3]]},"44":{"position":[[34,3]]},"68":{"position":[[1481,6],[1807,6]]},"70":{"position":[[1581,6],[1920,6],[2260,6]]},"72":{"position":[[802,6],[1614,6]]},"74":{"position":[[1060,6],[7325,6]]},"76":{"position":[[2227,6],[2862,6]]},"78":{"position":[[2356,6],[3099,6]]},"94":{"position":[[23578,3],[23680,3],[23757,3],[47444,3]]},"118":{"position":[[674,4],[690,3],[749,3]]},"120":{"position":[[618,6],[1000,6],[1335,6]]},"262":{"position":[[82,3],[213,3],[332,3]]},"265":{"position":[[270,3],[310,3],[717,3]]},"267":{"position":[[24,3],[133,3]]},"291":{"position":[[511,3]]},"299":{"position":[[19,3]]},"301":{"position":[[23,3]]}}}],["gain",{"_index":364,"t":{"2":{"position":[[6404,7]]}}}],["game",{"_index":115,"t":{"2":{"position":[[1526,6],[6325,6],[7797,4]]},"303":{"position":[[1376,4]]}}}],["gap",{"_index":896,"t":{"48":{"position":[[272,3]]}}}],["gas_us",{"_index":2706,"t":{"118":{"position":[[718,9]]},"120":{"position":[[633,11],[1015,11],[1350,11]]}}}],["gasceil",{"_index":2794,"t":{"161":{"position":[[132,7]]}}}],["gasfloor",{"_index":2792,"t":{"161":{"position":[[112,8]]}}}],["gasless",{"_index":3013,"t":{"185":{"position":[[871,7]]}}}],["gaspric",{"_index":641,"t":{"10":{"position":[[1088,11]]},"12":{"position":[[1887,11]]},"42":{"position":[[524,8]]},"68":{"position":[[1497,11],[1824,11]]},"76":{"position":[[2244,11],[2879,11]]},"78":{"position":[[2373,11],[3116,11]]},"161":{"position":[[151,8]]},"265":{"position":[[894,8]]}}}],["gasus",{"_index":643,"t":{"10":{"position":[[1114,10]]},"12":{"position":[[1912,10]]},"68":{"position":[[1547,10],[1874,10]]},"70":{"position":[[1622,10],[1961,10],[2301,10]]},"72":{"position":[[1314,10],[1926,10]]},"74":{"position":[[7029,10],[15934,10]]},"76":{"position":[[2269,10],[2904,10]]},"78":{"position":[[2398,10],[3141,10]]}}}],["gcmode",{"_index":2864,"t":{"163":{"position":[[377,6],[640,6]]},"193":{"position":[[851,6]]}}}],["gener",{"_index":719,"t":{"23":{"position":[[561,10]]},"25":{"position":[[595,8]]},"39":{"position":[[919,10]]},"94":{"position":[[11851,9],[13838,9],[34081,8],[34178,9],[34421,9],[36662,7],[42859,10],[66200,9]]},"118":{"position":[[289,9]]},"169":{"position":[[536,9]]},"185":{"position":[[192,9]]},"209":{"position":[[3579,8]]}}}],["generation:\\\\n",{"_index":1705,"t":{"94":{"position":[[30641,14]]}}}],["get",{"_index":558,"t":{"2":{"position":[[12217,4]]},"25":{"position":[[323,7]]},"200":{"position":[[7,7]]}}}],["getaddressslot(bytes32",{"_index":2365,"t":{"94":{"position":[[67735,22]]}}}],["getbooleanslot(bytes32",{"_index":2368,"t":{"94":{"position":[[67994,22]]}}}],["getbytes32slot(bytes32",{"_index":2369,"t":{"94":{"position":[[68253,22]]}}}],["getbytesslot(byt",{"_index":2378,"t":{"94":{"position":[[69577,18]]}}}],["getbytesslot(bytes32",{"_index":2377,"t":{"94":{"position":[[69310,20]]}}}],["geth",{"_index":2762,"t":{"153":{"position":[[155,4]]},"163":{"position":[[49,4],[62,4]]}}}],["geth.ipc",{"_index":2820,"t":{"161":{"position":[[515,10]]}}}],["getjson('https://api.btrscan.com/scan/api?module=contract&action=getabi&address=0xc9121e476155ebf0b794b7b351808af3787e727d",{"_index":1214,"t":{"92":{"position":[[475,126]]}}}],["getstringslot(bytes32",{"_index":2371,"t":{"94":{"position":[[68770,21]]}}}],["getstringslot(str",{"_index":2375,"t":{"94":{"position":[[69041,20]]}}}],["getuint256slot(bytes32",{"_index":2370,"t":{"94":{"position":[[68512,22]]}}}],["git",{"_index":2749,"t":{"149":{"position":[[54,3],[67,3]]}}}],["githhub",{"_index":3254,"t":{"252":{"position":[[454,8]]}}}],["github",{"_index":3037,"t":{"187":{"position":[[448,6]]},"189":{"position":[[134,6]]},"222":{"position":[[163,7]]},"258":{"position":[[204,7]]}}}],["give",{"_index":88,"t":{"2":{"position":[[1101,5]]},"94":{"position":[[52907,4],[57967,5]]}}}],["given",{"_index":937,"t":{"64":{"position":[[29,5]]},"94":{"position":[[12851,5],[18780,5],[29094,5],[40336,5],[55713,5],[56483,5],[56827,5],[57575,5],[57923,5],[58628,5]]}}}],["glad",{"_index":3174,"t":{"230":{"position":[[83,4]]}}}],["global",{"_index":86,"t":{"2":{"position":[[1016,6],[1270,6]]},"94":{"position":[[25222,6]]}}}],["globalqueu",{"_index":2810,"t":{"161":{"position":[[371,11]]}}}],["globalslot",{"_index":2807,"t":{"161":{"position":[[333,11]]}}}],["go",{"_index":1561,"t":{"94":{"position":[[23740,2]]},"167":{"position":[[301,5]]},"209":{"position":[[1552,2]]}}}],["goal",{"_index":324,"t":{"2":{"position":[[5462,6]]}}}],["goals—bitcoin",{"_index":3352,"t":{"295":{"position":[[217,13]]}}}],["golang",{"_index":2754,"t":{"151":{"position":[[46,6],[101,6]]}}}],["gold",{"_index":350,"t":{"2":{"position":[[6078,4]]}}}],["good",{"_index":2175,"t":{"94":{"position":[[54480,4]]}}}],["gpl",{"_index":2441,"t":{"94":{"position":[[72717,3]]}}}],["grain",{"_index":782,"t":{"33":{"position":[[256,7]]}}}],["graph",{"_index":3040,"t":{"189":{"position":[[0,5]]},"191":{"position":[[4,5]]},"193":{"position":[[151,5],[385,5],[588,5],[637,5],[784,5]]},"195":{"position":[[44,5],[72,5],[115,5]]},"200":{"position":[[217,5]]},"202":{"position":[[488,5]]}}}],["graphprotocol/graph",{"_index":3052,"t":{"193":{"position":[[404,19]]}}}],["graphql",{"_index":3043,"t":{"189":{"position":[[108,8]]},"198":{"position":[[112,7]]}}}],["graphqlvirtualhost",{"_index":2833,"t":{"161":{"position":[[710,19]]}}}],["grayscal",{"_index":66,"t":{"2":{"position":[[796,10]]}}}],["groth16",{"_index":824,"t":{"39":{"position":[[302,9]]}}}],["ground",{"_index":3244,"t":{"250":{"position":[[281,6]]}}}],["groundbreak",{"_index":127,"t":{"2":{"position":[[1685,14]]}}}],["group",{"_index":517,"t":{"2":{"position":[[10588,5]]},"252":{"position":[[105,7]]}}}],["group’",{"_index":315,"t":{"2":{"position":[[5329,7]]}}}],["grow",{"_index":3316,"t":{"281":{"position":[[472,6]]}}}],["growth",{"_index":163,"t":{"2":{"position":[[2164,6],[12374,6]]}}}],["gt(remaind",{"_index":2088,"t":{"94":{"position":[[51248,13]]}}}],["guarante",{"_index":293,"t":{"2":{"position":[[4824,10]]},"94":{"position":[[49195,9],[52972,9],[61430,10]]}}}],["guess",{"_index":2157,"t":{"94":{"position":[[53946,6]]}}}],["guid",{"_index":2619,"t":{"98":{"position":[[448,4],[501,4]]},"100":{"position":[[1703,4],[1954,4],[2004,4]]},"102":{"position":[[148,5],[240,4]]},"104":{"position":[[15,5]]},"147":{"position":[[5,5]]},"169":{"position":[[992,5]]},"171":{"position":[[189,5]]},"187":{"position":[[18,6],[421,6]]},"198":{"position":[[262,5]]},"230":{"position":[[206,5]]}}}],["guidstatus').html",{"_index":2676,"t":{"102":{"position":[[574,25]]}}}],["gwei",{"_index":864,"t":{"42":{"position":[[487,4],[519,4],[562,4]]},"265":{"position":[[854,4],[911,4],[973,4]]}}}],["h",{"_index":2849,"t":{"163":{"position":[[68,1]]}}}],["hacker'",{"_index":2152,"t":{"94":{"position":[[53781,12],[60007,12]]}}}],["hail",{"_index":304,"t":{"2":{"position":[[5132,7]]}}}],["half",{"_index":1678,"t":{"94":{"position":[[29529,4],[30160,4],[31778,4],[34138,4]]}}}],["halv",{"_index":3,"t":{"2":{"position":[[50,7],[12351,8]]},"281":{"position":[[524,7]]}}}],["hand",{"_index":3000,"t":{"183":{"position":[[975,5]]}}}],["handl",{"_index":700,"t":{"21":{"position":[[349,8],[587,8]]},"23":{"position":[[172,9]]},"94":{"position":[[50334,6]]},"185":{"position":[[1605,6]]},"214":{"position":[[279,8]]},"281":{"position":[[386,6]]},"283":{"position":[[773,6]]}}}],["har",{"_index":530,"t":{"2":{"position":[[11025,10],[11970,7]]}}}],["hardfork(which",{"_index":3308,"t":{"279":{"position":[[168,14]]}}}],["hardhat",{"_index":1112,"t":{"83":{"position":[[31,7],[49,7],[75,7],[171,7],[214,7],[311,7]]},"85":{"position":[[78,7],[120,7],[290,10]]},"87":{"position":[[754,7]]},"89":{"position":[[701,7],[1760,7]]},"209":{"position":[[497,8],[518,7],[3104,7],[3166,8]]},"228":{"position":[[734,8]]},"245":{"position":[[691,8]]}}}],["hardhat.config.t",{"_index":3089,"t":{"209":{"position":[[538,17]]}}}],["hardhatuserconfig",{"_index":3090,"t":{"209":{"position":[[615,17]]}}}],["hardwar",{"_index":3172,"t":{"228":{"position":[[1096,8]]}}}],["hash",{"_index":690,"t":{"16":{"position":[[408,4]]},"68":{"position":[[1334,7],[1676,7]]},"70":{"position":[[1358,7],[1697,7],[2037,7]]},"72":{"position":[[425,4],[579,7],[1391,7]]},"74":{"position":[[837,7],[7102,7]]},"76":{"position":[[1786,7],[2420,7]]},"78":{"position":[[1807,7],[2550,7]]},"94":{"position":[[29645,6],[29660,8],[30234,6],[30267,4],[30406,6],[30468,4],[30856,5],[31504,6],[31519,8],[31852,6],[31885,4],[32024,6],[32086,4],[32255,5],[32705,5],[33232,5],[35134,5],[36468,7],[36599,4],[36890,4],[40464,4],[40537,4],[42732,4],[42872,4],[43332,7],[43381,4],[43552,7],[44435,7],[44484,4],[45124,7],[45605,7],[45647,4],[78098,4]]},"114":{"position":[[57,4]]},"116":{"position":[[16,4]]},"118":{"position":[[115,4],[168,4]]},"130":{"position":[[47,5]]},"132":{"position":[[17,4]]},"185":{"position":[[1131,5],[2206,4],[2339,5]]}}}],["hash,\\\\n",{"_index":1751,"t":{"94":{"position":[[33603,8]]}}}],["hashed.\\\\n",{"_index":1943,"t":{"94":{"position":[[43682,10]]}}}],["hashstruct[hash",{"_index":1883,"t":{"94":{"position":[[40406,17]]}}}],["have\\\\n",{"_index":1307,"t":{"94":{"position":[[11599,7],[54154,7]]}}}],["hdwalletprovid",{"_index":3110,"t":{"209":{"position":[[1630,17],[1699,16]]}}}],["hdwalletprovider(process.env.private_key",{"_index":3114,"t":{"209":{"position":[[1823,41]]}}}],["head",{"_index":318,"t":{"2":{"position":[[5347,5]]},"171":{"position":[[369,4]]},"173":{"position":[[281,4]]},"177":{"position":[[1501,4]]},"228":{"position":[[259,4]]}}}],["header",{"_index":795,"t":{"35":{"position":[[244,6],[357,6]]}}}],["help",{"_index":2343,"t":{"94":{"position":[[66506,5]]},"155":{"position":[[86,4]]},"163":{"position":[[20,4],[54,4]]},"283":{"position":[[586,4]]}}}],["henri",{"_index":2149,"t":{"94":{"position":[[53758,5]]}}}],["hensel'",{"_index":2120,"t":{"94":{"position":[[52302,8]]}}}],["herald",{"_index":3243,"t":{"250":{"position":[[104,7]]}}}],["here",{"_index":1513,"t":{"94":{"position":[[21246,5],[22343,5],[22489,4],[32941,4]]},"106":{"position":[[352,4]]},"108":{"position":[[319,4]]},"143":{"position":[[43,5]]},"145":{"position":[[43,5]]},"167":{"position":[[351,4]]},"171":{"position":[[330,5]]},"187":{"position":[[613,5]]},"207":{"position":[[352,4]]},"209":{"position":[[319,4],[436,4],[3335,5]]},"237":{"position":[[703,5]]}}}],["here'",{"_index":1171,"t":{"89":{"position":[[678,6]]}}}],["here.\\\\n",{"_index":1352,"t":{"94":{"position":[[12992,8],[61532,8]]}}}],["hex",{"_index":2208,"t":{"94":{"position":[[57996,3],[58041,3]]}}}],["hex\\\\\\\"0f",{"_index":1901,"t":{"94":{"position":[[41379,14]]}}}],["hex\\\\\\\"19_01\\\\\\\")\\\\n",{"_index":1979,"t":{"94":{"position":[[46011,20]]}}}],["hex_digit",{"_index":2384,"t":{"94":{"position":[[70145,10]]}}}],["hex_digits))\\\\n",{"_index":2403,"t":{"94":{"position":[[70887,15]]}}}],["hex_digits[localvalu",{"_index":2423,"t":{"94":{"position":[[71915,21]]}}}],["hexadecim",{"_index":2410,"t":{"94":{"position":[[71313,11],[71568,11]]}}}],["hexadecimal\\\\n",{"_index":2429,"t":{"94":{"position":[[72198,14]]}}}],["high",{"_index":206,"t":{"2":{"position":[[3035,4],[3796,4]]},"29":{"position":[[87,4]]},"94":{"position":[[20800,4],[21764,4],[53080,4]]},"228":{"position":[[910,4]]},"262":{"position":[[298,4]]},"267":{"position":[[191,4]]}}}],["highest",{"_index":3350,"t":{"293":{"position":[[279,7]]}}}],["histor",{"_index":564,"t":{"2":{"position":[[12311,10]]}}}],["histori",{"_index":482,"t":{"2":{"position":[[9765,7]]}}}],["hk.1611",{"_index":902,"t":{"50":{"position":[[110,10]]}}}],["hold",{"_index":1293,"t":{"94":{"position":[[11186,4]]}}}],["holder",{"_index":354,"t":{"2":{"position":[[6186,8]]},"94":{"position":[[11102,6]]}}}],["holder\\\\n",{"_index":1664,"t":{"94":{"position":[[29057,9]]}}}],["homestead",{"_index":2646,"t":{"100":{"position":[[1286,10]]}}}],["honest",{"_index":768,"t":{"31":{"position":[[605,6]]}}}],["hook",{"_index":2977,"t":{"179":{"position":[[355,5]]},"181":{"position":[[120,5],[606,5]]},"183":{"position":[[590,5],[1113,5]]},"185":{"position":[[1653,5]]}}}],["host",{"_index":3122,"t":{"209":{"position":[[2436,5]]}}}],["host=https://testnet",{"_index":3117,"t":{"209":{"position":[[2021,20]]}}}],["hour",{"_index":2886,"t":{"167":{"position":[[735,5]]}}}],["href={`https://live.blockcypher.com/btc",{"_index":3033,"t":{"185":{"position":[[2348,39]]}}}],["href={`https://testnet",{"_index":3021,"t":{"185":{"position":[[1140,22]]}}}],["htmlelement).rend",{"_index":2969,"t":{"177":{"position":[[2986,20]]}}}],["http",{"_index":2606,"t":{"98":{"position":[[94,4],[145,4]]}}}],["httpcor",{"_index":2825,"t":{"161":{"position":[[563,8]]}}}],["httphost",{"_index":2821,"t":{"161":{"position":[[526,8]]}}}],["httpmodul",{"_index":2827,"t":{"161":{"position":[[605,11]]}}}],["httpport",{"_index":2823,"t":{"161":{"position":[[547,8]]}}}],["https://api",{"_index":934,"t":{"62":{"position":[[61,11]]},"87":{"position":[[1089,12]]},"100":{"position":[[815,11],[1527,11]]},"102":{"position":[[67,12]]}}}],["https://api.btrscan.com/scan/api",{"_index":580,"t":{"5":{"position":[[113,32]]},"7":{"position":[[120,32]]},"10":{"position":[[80,32]]},"12":{"position":[[76,32]]},"16":{"position":[[113,32]]},"62":{"position":[[20,32]]},"64":{"position":[[44,32]]},"66":{"position":[[62,32]]},"68":{"position":[[265,32],[551,32]]},"70":{"position":[[274,32],[567,32]]},"72":{"position":[[138,32]]},"74":{"position":[[164,32]]},"76":{"position":[[221,32],[422,32],[617,32]]},"78":{"position":[[230,32],[434,32],[632,32]]},"80":{"position":[[52,32],[321,32]]},"87":{"position":[[1237,35]]},"92":{"position":[[88,32]]},"94":{"position":[[54,32]]},"96":{"position":[[0,32]]},"306":{"position":[[62,32]]},"308":{"position":[[62,32]]}}}],["https://app.avalonfinance.xyz",{"_index":3216,"t":{"243":{"position":[[300,30]]}}}],["https://app.enzo.fin",{"_index":3226,"t":{"243":{"position":[[525,25]]}}}],["https://bifrost.bfno.de/{apikey",{"_index":3083,"t":{"202":{"position":[[508,32]]}}}],["https://bitcow.xyz",{"_index":3222,"t":{"243":{"position":[[426,19]]}}}],["https://bitlay",{"_index":2693,"t":{"110":{"position":[[32,16]]}}}],["https://consensys.net/diligence/blog/2019/09/stop",{"_index":1570,"t":{"94":{"position":[[23899,49]]}}}],["https://cs.stackexchange.com/q/138556/92363.\\\\n\\\\n",{"_index":2093,"t":{"94":{"position":[[51438,50]]}}}],["https://dashboard.particle.network",{"_index":2973,"t":{"177":{"position":[[3168,34]]}}}],["https://defillama.com/protocol/avalon",{"_index":3217,"t":{"243":{"position":[[331,37]]}}}],["https://defillama.com/protocol/bitcow#inform",{"_index":3223,"t":{"243":{"position":[[446,49]]}}}],["https://defillama.com/protocol/bitsmiley#inform",{"_index":3205,"t":{"243":{"position":[[97,52]]}}}],["https://defillama.com/protocol/enzo#inform",{"_index":3227,"t":{"243":{"position":[[551,47]]}}}],["https://defillama.com/protocol/macaron",{"_index":3211,"t":{"243":{"position":[[225,38]]}}}],["https://defillama.com/protocol/trustin",{"_index":3231,"t":{"243":{"position":[[654,38]]}}}],["https://discord.com/invite/ggsjnyd8nj",{"_index":3147,"t":{"222":{"position":[[85,37]]},"252":{"position":[[240,37]]}}}],["https://docs.ethers.io/v5/api/signer/#sign",{"_index":1708,"t":{"94":{"position":[[30754,44]]}}}],["https://docs.llama.fi/list",{"_index":3199,"t":{"241":{"position":[[0,26]]}}}],["https://docs.metamask.io/guide/sign",{"_index":1823,"t":{"94":{"position":[[37572,38]]}}}],["https://docs.soliditylang.org/en/latest/control",{"_index":2075,"t":{"94":{"position":[[50560,47]]}}}],["https://eips.ethereum.org/eips/eip",{"_index":1283,"t":{"94":{"position":[[10835,34],[13429,34],[23617,34],[32601,34],[36402,34],[39023,34],[40353,34],[42916,34],[42968,34],[45671,34]]}}}],["https://eth.wiki/json",{"_index":1936,"t":{"94":{"position":[[43408,21],[44511,21]]}}}],["https://ethereum.github.io/yellowpaper/paper.pdf",{"_index":1755,"t":{"94":{"position":[[33876,51]]}}}],["https://github.com/bitlay",{"_index":2751,"t":{"149":{"position":[[77,27]]},"222":{"position":[[171,27]]},"252":{"position":[[463,27]]},"258":{"position":[[212,27]]}}}],["https://github.com/defillama/defillama",{"_index":3185,"t":{"235":{"position":[[110,38]]},"237":{"position":[[59,38],[730,38]]},"239":{"position":[[24,38]]}}}],["https://github.com/ethereum/eips/issues/20#issuecom",{"_index":1433,"t":{"94":{"position":[[16535,55]]}}}],["https://github.com/openzeppelin/openzeppelin",{"_index":2014,"t":{"94":{"position":[[47577,44]]}}}],["https://go.dev/dl",{"_index":2756,"t":{"151":{"position":[[116,20]]}}}],["https://hardhat.org/hardhat",{"_index":1119,"t":{"83":{"position":[[252,27]]}}}],["https://medium.com/@bitlay",{"_index":3253,"t":{"252":{"position":[[425,28]]}}}],["https://rpc.ankr.com/bitlay",{"_index":2682,"t":{"106":{"position":[[187,29]]},"207":{"position":[[187,29]]}}}],["https://rpc.bitlay",{"_index":2680,"t":{"106":{"position":[[157,20]]},"207":{"position":[[157,20]]}}}],["https://rpc.bitlayer.org",{"_index":1150,"t":{"87":{"position":[[597,27]]},"106":{"position":[[131,25]]},"207":{"position":[[131,25]]}}}],["https://solidity.readthedocs.io/en/latest/unit",{"_index":1601,"t":{"94":{"position":[[25170,47]]}}}],["https://solidity.readthedocs.io/en/v0.8.20/secur",{"_index":1579,"t":{"94":{"position":[[24176,51]]}}}],["https://t.me/bitlayeroffici",{"_index":3149,"t":{"222":{"position":[[133,29]]},"252":{"position":[[387,29]]}}}],["https://testnet",{"_index":1145,"t":{"87":{"position":[[482,16]]},"108":{"position":[[86,15],[135,15]]},"209":{"position":[[86,15],[135,15],[670,16],[1865,16],[2402,15],[2442,15],[3439,16]]}}}],["https://testnet.btrscan.com",{"_index":1161,"t":{"87":{"position":[[1145,30]]}}}],["https://twitter.com/bitlayerlab",{"_index":3145,"t":{"222":{"position":[[43,32]]},"252":{"position":[[287,32]]},"258":{"position":[[171,32]]}}}],["https://web3js.readthedocs.io/en/v1.3.4/web3",{"_index":1706,"t":{"94":{"position":[[30665,44]]}}}],["https://www.bitlayer.org/bridg",{"_index":886,"t":{"44":{"position":[[57,31]]}}}],["https://www.bitlayer.org/faucet",{"_index":2882,"t":{"167":{"position":[[414,31]]}}}],["https://www.bitlayer.org/ga",{"_index":887,"t":{"44":{"position":[[95,28]]}}}],["https://www.bitsmiley.io/app/alphanet",{"_index":3204,"t":{"243":{"position":[[59,37]]}}}],["https://www.btrscan.com",{"_index":1162,"t":{"87":{"position":[[1285,26]]},"106":{"position":[[91,23]]},"207":{"position":[[91,23]]}}}],["https://www.linkedin.com/company/bitlayerlab",{"_index":3252,"t":{"252":{"position":[[330,46]]}}}],["https://www.macaron.xyz/#/swap?lang=en",{"_index":3210,"t":{"243":{"position":[[186,38]]}}}],["https://www.macaron.xyz/#/swapl",{"_index":3355,"t":{"299":{"position":[[136,31]]},"301":{"position":[[278,31]]}}}],["https://www.trustin.com",{"_index":3230,"t":{"243":{"position":[[629,24]]}}}],["https://xn",{"_index":2042,"t":{"94":{"position":[[49600,11]]}}}],["httpvirtualhost",{"_index":2826,"t":{"161":{"position":[[580,16]]}}}],["hu",{"_index":272,"t":{"2":{"position":[[4183,3]]}}}],["hundr",{"_index":295,"t":{"2":{"position":[[4900,8]]}}}],["hungri",{"_index":193,"t":{"2":{"position":[[2761,6]]}}}],["huobi",{"_index":305,"t":{"2":{"position":[[5145,6],[5323,5]]},"256":{"position":[[171,6]]}}}],["i.",{"_index":1502,"t":{"94":{"position":[[20816,5],[21780,5],[39168,4]]}}}],["id",{"_index":1812,"t":{"94":{"position":[[37368,2],[38387,2],[38484,2]]},"106":{"position":[[52,2]]},"108":{"position":[[47,2]]},"120":{"position":[[190,5]]},"173":{"position":[[533,3],[557,3]]},"177":{"position":[[1152,3]]},"207":{"position":[[52,2]]},"209":{"position":[[47,2],[954,4],[2475,3]]}}}],["id\":1",{"_index":2715,"t":{"120":{"position":[[169,8]]},"128":{"position":[[112,8]]},"136":{"position":[[172,8]]}}}],["ideal",{"_index":3138,"t":{"216":{"position":[[240,5]]}}}],["ideat",{"_index":471,"t":{"2":{"position":[[9380,8]]}}}],["ident",{"_index":342,"t":{"2":{"position":[[5935,8]]}}}],["identifi",{"_index":1245,"t":{"94":{"position":[[9828,11],[10573,11],[14417,11],[17201,11],[22852,11],[28767,11],[36052,11],[42506,11],[46243,11],[59208,11],[60485,11],[61972,11],[63226,10],[66078,11],[69830,11],[72705,11]]},"281":{"position":[[906,8]]}}}],["idletimeout",{"_index":2844,"t":{"161":{"position":[[910,11]]}}}],["ierc",{"_index":1897,"t":{"94":{"position":[[41101,5]]}}}],["ierc20",{"_index":1288,"t":{"94":{"position":[[10984,7],[11074,7],[12923,7],[14630,6],[17343,8],[17860,8]]}}}],["ierc20(tokenaddress).balanceof(address(this)),\\\\\\\"token_not_enough\\\\\\\");\\\\n",{"_index":2536,"t":{"94":{"position":[[75903,75]]}}}],["ierc20.sol\\\\\\\";\\\\nimport",{"_index":1442,"t":{"94":{"position":[[17357,31]]}}}],["ierc20permit",{"_index":1344,"t":{"94":{"position":[[12746,12],[17389,14]]}}}],["ierc20permit(tokenaddress).permit(approv",{"_index":2517,"t":{"94":{"position":[[75087,43]]}}}],["ierc5267",{"_index":1251,"t":{"94":{"position":[[9965,8],[36328,10],[38114,8]]}}}],["if\\\\n",{"_index":1596,"t":{"94":{"position":[[24969,5],[62523,5]]}}}],["illustr",{"_index":712,"t":{"23":{"position":[[27,11]]}}}],["imag",{"_index":3051,"t":{"193":{"position":[[397,6]]}}}],["imit",{"_index":1501,"t":{"94":{"position":[[20780,8],[21744,8]]}}}],["immut",{"_index":1829,"t":{"94":{"position":[[37926,9],[38345,9],[38515,9],[38568,9],[38613,9],[38658,9],[38700,9],[38752,9],[38792,9],[41651,9],[42086,9],[62429,9],[62855,9]]}}}],["immutable\\\\n",{"_index":1834,"t":{"94":{"position":[[38068,12]]}}}],["impact",{"_index":418,"t":{"2":{"position":[[7599,6]]},"303":{"position":[[1176,6]]}}}],["implement",{"_index":223,"t":{"2":{"position":[[3294,13],[6491,15],[10382,14],[10803,14]]},"35":{"position":[[73,9]]},"46":{"position":[[303,15]]},"94":{"position":[[9635,17],[21328,12],[22425,12],[36688,14],[36765,9],[36814,9],[36992,10],[37240,14],[37469,10],[37532,11],[37805,14],[66753,14]]},"171":{"position":[[439,12]]},"177":{"position":[[996,14],[3613,9]]},"183":{"position":[[25,11]]},"187":{"position":[[525,14]]},"293":{"position":[[63,9]]},"295":{"position":[[29,9]]}}}],["implic",{"_index":3267,"t":{"262":{"position":[[647,12],[810,12]]}}}],["implicitli",{"_index":2580,"t":{"94":{"position":[[77721,10]]}}}],["import",{"_index":537,"t":{"2":{"position":[[11423,11]]},"94":{"position":[[11268,9],[12896,10],[16199,10],[24002,10],[30223,10],[31841,10],[61500,9]]},"98":{"position":[[175,9],[260,9]]},"177":{"position":[[379,6],[643,9],[2196,10],[2471,6],[2498,6],[2539,6],[2795,6],[2906,6]]},"181":{"position":[[711,6],[825,6]]},"183":{"position":[[699,6],[813,6],[846,6],[1243,6],[1354,6],[1387,6]]},"185":{"position":[[1924,6],[2035,6]]},"209":{"position":[[2604,6],[2907,6]]},"265":{"position":[[253,10]]},"281":{"position":[[437,9]]}}}],["impos",{"_index":1564,"t":{"94":{"position":[[23772,7]]}}}],["improv",{"_index":2118,"t":{"94":{"position":[[52269,7]]},"293":{"position":[[350,8]]}}}],["imtoken",{"_index":3237,"t":{"245":{"position":[[418,8]]}}}],["in\\\\n",{"_index":1282,"t":{"94":{"position":[[10827,5],[39015,5]]}}}],["incentiv",{"_index":453,"t":{"2":{"position":[[8749,11],[12020,13]]}}}],["includ",{"_index":301,"t":{"2":{"position":[[5104,7],[6760,10]]},"25":{"position":[[617,9]]},"39":{"position":[[268,9]]},"50":{"position":[[78,9]]},"89":{"position":[[475,7]]},"94":{"position":[[13805,8]]},"175":{"position":[[290,9]]},"183":{"position":[[683,8]]},"214":{"position":[[97,10]]},"256":{"position":[[128,7]]},"262":{"position":[[72,9]]},"281":{"position":[[626,7]]}}}],["inclus",{"_index":814,"t":{"37":{"position":[[528,9]]}}}],["inconveni",{"_index":1181,"t":{"89":{"position":[[1028,12]]}}}],["incorpor",{"_index":3292,"t":{"270":{"position":[[550,13]]},"281":{"position":[[868,13]]},"303":{"position":[[495,12]]}}}],["increas",{"_index":91,"t":{"2":{"position":[[1138,9],[6223,10],[6412,9],[11413,9]]},"31":{"position":[[355,9]]},"94":{"position":[[13906,9],[19117,8],[23666,9]]},"262":{"position":[[322,9]]},"281":{"position":[[393,9]]}}}],["increasingli",{"_index":3315,"t":{"281":{"position":[[424,12]]}}}],["increment",{"_index":2245,"t":{"94":{"position":[[61192,10],[61363,11]]}}}],["increment.\\\\n",{"_index":2237,"t":{"94":{"position":[[60673,13]]}}}],["independ",{"_index":2957,"t":{"177":{"position":[[1942,14]]},"183":{"position":[[340,12]]}}}],["index",{"_index":1400,"t":{"94":{"position":[[14817,7],[14839,7],[15042,7],[15065,7],[73718,7]]},"198":{"position":[[51,8]]},"202":{"position":[[299,8]]}}}],["index.tsx",{"_index":2932,"t":{"177":{"position":[[294,10],[317,9],[2455,9]]}}}],["indic",{"_index":1412,"t":{"94":{"position":[[15493,10],[16145,10],[16923,10],[18177,9]]},"118":{"position":[[521,9]]}}}],["individu",{"_index":3001,"t":{"183":{"position":[[1045,10]]},"256":{"position":[[136,11]]}}}],["industri",{"_index":49,"t":{"2":{"position":[[557,10],[1383,10],[7208,8]]},"303":{"position":[[803,8]]}}}],["inevit",{"_index":549,"t":{"2":{"position":[[11929,10]]}}}],["infin",{"_index":2028,"t":{"94":{"position":[[49042,8]]}}}],["infinit",{"_index":3175,"t":{"230":{"position":[[265,8]]}}}],["infinity\\\\n",{"_index":1998,"t":{"94":{"position":[[46595,11],[46632,11]]}}}],["inflect",{"_index":499,"t":{"2":{"position":[[10171,10]]}}}],["inflow",{"_index":99,"t":{"2":{"position":[[1235,7]]}}}],["info",{"_index":2847,"t":{"163":{"position":[[25,4]]},"193":{"position":[[736,4],[751,4]]}}}],["inform",{"_index":796,"t":{"35":{"position":[[251,11],[364,12]]},"94":{"position":[[13379,11],[29870,11]]},"177":{"position":[[1434,11],[1911,12]]},"193":{"position":[[372,12]]},"209":{"position":[[1411,11]]}}}],["infrastructur",{"_index":47,"t":{"2":{"position":[[530,15],[1080,15],[1765,14],[5239,14],[11682,15]]},"27":{"position":[[53,15]]},"169":{"position":[[265,14]]}}}],["ingeni",{"_index":3166,"t":{"228":{"position":[[747,9]]}}}],["inher",{"_index":143,"t":{"2":{"position":[[1975,8],[2498,8],[8097,10]]},"303":{"position":[[1674,10]]}}}],["inherit",{"_index":202,"t":{"2":{"position":[[2935,7],[8376,7]]},"303":{"position":[[1930,7]]}}}],["initi",{"_index":483,"t":{"2":{"position":[[9792,9]]},"25":{"position":[[562,9]]},"33":{"position":[[445,9]]},"94":{"position":[[38901,11],[61331,7]]},"169":{"position":[[954,7]]},"171":{"position":[[70,13]]},"177":{"position":[[142,14],[2245,11]]},"187":{"position":[[113,10]]},"254":{"position":[[324,11]]},"265":{"position":[[1162,10]]},"281":{"position":[[143,10]]},"285":{"position":[[132,12]]},"291":{"position":[[8,7]]}}}],["inject",{"_index":3100,"t":{"209":{"position":[[1186,9]]}}}],["inlin",{"_index":2344,"t":{"94":{"position":[[66572,6]]}}}],["innoc",{"_index":440,"t":{"2":{"position":[[8083,10]]}}}],["innocence—an",{"_index":3370,"t":{"303":{"position":[[1661,12]]}}}],["innov",{"_index":120,"t":{"2":{"position":[[1600,11],[9291,10]]},"27":{"position":[[229,10]]},"39":{"position":[[121,10]]},"226":{"position":[[323,11]]},"262":{"position":[[833,10]]},"265":{"position":[[55,10]]},"285":{"position":[[25,11]]}}}],["innumer",{"_index":93,"t":{"2":{"position":[[1162,11]]}}}],["input",{"_index":1020,"t":{"72":{"position":[[843,8],[1655,8]]},"74":{"position":[[1102,8],[7367,8]]},"76":{"position":[[2316,8],[2951,8]]},"78":{"position":[[2445,8],[3188,8]]},"94":{"position":[[63594,5]]},"100":{"position":[[574,5],[589,5],[708,6]]},"118":{"position":[[778,6]]},"120":{"position":[[653,8],[1033,8],[1368,8]]}}}],["inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"contractname\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"target\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"addressemptycode\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"addressinsufficientbalance\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"ecdsainvalidsignature\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"length\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"ecdsainvalidsignaturelength\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"s\\\",\\\"internaltype\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"name\\\":\\\"ecdsainvalidsignatures\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"failedinnercall\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"currentnonce\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"invalidaccountnonce\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"invalidshortstring\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"token\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"safeerc20failedoperation\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"str\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"name\\\":\\\"stringtoolong\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"eip712domainchanged\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"approver\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenaddress\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountin\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amountout\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"deadline\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"permitandswap\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"sender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"received\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newvalue\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"setmaxoutput\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newop\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"on\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"setoperator\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"valut\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"status\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"name\\\":\\\"setvaults\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"newowner\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"transferownership\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"tokenaddress\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"receiver\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawn\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"domain_separator\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"max_btc_amount\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"fields\\\",\\\"internaltype\\\":\\\"bytes1\\\",\\\"type\\\":\\\"bytes1\\\"},{\\\"name\\\":\\\"name\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"version\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"chainid\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"verifyingcontract\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"name\\\":\\\"salt\\\",\\\"internaltype\\\":\\\"bytes32\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"name\\\":\\\"extensions\\\",\\\"internaltype\\\":\\\"uint256[]\\\",\\\"type\\\":\\\"uint256[]\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"eip712domain\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"name\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"_owner\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"nonces\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"operators\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"owner\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"approver\\\",\\\"internaltype\\\":\\\"address",{"_index":1229,"t":{"94":{"position":[[436,5923]]}}}],["inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"name_\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"symbol_\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"owner\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":true,\\\"name\\\":\\\"spender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"approval\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"inputs\\\":[{\\\"indexed\\\":true,\\\"name\\\":\\\"from\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":true,\\\"name\\\":\\\"to\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"value\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"transfer\\\",\\\"anonymous\\\":false,\\\"type\\\":\\\"event\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"owner\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"allowance\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"approve\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"account\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"balanceof\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint8\\\",\\\"type\\\":\\\"uint8\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"decimals\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"subtractedvalue\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"decreaseallowance\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"spender\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"addedvalue\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"increaseallowance\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"name\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"symbol\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"inputs\\\":[],\\\"name\\\":\\\"totalsupply\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"to\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"transfer\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"outputs\\\":[{\\\"name\\\":\\\"\\\",\\\"internaltype\\\":\\\"bool\\\",\\\"type\\\":\\\"bool\\\"}],\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"from\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"to\\\",\\\"internaltype\\\":\\\"address\\\",\\\"type\\\":\\\"address\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"amount\\\",\\\"internaltype\\\":\\\"uint256\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"transferfrom\\\",\\\"anonymous\\\":false,\\\"statemutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"funct",{"_index":1226,"t":{"92":{"position":[[1139,4305]]}}}],["inquiri",{"_index":3261,"t":{"258":{"position":[[13,9]]}}}],["inscript",{"_index":14,"t":{"2":{"position":[[147,11],[368,13]]}}}],["insecureunlockallow",{"_index":2817,"t":{"161":{"position":[[463,21]]}}}],["insight",{"_index":474,"t":{"2":{"position":[[9470,7]]},"141":{"position":[[131,8]]},"228":{"position":[[1132,8]]},"262":{"position":[[147,8]]}}}],["inspir",{"_index":371,"t":{"2":{"position":[[6654,8],[6873,13]]},"94":{"position":[[53746,8]]}}}],["instal",{"_index":1132,"t":{"85":{"position":[[327,7],[346,7]]},"151":{"position":[[53,9],[154,12]]},"165":{"position":[[223,9]]},"171":{"position":[[45,11],[703,10]]},"175":{"position":[[103,7],[333,7],[489,7]]},"179":{"position":[[102,9]]},"187":{"position":[[101,7]]},"200":{"position":[[203,9],[228,9]]},"209":{"position":[[1620,9],[1652,7]]}}}],["instanc",{"_index":829,"t":{"39":{"position":[[530,9]]},"177":{"position":[[1388,8],[2366,8]]},"181":{"position":[[516,9],[631,8],[1011,8]]}}}],["instead",{"_index":264,"t":{"2":{"position":[[4073,7]]},"89":{"position":[[1080,8]]},"94":{"position":[[17684,7],[34457,7]]}}}],["instead.\\\\n",{"_index":1534,"t":{"94":{"position":[[22192,11],[24804,11]]}}}],["instead\\\\n",{"_index":2029,"t":{"94":{"position":[[49051,10]]}}}],["institut",{"_index":3319,"t":{"281":{"position":[[561,13]]}}}],["instruct",{"_index":2757,"t":{"151":{"position":[[167,13]]}}}],["int256",{"_index":2220,"t":{"94":{"position":[[59537,6],[59569,8],[59706,6],[59738,8],[59936,6],[59968,8],[60035,6],[71011,8]]}}}],["int256(uint256(x",{"_index":2227,"t":{"94":{"position":[[60086,18]]}}}],["intact",{"_index":695,"t":{"21":{"position":[[141,7]]}}}],["integ",{"_index":592,"t":{"5":{"position":[[305,7]]},"7":{"position":[[337,7]]},"10":{"position":[[398,7],[467,7]]},"12":{"position":[[1026,7],[1095,7]]},"68":{"position":[[898,7],[968,7],[1033,7]]},"70":{"position":[[921,7],[991,7],[1056,7]]},"74":{"position":[[405,7],[475,7],[540,7]]},"76":{"position":[[1350,7],[1420,7],[1485,7]]},"78":{"position":[[1371,7],[1441,7],[1506,7]]},"80":{"position":[[645,7]]},"94":{"position":[[46756,9],[47037,9],[47303,9],[47822,9],[48100,9]]},"124":{"position":[[15,7]]}}}],["integers.\\\\n",{"_index":2214,"t":{"94":{"position":[[58977,12]]}}}],["integr",{"_index":321,"t":{"2":{"position":[[5382,8],[8705,11]]},"21":{"position":[[658,9]]},"31":{"position":[[639,10]]},"39":{"position":[[637,11]]},"48":{"position":[[5,11]]},"54":{"position":[[548,9]]},"171":{"position":[[106,11],[650,9]]},"177":{"position":[[113,11]]},"179":{"position":[[231,9]]},"212":{"position":[[182,10]]},"228":{"position":[[757,11],[858,9]]},"235":{"position":[[32,9]]},"250":{"position":[[52,11]]},"277":{"position":[[313,11]]}}}],["intend",{"_index":1939,"t":{"94":{"position":[[43523,8],[44957,8]]},"177":{"position":[[1260,6],[1318,6]]},"193":{"position":[[93,8]]}}}],["intended\\\\n",{"_index":1965,"t":{"94":{"position":[[45084,11]]}}}],["intent",{"_index":1305,"t":{"94":{"position":[[11510,9],[12373,7]]}}}],["interact",{"_index":909,"t":{"54":{"position":[[444,8]]},"94":{"position":[[24271,12],[24307,12]]},"167":{"position":[[237,8]]},"169":{"position":[[740,8]]},"181":{"position":[[0,11]]},"185":{"position":[[831,11]]},"212":{"position":[[4,11],[271,8]]},"252":{"position":[[148,8]]},"277":{"position":[[35,12]]},"301":{"position":[[98,12]]}}}],["interest",{"_index":3318,"t":{"281":{"position":[[547,8]]}}}],["interfac",{"_index":1204,"t":{"92":{"position":[[40,9]]},"94":{"position":[[10730,9],[14557,9]]},"169":{"position":[[194,11],[727,9]]},"177":{"position":[[1827,10]]},"183":{"position":[[280,10],[368,10],[466,10],[629,9],[1015,10]]},"301":{"position":[[267,10]]}}}],["interfaces/ierc5267.sol)\\\\n\\\\npragma",{"_index":1249,"t":{"94":{"position":[[9894,37]]}}}],["interfaces/ierc5267.sol\\\\\\\";\\\\n\\\\n/**\\\\n",{"_index":1793,"t":{"94":{"position":[[36344,50]]}}}],["intermediari",{"_index":3329,"t":{"283":{"position":[[402,14]]}}}],["intern",{"_index":996,"t":{"70":{"position":[[20,8]]},"72":{"position":[[20,8],[443,8]]},"74":{"position":[[20,8]]},"94":{"position":[[18590,8],[18995,8],[19358,8],[19781,8],[20479,8],[24401,8],[25500,8],[25977,8],[26454,8],[26834,8],[27374,8],[28011,8],[30886,8],[32285,8],[32734,8],[33261,8],[33653,8],[35171,8],[39937,8],[40952,8],[41855,8],[42293,8],[43783,8],[44673,8],[45263,8],[45877,8],[46836,8],[47117,8],[47383,8],[47909,8],[48187,8],[48411,8],[48576,8],[48785,8],[49138,8],[49766,8],[53405,8],[53854,8],[55440,8],[55760,8],[56549,8],[56875,8],[57642,8],[58093,8],[58696,8],[59041,8],[59547,8],[59716,8],[59946,8],[60237,8],[61253,8],[61738,8],[63671,8],[64007,8],[64428,8],[64793,8],[65210,8],[65814,8],[66828,8],[66977,8],[67151,8],[67764,8],[68023,8],[68282,8],[68541,8],[68798,8],[69077,8],[69337,8],[69611,8],[70514,8],[71113,8],[71386,8],[71675,8],[72275,8],[72504,8],[77937,8]]},"114":{"position":[[28,8]]},"118":{"position":[[24,8]]},"122":{"position":[[16,8]]},"130":{"position":[[16,8]]},"155":{"position":[[274,8],[449,8]]}}}],["internal\\\\n",{"_index":2561,"t":{"94":{"position":[[77110,11]]}}}],["interoper",{"_index":710,"t":{"21":{"position":[[773,16]]},"46":{"position":[[101,16]]}}}],["introduc",{"_index":182,"t":{"2":{"position":[[2533,10],[3090,11],[10932,10]]},"33":{"position":[[95,10]]},"106":{"position":[[400,11]]},"157":{"position":[[0,9]]},"207":{"position":[[400,11]]},"270":{"position":[[22,10]]},"277":{"position":[[278,10]]},"293":{"position":[[26,9]]},"303":{"position":[[414,10]]}}}],["introduct",{"_index":113,"t":{"2":{"position":[[1442,12],[8484,12]]},"169":{"position":[[962,12]]},"303":{"position":[[2039,12]]}}}],["inv",{"_index":2108,"t":{"94":{"position":[[52040,3],[52163,3]]}}}],["invalid",{"_index":732,"t":{"25":{"position":[[627,7]]},"94":{"position":[[29383,7],[38432,10]]}}}],["invalid_signature_length\\\\\\\");\\\\n\\\\n",{"_index":2565,"t":{"94":{"position":[[77204,40]]}}}],["invalidaccountnonce(address",{"_index":2239,"t":{"94":{"position":[[60818,27]]}}}],["invalidaccountnonce(own",{"_index":2256,"t":{"94":{"position":[[61833,26]]}}}],["invalidshortstring();\\\\n",{"_index":2312,"t":{"94":{"position":[[64556,24]]}}}],["invalidshortstring();\\\\n\\\\n",{"_index":2280,"t":{"94":{"position":[[63435,27]]}}}],["invalidsignature,\\\\n",{"_index":1668,"t":{"94":{"position":[[29171,20]]}}}],["invalidsignaturelength,\\\\n",{"_index":1669,"t":{"94":{"position":[[29192,26]]}}}],["invalidsignatures\\\\n",{"_index":1670,"t":{"94":{"position":[[29219,20]]}}}],["invent",{"_index":3309,"t":{"281":{"position":[[9,8]]}}}],["invers",{"_index":2105,"t":{"94":{"position":[[51989,7],[52071,7],[52191,7],[52414,7],[52443,8],[52455,7],[52474,7],[52503,8],[52515,7],[52535,7],[52564,8],[52576,7],[52596,7],[52625,8],[52637,7],[52657,7],[52686,8],[52698,7],[52719,7],[52748,8],[52760,7],[52867,7]]}}}],["inverse;\\\\n",{"_index":2139,"t":{"94":{"position":[[53163,11]]}}}],["invert",{"_index":2103,"t":{"94":{"position":[[51910,6]]}}}],["investor",{"_index":3320,"t":{"281":{"position":[[575,9]]}}}],["involv",{"_index":697,"t":{"21":{"position":[[268,8]]},"23":{"position":[[60,8]]},"33":{"position":[[509,8]]}}}],["io",{"_index":3207,"t":{"243":{"position":[[169,2]]}}}],["iops>5k",{"_index":2777,"t":{"159":{"position":[[23,7],[59,7]]}}}],["ip",{"_index":2781,"t":{"159":{"position":[[92,2]]}}}],["ipcpath",{"_index":2819,"t":{"161":{"position":[[505,7]]}}}],["ipf",{"_index":3042,"t":{"189":{"position":[[97,4]]},"193":{"position":[[247,4],[520,4],[648,5]]}}}],["ipfs:5001",{"_index":3064,"t":{"193":{"position":[[654,11]]}}}],["is:\\\\n",{"_index":1315,"t":{"94":{"position":[[11873,6]]}}}],["is\\\\n",{"_index":1417,"t":{"94":{"position":[[15806,5],[52999,5]]}}}],["issu",{"_index":392,"t":{"2":{"position":[[7151,5],[10363,6],[11218,6]]},"35":{"position":[[805,6]]},"94":{"position":[[12916,6]]},"228":{"position":[[252,6]]},"303":{"position":[[746,5]]}}}],["issuanc",{"_index":793,"t":{"35":{"position":[[143,8]]}}}],["istanbul",{"_index":2652,"t":{"100":{"position":[[1370,8]]}}}],["it'",{"_index":873,"t":{"42":{"position":[[692,4]]},"118":{"position":[[419,4]]}}}],["it.\\\\n",{"_index":1704,"t":{"94":{"position":[[30599,6],[32217,6]]}}}],["iter",{"_index":186,"t":{"2":{"position":[[2643,10]]},"94":{"position":[[52256,9],[54823,11],[54858,9]]}}}],["itself",{"_index":180,"t":{"2":{"position":[[2518,7],[8472,7]]},"94":{"position":[[36788,7]]},"303":{"position":[[2027,7]]}}}],["it’",{"_index":82,"t":{"2":{"position":[[966,4],[4456,4]]}}}],["join",{"_index":758,"t":{"31":{"position":[[221,4]]},"232":{"position":[[286,7]]},"252":{"position":[[6,4]]},"287":{"position":[[0,4]]}}}],["journal",{"_index":2800,"t":{"161":{"position":[[223,7]]}}}],["journey",{"_index":3178,"t":{"232":{"position":[[61,7]]}}}],["jr.'",{"_index":2151,"t":{"94":{"position":[[53775,5]]}}}],["json",{"_index":1820,"t":{"94":{"position":[[37551,4],[43459,4],[44562,4],[45731,4]]},"100":{"position":[[569,4],[595,4],[703,4]]},"112":{"position":[[22,4]]},"155":{"position":[[420,4]]},"228":{"position":[[721,4]]},"245":{"position":[[681,4]]}}}],["json.parse(data.result",{"_index":1216,"t":{"92":{"position":[[656,24]]}}}],["jsonrpc",{"_index":2716,"t":{"120":{"position":[[199,10]]}}}],["jsonrpc\":\"2.0",{"_index":2712,"t":{"120":{"position":[[32,16]]},"128":{"position":[[32,16]]},"136":{"position":[[32,16]]}}}],["jsx",{"_index":2931,"t":{"177":{"position":[[244,4]]}}}],["junctur",{"_index":565,"t":{"2":{"position":[[12322,8]]}}}],["k=log2(a)`.\\\\n",{"_index":2164,"t":{"94":{"position":[[54236,15]]}}}],["keccak256",{"_index":1928,"t":{"94":{"position":[[43101,9],[43584,10],[44192,9],[44878,9],[45408,9]]}}}],["keccak256(0x00",{"_index":1952,"t":{"94":{"position":[[44064,15]]}}}],["keccak256(\\\\\\\"eip712domain(str",{"_index":1838,"t":{"94":{"position":[[38200,33]]}}}],["keccak256(\\\\\\\"mail(address",{"_index":1887,"t":{"94":{"position":[[40720,26]]}}}],["keccak256(\\\\\\\"swap(address",{"_index":2452,"t":{"94":{"position":[[73331,26]]}}}],["keccak256(abi.encode(permit_typehash",{"_index":2584,"t":{"94":{"position":[[77972,37]]}}}],["keccak256(abi.encode(type_hash",{"_index":1881,"t":{"94":{"position":[[40218,31]]}}}],["keccak256(abi.encodepacked(hex\\\\\\\"19_00",{"_index":1968,"t":{"94":{"position":[[45307,44]]}}}],["keccak256(bytes(a",{"_index":2438,"t":{"94":{"position":[[72583,19]]}}}],["keccak256(bytes(b));\\\\n",{"_index":2439,"t":{"94":{"position":[[72606,23]]}}}],["keccak256(bytes(mailcontents))\\\\n",{"_index":1891,"t":{"94":{"position":[[40791,33]]}}}],["keccak256(bytes(name));\\\\n",{"_index":1870,"t":{"94":{"position":[[39627,26]]}}}],["keccak256(bytes(version));\\\\n\\\\n",{"_index":1872,"t":{"94":{"position":[[39671,32]]}}}],["keccak256(bytes.concat(\\\\\\\"\\\\\\\\x19ethereum",{"_index":1959,"t":{"94":{"position":[[44720,42]]}}}],["keccak256(ptr",{"_index":1985,"t":{"94":{"position":[[46123,14]]}}}],["keccak256`.\\\\n",{"_index":1802,"t":{"94":{"position":[[36955,15]]}}}],["keep",{"_index":694,"t":{"21":{"position":[[112,7]]},"39":{"position":[[1198,7]]}}}],["kevin",{"_index":294,"t":{"2":{"position":[[4862,5],[5190,5]]}}}],["key",{"_index":158,"t":{"2":{"position":[[2115,3],[3155,4],[6852,3],[7110,3],[11275,3]]},"87":{"position":[[555,3],[662,3],[723,3],[903,3]]},"94":{"position":[[29084,4]]},"100":{"position":[[216,3]]},"173":{"position":[[204,4],[544,4]]},"175":{"position":[[115,3]]},"200":{"position":[[93,4],[180,4],[199,3]]},"202":{"position":[[393,3]]},"262":{"position":[[60,3]]},"303":{"position":[[705,3]]}}}],["kit",{"_index":3349,"t":{"291":{"position":[[306,3]]}}}],["know",{"_index":1638,"t":{"94":{"position":[[27592,4],[54051,4],[54667,4]]},"106":{"position":[[492,4]]},"207":{"position":[[492,4]]}}}],["knowledg",{"_index":721,"t":{"23":{"position":[[599,9]]},"25":{"position":[[60,9],[288,9],[482,9],[640,9]]},"37":{"position":[[353,9]]},"39":{"position":[[241,9],[903,9],[1097,9]]},"281":{"position":[[668,9]]}}}],["known",{"_index":1818,"t":{"94":{"position":[[37508,5]]}}}],["l1",{"_index":542,"t":{"2":{"position":[[11580,2]]},"185":{"position":[[1484,5]]},"293":{"position":[[157,2]]},"295":{"position":[[69,2]]}}}],["l2",{"_index":108,"t":{"2":{"position":[[1403,4]]},"153":{"position":[[96,2]]},"165":{"position":[[28,2]]}}}],["l2.git",{"_index":2753,"t":{"149":{"position":[[118,6]]}}}],["l2/chain",{"_index":2872,"t":{"165":{"position":[[148,8]]}}}],["l2/chain/config.toml",{"_index":2856,"t":{"163":{"position":[[164,20],[485,20]]}}}],["l2/chain/data",{"_index":2816,"t":{"161":{"position":[[448,14]]}}}],["l2/chain/geth",{"_index":2853,"t":{"163":{"position":[[112,13],[433,13]]}}}],["l2/chain/logs/chain.log",{"_index":2858,"t":{"163":{"position":[[213,23],[534,23]]}}}],["l2/chain/run.sh",{"_index":2870,"t":{"165":{"position":[[100,15]]}}}],["l3",{"_index":110,"t":{"2":{"position":[[1418,4]]}}}],["l4",{"_index":111,"t":{"2":{"position":[[1423,4]]}}}],["lab",{"_index":2046,"t":{"94":{"position":[[49669,4]]}}}],["lack",{"_index":144,"t":{"2":{"position":[[1984,4]]}}}],["landscap",{"_index":297,"t":{"2":{"position":[[4999,9]]},"285":{"position":[[76,9]]}}}],["languag",{"_index":3164,"t":{"228":{"position":[[622,8]]},"245":{"position":[[568,8]]},"303":{"position":[[647,9]]}}}],["language.\\\\n",{"_index":1991,"t":{"94":{"position":[[46428,12],[59406,12]]}}}],["language\\\":\\\"solidity\\\",\\\"sources\\\":{\\\"@openzeppelin/contracts/interfaces/ierc5267.sol\\\":{\\\"cont",{"_index":1242,"t":{"94":{"position":[[9704,110]]}}}],["larg",{"_index":1911,"t":{"94":{"position":[[41739,5],[42174,5]]}}}],["larger",{"_index":328,"t":{"2":{"position":[[5517,6],[10224,6]]}}}],["largest",{"_index":546,"t":{"2":{"position":[[11778,8]]},"94":{"position":[[48343,7],[51370,7],[59474,7]]}}}],["last",{"_index":957,"t":{"68":{"position":[[236,4]]},"70":{"position":[[128,4]]},"72":{"position":[[109,4]]},"74":{"position":[[135,4]]},"94":{"position":[[9872,5],[10617,5],[14461,5],[17245,5],[22896,5],[28811,5],[36096,5],[42550,5],[46287,5],[59252,5],[60529,5],[62016,5],[66122,5],[69874,5]]}}}],["late",{"_index":79,"t":{"2":{"position":[[945,4]]},"281":{"position":[[170,4]]}}}],["later",{"_index":109,"t":{"2":{"position":[[1412,5]]}}}],["latest",{"_index":523,"t":{"2":{"position":[[10694,6]]},"23":{"position":[[576,6]]},"232":{"position":[[397,6]]},"252":{"position":[[210,6]]},"262":{"position":[[586,6]]},"272":{"position":[[269,6]]}}}],["latter",{"_index":2982,"t":{"181":{"position":[[303,7]]}}}],["launch",{"_index":312,"t":{"2":{"position":[[5276,6],[9103,9]]},"230":{"position":[[58,8]]},"232":{"position":[[8,8]]},"248":{"position":[[15,6]]},"281":{"position":[[158,8]]}}}],["lay",{"_index":187,"t":{"2":{"position":[[2657,3]]}}}],["layer",{"_index":38,"t":{"2":{"position":[[413,5],[1757,5],[2883,5],[3664,5],[3871,6],[4112,5],[4377,5],[4476,5],[4529,5],[4991,5],[5683,5],[6620,5],[6915,5],[6972,5],[6996,5],[7036,5],[7118,5],[7233,5],[8005,5],[8226,5],[8310,5],[8341,5],[8645,5],[9558,5],[11358,5],[12000,5],[12482,5]]},"19":{"position":[[34,5]]},"21":{"position":[[57,5],[295,7],[567,5],[599,5],[798,5],[810,5],[881,7]]},"23":{"position":[[87,7],[266,5],[436,7]]},"25":{"position":[[181,5],[233,5],[681,5]]},"27":{"position":[[122,5],[134,5]]},"29":{"position":[[110,5],[275,5],[385,5],[491,5]]},"31":{"position":[[102,5],[177,5],[288,5]]},"35":{"position":[[60,5],[185,5],[266,5],[793,5]]},"37":{"position":[[113,5],[125,5],[196,5]]},"39":{"position":[[0,7],[836,7]]},"48":{"position":[[211,5]]},"54":{"position":[[315,5]]},"169":{"position":[[137,5]]},"226":{"position":[[22,5],[154,5]]},"228":{"position":[[388,5]]},"245":{"position":[[106,5]]},"262":{"position":[[408,7]]},"270":{"position":[[37,7]]},"281":{"position":[[734,5]]},"283":{"position":[[134,5],[347,5]]},"295":{"position":[[351,5]]},"303":{"position":[[168,5],[713,5],[828,5],[1583,5],[1803,5],[1887,5],[2202,5],[2266,5],[2427,5]]}}}],["layer2",{"_index":3306,"t":{"279":{"position":[[128,6]]}}}],["lead",{"_index":3158,"t":{"228":{"position":[[122,7]]},"262":{"position":[[314,4]]},"267":{"position":[[113,7]]},"293":{"position":[[265,4]]}}}],["learn",{"_index":2911,"t":{"171":{"position":[[339,5]]},"285":{"position":[[0,5]]}}}],["leav",{"_index":118,"t":{"2":{"position":[[1572,5]]},"42":{"position":[[812,5]]},"94":{"position":[[12335,7]]},"100":{"position":[[1250,7]]}}}],["left",{"_index":160,"t":{"2":{"position":[[2132,4],[12093,4]]}}}],["legaci",{"_index":867,"t":{"42":{"position":[[537,6]]},"209":{"position":[[937,6]]},"265":{"position":[[920,6]]}}}],["legitim",{"_index":776,"t":{"31":{"position":[[806,10]]}}}],["legitimaci",{"_index":801,"t":{"35":{"position":[[591,10],[707,10]]}}}],["lemma",{"_index":2122,"t":{"94":{"position":[[52319,6]]}}}],["len",{"_index":2297,"t":{"94":{"position":[[64058,3]]}}}],["len(messag",{"_index":1956,"t":{"94":{"position":[[44417,13]]}}}],["len)\\\\n",{"_index":2304,"t":{"94":{"position":[[64261,7]]}}}],["lend",{"_index":3215,"t":{"243":{"position":[[292,7],[517,7],[621,7]]}}}],["length",{"_index":1947,"t":{"94":{"position":[[43959,6],[44030,6],[44101,6],[62244,6],[62480,6],[62602,6],[64354,6],[65404,6],[65558,10],[65616,6],[70580,6],[71667,7],[71785,6],[71874,6],[72141,6],[77291,6],[77527,6]]}}}],["length))\\\\n",{"_index":2400,"t":{"94":{"position":[[70756,11]]}}}],["length);\\\\n",{"_index":2426,"t":{"94":{"position":[[72043,11]]}}}],["length);\\\\n\\\\n",{"_index":1676,"t":{"94":{"position":[[29450,14],[70376,14]]}}}],["length.\\\\n",{"_index":1674,"t":{"94":{"position":[[29391,10],[71606,10]]}}}],["length`.\\\\n",{"_index":2389,"t":{"94":{"position":[[70299,12]]}}}],["less",{"_index":4,"t":{"2":{"position":[[61,4]]},"94":{"position":[[50726,4],[53008,4]]}}}],["level",{"_index":245,"t":{"2":{"position":[[3756,5],[8213,5],[8432,5],[11319,5]]},"31":{"position":[[581,6]]},"94":{"position":[[20805,5],[21235,5],[21515,5],[21769,5],[22332,5],[24701,5],[27058,5],[27799,5]]},"228":{"position":[[915,5]]},"295":{"position":[[379,6]]},"303":{"position":[[1790,5],[1998,5]]}}}],["leverag",{"_index":431,"t":{"2":{"position":[[7846,10]]},"39":{"position":[[706,8]]},"46":{"position":[[202,8]]},"48":{"position":[[373,10]]},"54":{"position":[[302,8],[361,10]]},"169":{"position":[[335,8]]},"177":{"position":[[1021,11]]},"181":{"position":[[325,10]]},"228":{"position":[[270,10]]},"250":{"position":[[500,10]]},"262":{"position":[[678,10],[850,10]]},"265":{"position":[[89,10]]},"275":{"position":[[68,8]]},"293":{"position":[[185,10]]},"303":{"position":[[1418,10]]}}}],["li",{"_index":355,"t":{"2":{"position":[[6201,4]]}}}],["librari",{"_index":1135,"t":{"87":{"position":[[60,7]]},"94":{"position":[[9620,10],[17817,7],[34071,9],[34170,7],[34408,7],[42830,7],[62316,7],[62515,7],[66307,7],[66498,7],[66621,7]]},"175":{"position":[[347,10]]},"179":{"position":[[323,7]]},"181":{"position":[[243,7]]}}}],["licens",{"_index":1244,"t":{"94":{"position":[[9820,7],[10565,7],[14409,7],[17193,7],[22844,7],[28759,7],[36044,7],[42498,7],[46235,7],[49592,7],[59200,7],[60477,7],[61964,7],[66070,7],[69822,7],[72697,7]]},"100":{"position":[[1497,7],[1574,7]]}}}],["license.\\\\n",{"_index":2047,"t":{"94":{"position":[[49689,11]]}}}],["licensetyp",{"_index":1233,"t":{"94":{"position":[[9312,14]]},"100":{"position":[[1429,12]]}}}],["licensetype').v",{"_index":2653,"t":{"100":{"position":[[1442,24]]}}}],["lifetim",{"_index":2812,"t":{"161":{"position":[[390,8]]}}}],["lift",{"_index":2121,"t":{"94":{"position":[[52311,7]]}}}],["light",{"_index":791,"t":{"35":{"position":[[15,5],[198,5],[381,5],[555,5],[660,5]]},"37":{"position":[[171,5],[317,5]]}}}],["lightn",{"_index":169,"t":{"2":{"position":[[2339,9]]},"303":{"position":[[2453,9]]}}}],["limit",{"_index":161,"t":{"2":{"position":[[2137,11],[2486,11]]},"12":{"position":[[1190,7],[1306,7]]},"98":{"position":[[16,5],[129,11]]},"228":{"position":[[170,11]]},"260":{"position":[[17,6],[99,7]]}}}],["limit\\\\n",{"_index":1563,"t":{"94":{"position":[[23761,8]]}}}],["limitation.\\\\n",{"_index":1569,"t":{"94":{"position":[[23877,14]]}}}],["limitnofile=65536",{"_index":2876,"t":{"165":{"position":[[205,17]]}}}],["line",{"_index":1182,"t":{"89":{"position":[[1074,5]]},"94":{"position":[[14236,4],[41804,4],[42239,4]]},"155":{"position":[[112,4]]},"161":{"position":[[995,4]]}}}],["link",{"_index":2687,"t":{"106":{"position":[[484,4]]},"200":{"position":[[132,5]]},"202":{"position":[[415,5]]},"207":{"position":[[484,4]]}}}],["linkedin",{"_index":3251,"t":{"252":{"position":[[320,9]]}}}],["linu",{"_index":228,"t":{"2":{"position":[[3366,5]]},"281":{"position":[[27,5]]}}}],["linux",{"_index":2854,"t":{"163":{"position":[[126,5],[447,5]]}}}],["liquid",{"_index":739,"t":{"29":{"position":[[92,9]]},"48":{"position":[[401,9]]},"250":{"position":[[333,9]]}}}],["list",{"_index":942,"t":{"66":{"position":[[43,4]]},"68":{"position":[[12,4]]},"70":{"position":[[12,4]]},"72":{"position":[[12,4]]},"74":{"position":[[12,4]]},"76":{"position":[[12,4]]},"78":{"position":[[12,4]]},"80":{"position":[[12,4]]},"100":{"position":[[870,4]]},"104":{"position":[[32,7]]},"112":{"position":[[43,6]]},"155":{"position":[[6,4]]},"209":{"position":[[2554,5]]}}}],["listen",{"_index":34,"t":{"2":{"position":[[357,10]]}}}],["listenaddr",{"_index":2838,"t":{"161":{"position":[[791,10]]}}}],["live",{"_index":3121,"t":{"209":{"position":[[2341,5]]}}}],["load",{"_index":2571,"t":{"94":{"position":[[77421,5]]}}}],["local",{"_index":2300,"t":{"94":{"position":[[64123,7]]},"195":{"position":[[66,5]]}}}],["localhost",{"_index":2834,"t":{"161":{"position":[[732,13]]}}}],["localvalu",{"_index":2415,"t":{"94":{"position":[[71726,10],[71948,10],[71977,11]]}}}],["locat",{"_index":2363,"t":{"94":{"position":[[67698,7],[67957,7],[68216,7],[68475,7],[68733,7],[69273,7]]},"177":{"position":[[351,8]]}}}],["lock",{"_index":804,"t":{"35":{"position":[[728,7]]}}}],["lockingcontract",{"_index":926,"t":{"59":{"position":[[102,15]]}}}],["log",{"_index":374,"t":{"2":{"position":[[6690,3]]},"10":{"position":[[18,4],[378,4]]},"12":{"position":[[18,4],[1007,4]]},"94":{"position":[[55639,3],[56386,3],[56752,3],[57477,3],[57847,3],[58529,3]]},"114":{"position":[[20,4]]},"116":{"position":[[260,4]]},"118":{"position":[[47,4],[66,3],[262,5],[277,3],[615,4]]},"120":{"position":[[422,7]]},"122":{"position":[[8,4]]},"124":{"position":[[267,4]]},"130":{"position":[[8,4]]}}}],["log.fil",{"_index":2857,"t":{"163":{"position":[[189,8],[510,8]]}}}],["log.rotate=tru",{"_index":2859,"t":{"163":{"position":[[241,15],[562,15]]}}}],["log10(uint256",{"_index":2204,"t":{"94":{"position":[[56854,13],[57602,13]]}}}],["log10(value);\\\\n",{"_index":2205,"t":{"94":{"position":[[57711,16]]}}}],["log2(a",{"_index":2178,"t":{"94":{"position":[[54572,8]]}}}],["log2(uint256",{"_index":2192,"t":{"94":{"position":[[55740,12],[56510,12]]}}}],["log2(value);\\\\n",{"_index":2203,"t":{"94":{"position":[[56618,15]]}}}],["log256(uint256",{"_index":2211,"t":{"94":{"position":[[58071,14],[58655,14]]}}}],["log256(value);\\\\n",{"_index":2212,"t":{"94":{"position":[[58765,17]]}}}],["login",{"_index":2917,"t":{"173":{"position":[[329,5]]}}}],["logindex",{"_index":645,"t":{"10":{"position":[[1135,11]]},"12":{"position":[[1933,11]]}}}],["long",{"_index":249,"t":{"2":{"position":[[3882,4]]},"37":{"position":[[663,4]]},"94":{"position":[[30530,6],[32148,6]]}}}],["long.\\\\n",{"_index":2285,"t":{"94":{"position":[[63614,8],[64700,8]]}}}],["longer",{"_index":2137,"t":{"94":{"position":[[53126,6],[63249,6]]}}}],["look",{"_index":1648,"t":{"94":{"position":[[28307,4]]},"167":{"position":[[524,7]]},"177":{"position":[[2404,5]]}}}],["lose",{"_index":414,"t":{"2":{"position":[[7486,6]]},"303":{"position":[[1079,6]]}}}],["lost",{"_index":2012,"t":{"94":{"position":[[47538,4]]}}}],["low",{"_index":208,"t":{"2":{"position":[[3052,3],[9003,3]]},"94":{"position":[[21231,3],[21511,3],[22328,3],[24697,3],[27054,3],[27795,3]]},"167":{"position":[[148,3]]},"291":{"position":[[507,3]]}}}],["lower",{"_index":1762,"t":{"94":{"position":[[34132,5]]},"262":{"position":[[223,5]]},"265":{"position":[[23,5]]},"275":{"position":[[143,5]]},"283":{"position":[[421,8],[501,5]]}}}],["lower\\\\n",{"_index":1692,"t":{"94":{"position":[[30149,8],[31767,8]]}}}],["lt(mm",{"_index":2068,"t":{"94":{"position":[[50305,6]]}}}],["lvm",{"_index":699,"t":{"21":{"position":[[319,6]]},"23":{"position":[[460,6],[471,3]]},"39":{"position":[[24,5],[676,3]]},"262":{"position":[[432,6]]},"270":{"position":[[61,6]]}}}],["lvm'",{"_index":3297,"t":{"275":{"position":[[172,5]]}}}],["macaron",{"_index":3208,"t":{"243":{"position":[[172,7]]},"299":{"position":[[93,7],[107,10]]},"301":{"position":[[201,7],[254,7]]}}}],["machin",{"_index":380,"t":{"2":{"position":[[6797,9],[6988,7]]},"21":{"position":[[311,7]]},"23":{"position":[[103,8],[452,7]]},"39":{"position":[[16,7]]},"228":{"position":[[330,7],[487,7]]},"250":{"position":[[90,7]]},"262":{"position":[[424,7]]},"270":{"position":[[53,7],[116,7]]}}}],["made",{"_index":1280,"t":{"94":{"position":[[10795,4]]},"173":{"position":[[509,5]]},"228":{"position":[[1005,4]]}}}],["mailto,\\\\n",{"_index":1890,"t":{"94":{"position":[[40778,10]]}}}],["main",{"_index":560,"t":{"2":{"position":[[12269,4]]}}}],["mainnet",{"_index":898,"t":{"50":{"position":[[0,7]]},"62":{"position":[[12,7]]},"106":{"position":[[38,7],[392,7],[421,7],[512,7]]},"141":{"position":[[186,7]]},"143":{"position":[[20,7]]},"163":{"position":[[741,7]]},"169":{"position":[[915,8]]},"207":{"position":[[38,7],[392,7],[421,7],[512,7]]},"216":{"position":[[29,8],[122,7],[286,7]]},"230":{"position":[[43,7],[328,8]]},"232":{"position":[[30,7]]},"248":{"position":[[7,7]]},"260":{"position":[[51,7]]},"281":{"position":[[799,7],[859,8]]},"289":{"position":[[65,7]]},"291":{"position":[[111,7]]},"295":{"position":[[152,7]]}}}],["mainnet/testnet",{"_index":861,"t":{"42":{"position":[[449,16]]},"265":{"position":[[816,16]]}}}],["mainnet:http://127.0.0.1:8545",{"_index":3065,"t":{"193":{"position":[[676,31]]}}}],["mainstream",{"_index":3346,"t":{"291":{"position":[[143,10]]}}}],["maintain",{"_index":341,"t":{"2":{"position":[[5920,8]]},"21":{"position":[[621,11]]},"35":{"position":[[220,9],[338,8]]},"39":{"position":[[332,11]]},"42":{"position":[[170,8]]}}}],["major",{"_index":42,"t":{"2":{"position":[[450,5],[746,5]]},"94":{"position":[[39241,5]]},"303":{"position":[[150,5]]}}}],["make",{"_index":480,"t":{"2":{"position":[[9715,4],[9758,6]]},"94":{"position":[[12446,5],[23723,6],[23795,6],[33803,4],[50702,4],[50986,4]]},"151":{"position":[[27,4]]},"153":{"position":[[150,4]]},"200":{"position":[[24,4]]},"209":{"position":[[1602,4]]},"265":{"position":[[191,6]]},"277":{"position":[[121,5]]}}}],["malici",{"_index":728,"t":{"25":{"position":[[515,9]]}}}],["malleabl",{"_index":1689,"t":{"94":{"position":[[30042,9],[31660,9],[33745,12],[34188,9],[34506,9],[34734,11]]}}}],["manag",{"_index":416,"t":{"2":{"position":[[7555,10]]},"21":{"position":[[414,7]]},"31":{"position":[[485,7]]},"33":{"position":[[611,8]]},"35":{"position":[[131,7]]},"157":{"position":[[18,10]]},"175":{"position":[[571,8]]},"187":{"position":[[210,6]]},"200":{"position":[[255,8]]},"283":{"position":[[535,8]]},"303":{"position":[[1148,10]]}}}],["mani",{"_index":366,"t":{"2":{"position":[[6451,4],[11606,4]]},"89":{"position":[[579,4]]}}}],["manner",{"_index":805,"t":{"35":{"position":[[827,7]]}}}],["map",{"_index":2462,"t":{"94":{"position":[[73547,7],[73592,7]]}}}],["mapping(address",{"_index":2241,"t":{"94":{"position":[[60884,15]]}}}],["market",{"_index":87,"t":{"2":{"position":[[1023,8],[1277,6],[2819,6],[4958,7]]}}}],["match",{"_index":1165,"t":{"89":{"position":[[231,5]]}}}],["math",{"_index":1989,"t":{"94":{"position":[[46389,4],[46454,4],[59367,4],[69958,6]]}}}],["math.log10(valu",{"_index":2394,"t":{"94":{"position":[[70589,17]]}}}],["math.log256(valu",{"_index":2413,"t":{"94":{"position":[[71470,18]]}}}],["math/math.sol\\\\\\\";\\\\nimport",{"_index":2381,"t":{"94":{"position":[[69970,33]]}}}],["math/signedmath.sol\\\\\\\";\\\\n\\\\n/**\\\\n",{"_index":2382,"t":{"94":{"position":[[70022,42]]}}}],["mathoverflowedmuldiv();\\\\n",{"_index":2080,"t":{"94":{"position":[[50816,26]]}}}],["mathoverflowedmuldiv();\\\\n\\\\n",{"_index":1994,"t":{"94":{"position":[[46520,29]]}}}],["matur",{"_index":3269,"t":{"262":{"position":[[767,6]]}}}],["max",{"_index":2609,"t":{"98":{"position":[[111,3]]}}}],["max(int256",{"_index":2219,"t":{"94":{"position":[[59523,10]]}}}],["max(uint256",{"_index":2021,"t":{"94":{"position":[[48385,11]]}}}],["max_btc_amount",{"_index":2465,"t":{"94":{"position":[[73654,14],[74936,14],[76998,14]]}}}],["maxfeeperga",{"_index":870,"t":{"42":{"position":[[614,13]]},"265":{"position":[[1002,13]]}}}],["maxi",{"_index":340,"t":{"2":{"position":[[5911,5]]}}}],["maximum",{"_index":956,"t":{"68":{"position":[[221,7]]},"70":{"position":[[113,7]]},"72":{"position":[[94,7]]},"74":{"position":[[120,7]]}}}],["maxi’",{"_index":24,"t":{"2":{"position":[[229,6]]}}}],["maxpeer",{"_index":2836,"t":{"161":{"position":[[757,8]]}}}],["maxpriorityfeeperga",{"_index":868,"t":{"42":{"position":[[567,20],[726,20]]},"265":{"position":[[945,20],[1134,20]]}}}],["mayb",{"_index":23,"t":{"2":{"position":[[221,5]]}}}],["mean",{"_index":89,"t":{"2":{"position":[[1121,8]]},"31":{"position":[[588,7]]},"94":{"position":[[11447,8],[38970,7]]},"181":{"position":[[1164,5]]},"228":{"position":[[509,5]]},"250":{"position":[[423,5]]}}}],["meant",{"_index":1491,"t":{"94":{"position":[[20271,5]]}}}],["measur",{"_index":447,"t":{"2":{"position":[[8410,9]]},"39":{"position":[[360,8]]},"303":{"position":[[1964,9]]}}}],["mechan",{"_index":723,"t":{"25":{"position":[[87,9]]},"94":{"position":[[16819,10],[21299,10],[22396,10],[62681,9]]},"262":{"position":[[247,11]]},"265":{"position":[[77,11]]},"281":{"position":[[882,10]]},"283":{"position":[[843,10]]}}}],["media",{"_index":3250,"t":{"252":{"position":[[60,5]]}}}],["medium",{"_index":3182,"t":{"232":{"position":[[367,6]]},"252":{"position":[[417,7]]}}}],["medium:https://medium.com/@bitlay",{"_index":3151,"t":{"222":{"position":[[203,35]]},"258":{"position":[[244,35]]}}}],["meet",{"_index":220,"t":{"2":{"position":[[3229,4]]},"29":{"position":[[234,5]]},"33":{"position":[[285,4]]},"171":{"position":[[480,4]]}}}],["member",{"_index":772,"t":{"31":{"position":[[763,7]]},"94":{"position":[[66672,6],[67683,6],[67942,6],[68201,6],[68460,6],[68718,6],[69258,6]]},"252":{"position":[[178,7]]}}}],["membership",{"_index":764,"t":{"31":{"position":[[369,10]]}}}],["memori",{"_index":1193,"t":{"89":{"position":[[1459,6]]},"94":{"position":[[10321,6],[10344,6],[10440,6],[20499,6],[21181,6],[21539,6],[22263,6],[22597,6],[25487,6],[25524,7],[25949,6],[26001,7],[26133,6],[26441,6],[26483,7],[26517,6],[26821,6],[26858,7],[26892,6],[27351,6],[27403,7],[27992,6],[28040,7],[28267,6],[28449,6],[28486,6],[30868,6],[31146,6],[32267,6],[39447,6],[39467,6],[41217,6],[41240,6],[41336,6],[41885,7],[42323,7],[43841,6],[44657,6],[45250,6],[45935,6],[62360,6],[62936,6],[63090,7],[63659,6],[63718,6],[64037,7],[64142,6],[64165,6],[64211,6],[64757,6],[65240,7],[67829,6],[68088,6],[68347,6],[68606,6],[68862,6],[69141,6],[69400,6],[69674,6],[70544,7],[70622,6],[70691,6],[70815,6],[71143,7],[71416,7],[71705,7],[71755,6],[72305,7],[72477,6],[72494,6],[74143,6],[74638,6],[74665,6],[75454,6],[76356,6],[77095,6],[77457,6],[78554,7]]}}}],["memory\\\\n",{"_index":2573,"t":{"94":{"position":[[77479,9]]}}}],["messag",{"_index":597,"t":{"5":{"position":[[399,10]]},"7":{"position":[[507,10]]},"10":{"position":[[556,10]]},"12":{"position":[[1360,10]]},"16":{"position":[[476,10]]},"64":{"position":[[348,10]]},"92":{"position":[[1112,10]]},"94":{"position":[[11025,7],[29031,7],[29652,7],[30489,7],[31511,7],[32107,7],[37154,7],[40497,7],[40610,8],[42724,7],[42882,7],[43566,7],[44349,9],[44664,8]]},"185":{"position":[[1063,8],[2271,8]]},"306":{"position":[[372,10]]},"308":{"position":[[510,10]]}}}],["message\":\"ok",{"_index":948,"t":{"66":{"position":[[465,15]]},"68":{"position":[[1253,15]]},"70":{"position":[[1276,15]]},"72":{"position":[[497,15]]},"74":{"position":[[760,15]]},"76":{"position":[[1705,15]]},"78":{"position":[[1726,15]]},"80":{"position":[[776,15]]},"94":{"position":[[364,15]]}}}],["message));\\\\n",{"_index":1961,"t":{"94":{"position":[[44830,13]]}}}],["message/asset",{"_index":479,"t":{"2":{"position":[[9644,13]]}}}],["message:\\\\\\\\n",{"_index":1955,"t":{"94":{"position":[[44397,17],[44770,18]]}}}],["message:\\\\\\\\n32",{"_index":1935,"t":{"94":{"position":[[43307,20],[43919,20]]}}}],["messagehash",{"_index":1933,"t":{"94":{"position":[[43255,13],[43496,13],[43770,12],[43997,12],[44131,11]]}}}],["messagehash\\\\n",{"_index":1948,"t":{"94":{"position":[[43969,14]]}}}],["messagehashutil",{"_index":1702,"t":{"94":{"position":[[30554,17],[32172,17],[36192,18],[43053,16]]}}}],["messagehashutils.sol\\\\\\\";\\\\nimport",{"_index":1790,"t":{"94":{"position":[[36216,40]]}}}],["messagehashutils.totypeddatahash(_domainseparatorv4",{"_index":1895,"t":{"94":{"position":[[41004,54]]}}}],["messages).\\\\n",{"_index":1932,"t":{"94":{"position":[[43186,13],[44277,13]]}}}],["messaging/asset",{"_index":3364,"t":{"303":{"position":[[539,17]]}}}],["metamask",{"_index":883,"t":{"42":{"position":[[875,9]]},"108":{"position":[[426,9]]},"209":{"position":[[426,9],[1046,9],[1207,10]]},"212":{"position":[[146,8]]},"245":{"position":[[408,9]]},"265":{"position":[[1264,9]]}}}],["metamask].\\\\n",{"_index":1825,"t":{"94":{"position":[[37646,13]]}}}],["method",{"_index":394,"t":{"2":{"position":[[7167,6]]},"94":{"position":[[10914,7],[16254,6],[42847,7],[45740,6],[54758,6]]},"112":{"position":[[35,7],[88,8]]},"114":{"position":[[5,6]]},"155":{"position":[[429,7]]},"183":{"position":[[89,6]]},"303":{"position":[[762,6]]}}}],["method\":\"eth_gettraceactionbyblockhash",{"_index":2737,"t":{"136":{"position":[[49,41]]}}}],["method\":\"eth_gettraceactionbyblocknumb",{"_index":2735,"t":{"128":{"position":[[49,43]]}}}],["method\":\"eth_gettraceactionbytxhash",{"_index":2713,"t":{"120":{"position":[[49,38]]}}}],["method.\\\\n",{"_index":1938,"t":{"94":{"position":[[43468,10],[44571,10]]}}}],["method\\\\n",{"_index":1822,"t":{"94":{"position":[[37560,9]]}}}],["methodid",{"_index":986,"t":{"68":{"position":[[1567,11],[1894,11]]}}}],["migrat",{"_index":248,"t":{"2":{"position":[[3847,9],[8980,7]]},"167":{"position":[[125,7]]},"195":{"position":[[8,7],[142,7]]},"209":{"position":[[1443,9]]},"228":{"position":[[542,7]]},"245":{"position":[[501,9]]},"291":{"position":[[454,9]]}}}],["million",{"_index":296,"t":{"2":{"position":[[4912,8]]}}}],["min(int256",{"_index":2221,"t":{"94":{"position":[[59692,10]]}}}],["min(result",{"_index":2189,"t":{"94":{"position":[[55266,11]]}}}],["min(uint256",{"_index":2023,"t":{"94":{"position":[[48550,11]]}}}],["mine",{"_index":96,"t":{"2":{"position":[[1210,6]]}}}],["miner",{"_index":76,"t":{"2":{"position":[[896,6],[12034,6]]}}}],["minim",{"_index":2700,"t":{"116":{"position":[[305,7]]},"124":{"position":[[312,7]]}}}],["minimum",{"_index":854,"t":{"42":{"position":[[280,7],[468,7]]},"159":{"position":[[0,8]]},"265":{"position":[[634,7],[835,7]]}}}],["minvalu",{"_index":2698,"t":{"116":{"position":[[265,9]]},"124":{"position":[[272,9]]}}}],["mirror",{"_index":3291,"t":{"270":{"position":[[399,9]]}}}],["miss",{"_index":1990,"t":{"94":{"position":[[46404,7],[59382,7]]}}}],["mission",{"_index":281,"t":{"2":{"position":[[4347,7]]}}}],["mit",{"_index":2041,"t":{"94":{"position":[[49588,3],[49685,3]]}}}],["mit\\\\n",{"_index":1246,"t":{"94":{"position":[[9840,8],[10585,8],[14429,8],[17213,8],[22864,8],[28779,8],[36064,8],[42518,8],[46255,8],[59220,8],[60497,8],[61984,8],[66090,8],[69842,8]]}}}],["mitig",{"_index":1427,"t":{"94":{"position":[[16405,8]]},"283":{"position":[[591,8]]}}}],["mixedcase\\\\n",{"_index":1390,"t":{"94":{"position":[[14251,12],[41819,12],[42254,12]]}}}],["mload(0x40)\\\\n",{"_index":1977,"t":{"94":{"position":[[45984,14]]}}}],["mload(add(sig",{"_index":2574,"t":{"94":{"position":[[77549,14],[77599,14],[77686,14]]}}}],["mload(add(signatur",{"_index":1718,"t":{"94":{"position":[[31189,20],[31225,20],[31269,20]]}}}],["mload(p",{"_index":2570,"t":{"94":{"position":[[77412,8]]}}}],["mload(returndata)\\\\n",{"_index":1654,"t":{"94":{"position":[[28547,20]]}}}],["mm",{"_index":2064,"t":{"94":{"position":[[50246,2]]}}}],["mnemon",{"_index":3131,"t":{"209":{"position":[[3487,9],[3497,11]]}}}],["mod",{"_index":2054,"t":{"94":{"position":[[49888,3],[49902,3],[51929,3],[52048,3],[52171,3],[52463,3],[52523,3],[52584,3],[52645,3],[52706,3],[52768,3]]}}}],["modal",{"_index":2954,"t":{"177":{"position":[[1660,5]]},"183":{"position":[[145,6],[504,6]]}}}],["mode",{"_index":2213,"t":{"94":{"position":[[58933,4]]},"193":{"position":[[818,4]]}}}],["model",{"_index":426,"t":{"2":{"position":[[7753,6],[9506,5]]},"293":{"position":[[56,6]]},"303":{"position":[[344,6],[392,6],[1329,6]]}}}],["modif",{"_index":461,"t":{"2":{"position":[[9050,13]]},"167":{"position":[[195,13]]}}}],["modifi",{"_index":2494,"t":{"94":{"position":[[74262,8],[74352,8]]},"209":{"position":[[506,6]]}}}],["modul",{"_index":2626,"t":{"100":{"position":[[232,7]]},"102":{"position":[[259,7]]}}}],["modular",{"_index":2123,"t":{"94":{"position":[[52351,7],[52859,7]]}}}],["module.export",{"_index":1137,"t":{"87":{"position":[[149,14]]},"89":{"position":[[1218,14],[1545,14]]},"209":{"position":[[1760,14],[3383,14]]},"237":{"position":[[415,14]]}}}],["module=account",{"_index":938,"t":{"64":{"position":[[77,15]]},"66":{"position":[[95,15]]},"68":{"position":[[298,15],[584,15]]},"70":{"position":[[307,15],[600,15]]},"72":{"position":[[171,15]]},"74":{"position":[[197,15]]},"76":{"position":[[254,15],[455,15],[650,15]]},"78":{"position":[[263,15],[467,15],[665,15]]},"80":{"position":[[85,15],[354,15]]},"308":{"position":[[95,15]]}}}],["module=block",{"_index":581,"t":{"5":{"position":[[146,13]]},"7":{"position":[[153,13]]}}}],["module=contract",{"_index":1206,"t":{"92":{"position":[[121,16]]},"94":{"position":[[87,16]]},"96":{"position":[[33,16]]}}}],["module=log",{"_index":620,"t":{"10":{"position":[[113,12]]},"12":{"position":[[109,12]]}}}],["module=token",{"_index":3375,"t":{"306":{"position":[[95,13]]}}}],["module=transact",{"_index":686,"t":{"16":{"position":[[146,19]]}}}],["modulo",{"_index":2106,"t":{"94":{"position":[[51997,6],[52934,6]]}}}],["momentarili",{"_index":2920,"t":{"173":{"position":[[596,11]]}}}],["monetari",{"_index":18,"t":{"2":{"position":[[186,8]]}}}],["money",{"_index":545,"t":{"2":{"position":[[11665,6]]}}}],["monitor",{"_index":809,"t":{"37":{"position":[[97,10]]}}}],["more",{"_index":74,"t":{"2":{"position":[[869,4],[2625,4],[2856,4],[7820,4],[8761,4],[9193,4],[9286,4],[9465,4],[10336,4],[10943,4],[11450,4]]},"39":{"position":[[939,4],[1064,4]]},"94":{"position":[[13374,4]]},"106":{"position":[[497,4]]},"171":{"position":[[345,4]]},"177":{"position":[[1332,4],[1429,4]]},"183":{"position":[[970,4]]},"207":{"position":[[497,4]]},"226":{"position":[[392,4]]},"265":{"position":[[215,4]]},"277":{"position":[[15,4]]},"281":{"position":[[190,4]]},"283":{"position":[[300,4]]},"285":{"position":[[6,4]]}}}],["more].\\\\n",{"_index":1572,"t":{"94":{"position":[[23985,9]]}}}],["moreov",{"_index":769,"t":{"31":{"position":[[650,9]]}}}],["most\\\\n",{"_index":1761,"t":{"94":{"position":[[34036,7]]}}}],["move",{"_index":1395,"t":{"94":{"position":[[14688,5],[15391,5],[16741,5]]}}}],["movement",{"_index":43,"t":{"2":{"position":[[456,8]]},"27":{"position":[[95,8]]},"291":{"position":[[61,8]]}}}],["movevm",{"_index":3360,"t":{"303":{"position":[[124,8]]}}}],["mpc",{"_index":405,"t":{"2":{"position":[[7304,3]]},"50":{"position":[[55,3]]},"220":{"position":[[23,3],[106,3]]},"303":{"position":[[899,3]]}}}],["msb",{"_index":2160,"t":{"94":{"position":[[54065,11]]}}}],["msb(a",{"_index":2161,"t":{"94":{"position":[[54165,7]]}}}],["msb(a)=2**k",{"_index":2163,"t":{"94":{"position":[[54217,13]]}}}],["msg.sender",{"_index":1328,"t":{"94":{"position":[[12300,12]]}}}],["msg.sender;\\\\n",{"_index":2491,"t":{"94":{"position":[[74208,14]]}}}],["msg.value);\\\\n",{"_index":2596,"t":{"94":{"position":[[78656,14]]}}}],["mstore(0x00",{"_index":1946,"t":{"94":{"position":[[43879,12]]}}}],["mstore(0x1c",{"_index":1949,"t":{"94":{"position":[[43984,12]]}}}],["mstore(add(ptr",{"_index":1980,"t":{"94":{"position":[[46032,15],[46075,15]]}}}],["mstore(add(str",{"_index":2305,"t":{"94":{"position":[[64269,15]]}}}],["mstore(ptr",{"_index":1978,"t":{"94":{"position":[[45999,11]]}}}],["mstore(str",{"_index":2303,"t":{"94":{"position":[[64249,11]]}}}],["mstore8(ptr",{"_index":2401,"t":{"94":{"position":[[70853,12]]}}}],["muldiv",{"_index":1992,"t":{"94":{"position":[[46478,6]]}}}],["muldiv(uint256",{"_index":2048,"t":{"94":{"position":[[49716,14],[53336,14]]}}}],["muldiv(x",{"_index":2143,"t":{"94":{"position":[[53459,9]]}}}],["mulmod(x",{"_index":2065,"t":{"94":{"position":[[50252,9],[51145,9],[53523,9]]}}}],["mulmod.\\\\n",{"_index":2084,"t":{"94":{"position":[[51121,10]]}}}],["multi",{"_index":402,"t":{"2":{"position":[[7270,5],[7312,6],[7539,5],[7726,5]]},"33":{"position":[[474,5]]},"218":{"position":[[27,5]]},"220":{"position":[[27,6]]},"283":{"position":[[780,5]]},"303":{"position":[[865,5],[907,6],[1132,5],[1302,5]]}}}],["multical",{"_index":921,"t":{"57":{"position":[[229,9]]}}}],["multicall_v1",{"_index":929,"t":{"59":{"position":[[214,12]]}}}],["multipl",{"_index":376,"t":{"2":{"position":[[6747,8],[9167,8]]},"12":{"position":[[486,8],[1269,8]]},"33":{"position":[[654,8]]},"39":{"position":[[421,8]]},"44":{"position":[[10,8]]},"46":{"position":[[224,8]]},"50":{"position":[[46,8]]},"94":{"position":[[13989,8],[47272,14],[65716,8]]},"177":{"position":[[516,8],[1050,8]]},"218":{"position":[[143,8]]},"228":{"position":[[470,8]]},"289":{"position":[[76,8]]}}}],["multipli",{"_index":2051,"t":{"94":{"position":[[49836,8],[52838,11]]}}}],["multisig",{"_index":3140,"t":{"218":{"position":[[90,9],[263,8]]}}}],["mycontract",{"_index":1217,"t":{"92":{"position":[[709,10]]}}}],["mycontract.at(\"0xc9121e476155ebf0b794b7b351808af3787e727d",{"_index":1220,"t":{"92":{"position":[[779,60]]}}}],["mycontractinst",{"_index":1219,"t":{"92":{"position":[[758,18]]}}}],["mycontractinstance.memberid(\"0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715",{"_index":1221,"t":{"92":{"position":[[853,74]]}}}],["mycontractinstance.members(1",{"_index":1223,"t":{"92":{"position":[[977,30]]}}}],["n",{"_index":767,"t":{"31":{"position":[[568,3],[788,4]]},"33":{"position":[[558,4],[566,4]]},"94":{"position":[[9974,4],[9979,6],[10057,5],[10098,6],[10230,5],[10291,4],[10889,4],[11208,4],[11247,4],[11880,4],[12007,4],[12093,5],[12127,4],[12132,4],[12183,4],[12253,6],[12262,4],[12269,6],[12276,4],[12536,4],[12759,4],[12764,6],[12889,4],[13001,4],[13038,4],[13062,4],[13363,4],[13514,4],[13568,5],[13728,6],[13865,4],[14008,5],[14084,6],[14206,5],[14637,4],[14642,6],[14747,4],[14788,5],[14873,6],[15013,5],[15104,6],[15163,5],[15231,6],[15296,5],[15377,6],[15462,4],[15540,4],[15576,5],[15658,6],[15834,4],[15908,5],[16004,6],[16114,4],[16192,4],[16604,4],[16641,5],[16727,6],[16892,4],[16970,4],[17006,5],[18008,4],[18046,6],[18104,5],[18163,6],[18228,5],[18350,6],[18521,5],[18599,4],[18688,6],[18908,5],[19004,4],[19103,6],[19275,5],[19367,4],[19502,6],[19686,5],[19790,4],[19805,4],[19923,4],[20018,4],[20094,4],[20107,6],[20405,5],[20488,4],[20627,4],[20753,4],[20766,6],[21126,5],[21202,4],[21660,4],[21717,4],[21730,6],[22090,4],[22204,5],[22299,4],[23063,4],[23068,6],[23156,5],[23219,6],[23288,5],[23340,6],[23423,5],[23460,6],[23610,4],[23892,4],[23995,4],[24333,5],[24410,4],[24451,4],[24594,4],[24628,4],[24641,6],[24816,4],[25082,4],[25319,4],[25343,4],[25437,5],[25532,4],[25595,6],[25732,4],[25756,4],[25890,5],[26009,4],[26049,4],[26107,4],[26265,6],[26385,5],[26491,4],[26641,6],[26763,5],[26866,4],[27018,6],[27263,5],[27411,4],[27430,4],[27466,4],[27678,4],[27719,4],[27746,4],[27759,6],[27940,5],[28048,4],[28067,4],[28103,4],[28130,4],[28143,6],[28238,5],[28299,4],[28388,4],[28519,4],[28616,4],[28628,4],[28662,4],[28979,4],[29131,4],[29154,4],[29248,6],[29305,5],[29348,6],[29402,5],[29465,6],[29544,5],[29597,6],[29902,4],[29993,4],[30216,4],[30606,4],[30822,5],[30941,4],[30974,4],[31179,4],[31301,4],[31350,4],[31443,4],[31456,6],[31611,4],[31834,4],[32224,5],[32317,4],[32476,6],[32590,4],[32671,5],[32789,4],[32804,4],[33078,4],[33091,6],[33201,5],[33293,4],[33448,6],[33565,5],[33708,4],[34153,5],[34624,4],[34847,4],[34989,6],[35103,5],[35203,4],[35360,6],[35476,5],[35554,4],[35594,4],[35685,4],[35782,4],[35897,4],[35946,4],[36517,4],[36971,4],[37229,4],[37442,4],[37660,4],[38013,4],[38123,4],[38195,4],[38887,6],[38959,4],[39105,4],[39281,4],[39422,5],[39483,4],[39832,6],[39901,5],[39969,4],[40043,4],[40089,4],[40129,4],[40206,4],[40322,6],[40525,4],[40635,4],[40827,7],[40893,6],[40900,5],[40992,4],[41083,6],[41117,5],[41187,4],[41357,4],[41362,4],[41374,4],[41516,5],[41530,6],[41589,4],[41774,5],[41893,4],[41959,6],[42021,4],[42209,5],[42331,4],[42819,4],[43070,4],[43075,6],[43200,4],[43479,4],[43693,4],[43724,5],[43822,4],[43874,4],[44153,4],[44166,6],[44291,4],[44582,4],[44613,5],[44705,4],[44852,6],[44981,4],[45147,4],[45178,5],[45295,4],[45382,6],[45479,4],[45770,4],[45801,5],[45916,4],[45968,4],[46147,4],[46459,4],[46464,6],[46508,5],[46564,4],[46705,6],[46792,5],[46874,4],[46889,4],[46970,4],[46983,6],[47073,5],[47155,4],[47170,4],[47233,4],[47246,6],[47339,5],[47421,4],[47436,4],[47758,4],[47771,6],[47865,5],[47947,4],[47962,4],[48026,4],[48039,6],[48143,5],[48225,4],[48240,4],[48304,4],[48317,6],[48370,5],[48443,4],[48481,6],[48535,5],[48608,4],[48646,6],[48740,5],[48817,4],[48895,6],[48964,4],[49093,5],[49170,4],[49187,4],[49400,6],[49701,5],[49805,4],[49820,4],[50237,4],[50401,4],[50804,4],[50851,50],[51089,4],[51549,4],[53193,4],[53206,6],[53321,5],[53437,4],[53554,4],[53575,4],[53606,6],[53739,4],[53823,5],[53886,4],[53903,4],[54039,5],[54252,5],[54433,5],[54974,4],[55294,4],[55307,6],[55390,5],[55472,4],[55487,4],[55601,4],[55614,6],[55725,5],[55792,4],[55830,4],[55857,4],[55898,4],[55924,4],[55963,4],[55989,4],[56028,4],[56054,4],[56093,4],[56118,4],[56155,4],[56180,4],[56217,4],[56242,4],[56279,4],[56304,4],[56325,4],[56330,4],[56361,6],[56495,5],[56581,4],[56596,4],[56714,4],[56727,6],[56839,5],[56907,4],[56945,4],[56973,4],[57017,4],[57045,4],[57089,4],[57117,4],[57161,4],[57188,4],[57230,4],[57257,4],[57299,4],[57326,4],[57368,4],[57395,4],[57416,4],[57421,4],[57452,6],[57587,5],[57674,4],[57689,4],[57809,4],[57822,6],[57935,4],[58056,5],[58125,4],[58163,4],[58190,4],[58230,4],[58256,4],[58294,4],[58320,4],[58358,4],[58384,4],[58422,4],[58447,4],[58468,4],[58473,4],[58504,6],[58640,5],[58728,4],[58743,4],[58870,4],[58883,6],[58990,5],[59070,4],[59443,4],[59448,6],[59508,5],[59578,4],[59616,6],[59677,5],[59747,4],[59785,6],[59903,5],[59977,4],[60136,6],[60208,5],[60234,2],[60269,4],[60284,4],[60330,2],[60380,1],[60392,4],[60717,4],[60722,6],[60806,5],[60943,6],[61006,5],[61081,4],[61120,6],[61155,4],[61213,5],[61288,4],[61486,4],[61569,4],[61582,6],[61676,5],[61755,4],[61821,4],[61873,4],[62235,6],[62452,4],[62728,4],[62753,4],[62792,4],[62822,5],[62828,4],[62910,4],[62957,4],[63032,4],[63037,4],[63098,4],[63160,4],[63167,4],[63174,6],[63207,4],[63463,6],[63538,4],[63623,5],[63707,4],[63769,4],[63804,4],[63892,6],[63965,5],[64045,4],[64244,4],[64301,4],[64329,6],[64384,5],[64460,4],[64544,4],[64581,4],[64612,6],[64709,5],[64824,4],[64859,4],[64903,4],[65006,4],[65019,6],[65133,5],[65248,4],[65305,4],[65344,4],[65366,4],[65379,6],[65512,4],[65735,5],[65846,4],[65903,4],[65944,4],[65980,4],[66385,4],[66592,4],[66717,4],[66813,4],[66940,4],[67009,4],[67084,4],[67089,4],[67160,4],[67297,4],[67304,4],[67311,6],[67343,4],[67367,4],[67417,4],[67464,4],[67514,4],[67563,4],[67610,4],[67639,6],[67720,5],[67810,4],[67862,4],[67885,4],[67898,6],[67979,5],[68069,4],[68121,4],[68144,4],[68157,6],[68238,5],[68328,4],[68380,4],[68403,4],[68416,6],[68497,5],[68587,4],[68639,4],[68662,4],[68675,6],[68755,5],[68843,4],[68895,4],[68918,4],[68931,6],[69026,5],[69122,4],[69174,4],[69203,4],[69216,6],[69295,5],[69381,4],[69433,4],[69456,4],[69469,6],[69562,5],[69655,4],[69707,4],[69736,4],[70115,4],[70237,6],[70312,5],[70391,6],[70475,5],[70552,4],[70567,4],[70724,4],[70768,4],[70786,4],[70796,4],[70848,4],[70903,4],[70950,4],[70973,4],[70986,6],[71069,5],[71151,4],[71256,6],[71344,5],[71424,4],[71439,4],[71498,4],[71511,6],[71617,5],[71713,4],[71898,4],[71969,4],[71995,4],[72055,4],[72094,6],[72234,5],[72313,4],[72389,6],[72449,5],[72533,4],[73280,4],[73326,4],[74283,4],[74347,4],[74376,4],[74506,5],[74534,5],[74558,5],[74582,5],[74628,3],[74707,4],[75182,3],[75640,4],[75711,4],[75777,4],[75880,4],[76094,3],[76098,4],[76185,4],[76582,4],[76719,4],[76788,4],[76993,4],[77060,4],[77173,4],[77254,4],[77259,5],[77752,4],[77757,3],[77853,3],[77946,4],[78344,4],[78457,4],[78562,4],[78625,4]]}}}],["n);\\\\n",{"_index":2233,"t":{"94":{"position":[[60385,6]]}}}],["n\\\\n",{"_index":1476,"t":{"94":{"position":[[18680,7],[19095,7],[19494,7],[20099,7],[20758,7],[21722,7],[24509,7],[24633,7],[25587,7],[26257,7],[26633,7],[27010,7],[27751,7],[28135,7],[29240,7],[31448,7],[32468,7],[33083,7],[33440,7],[34688,7],[34919,7],[34981,7],[35352,7],[38151,8],[39824,7],[40134,7],[40314,7],[41075,7],[41522,7],[41951,7],[44158,7],[44844,7],[45374,7],[46697,7],[46975,7],[47238,7],[47763,7],[48031,7],[48309,7],[48473,7],[48638,7],[48887,7],[49278,7],[49392,7],[50323,7],[50691,7],[50843,7],[50929,53],[51307,7],[51827,7],[53198,7],[53598,7],[53921,7],[55299,7],[55606,7],[56353,7],[56719,7],[57444,7],[57814,7],[58496,7],[58875,7],[59608,7],[59777,7],[60128,7],[61112,7],[61574,7],[63884,7],[64321,7],[64604,7],[65011,7],[65371,7],[67390,7],[67437,7],[67487,7],[67537,7],[67585,7],[67631,7],[67890,7],[68149,7],[68408,7],[68667,7],[68923,7],[69208,7],[69461,7],[70978,7],[71248,7],[71503,7],[72086,7],[72381,7],[74254,7],[74445,7],[76510,7],[76926,7],[77489,8],[77710,7],[78257,7],[78381,7],[78494,7],[78590,7]]}}}],["nabstract",{"_index":1835,"t":{"94":{"position":[[38081,13],[60687,13]]}}}],["nakamoto",{"_index":555,"t":{"2":{"position":[[12158,8]]}}}],["name",{"_index":90,"t":{"2":{"position":[[1130,7],[2901,7],[5178,4]]},"89":{"position":[[408,5]]},"94":{"position":[[14246,4],[38981,6],[39114,7],[39140,4],[39177,4],[39454,5],[41548,4],[41814,4],[42249,4],[62786,5],[63053,6],[78511,6]]},"106":{"position":[[24,4]]},"110":{"position":[[9,4]]},"139":{"position":[[0,4]]},"155":{"position":[[214,5]]},"202":{"position":[[18,4],[58,6],[154,6],[182,4],[450,5],[482,5],[560,5]]},"207":{"position":[[24,4]]},"209":{"position":[[2349,5],[2488,5],[2775,4]]},"237":{"position":[[481,4]]},"243":{"position":[[0,4]]}}}],["name,\\\\n",{"_index":1266,"t":{"94":{"position":[[10328,8],[41224,8]]}}}],["name,str",{"_index":1839,"t":{"94":{"position":[[38234,11]]}}}],["name.toshortstringwithfallback(_namefallback);\\\\n",{"_index":1866,"t":{"94":{"position":[[39496,49]]}}}],["nativ",{"_index":751,"t":{"29":{"position":[[378,6]]},"42":{"position":[[11,6]]},"155":{"position":[[339,6]]},"169":{"position":[[180,6],[280,8],[692,6],[792,8]]},"179":{"position":[[499,6]]},"181":{"position":[[55,8]]},"185":{"position":[[1586,6]]},"187":{"position":[[325,6]]},"228":{"position":[[373,6]]},"245":{"position":[[204,6]]},"250":{"position":[[241,9]]},"262":{"position":[[463,6]]},"265":{"position":[[303,6]]},"279":{"position":[[121,6]]}}}],["natur",{"_index":488,"t":{"2":{"position":[[9889,6]]}}}],["navig",{"_index":2758,"t":{"153":{"position":[[0,8]]}}}],["neatli",{"_index":325,"t":{"2":{"position":[[5486,6]]}}}],["necessari",{"_index":783,"t":{"33":{"position":[[272,9]]},"94":{"position":[[41703,9],[42138,9]]},"100":{"position":[[468,10]]},"265":{"position":[[862,10]]}}}],["necessit",{"_index":335,"t":{"2":{"position":[[5795,11]]},"281":{"position":[[261,13]]}}}],["need",{"_index":459,"t":{"2":{"position":[[9029,4],[10444,4]]},"29":{"position":[[266,5]]},"31":{"position":[[620,6]]},"85":{"position":[[22,5],[193,5]]},"87":{"position":[[394,6],[727,5]]},"89":{"position":[[355,4],[467,4],[640,4]]},"94":{"position":[[11130,4],[21213,4],[22310,4],[36806,4],[36856,4],[53060,4],[54843,4],[58008,6],[66563,4]]},"98":{"position":[[190,4]]},"161":{"position":[[974,6]]},"163":{"position":[[320,4]]},"167":{"position":[[174,4]]},"171":{"position":[[472,4]]},"173":{"position":[[179,4]]},"175":{"position":[[95,4]]},"177":{"position":[[786,4],[1365,4],[1875,4],[2029,4]]},"181":{"position":[[558,4]]},"193":{"position":[[795,5]]},"198":{"position":[[236,6]]},"209":{"position":[[3080,4]]},"237":{"position":[[20,4],[612,5]]}}}],["neg",{"_index":1997,"t":{"94":{"position":[[46586,8]]}}}],["net",{"_index":2828,"t":{"161":{"position":[[627,6],[695,6]]}}}],["network",{"_index":170,"t":{"2":{"position":[[2349,7],[5689,8],[6713,8],[8153,7],[8234,8],[8269,8],[8688,8],[11741,10],[12067,8]]},"21":{"position":[[499,7],[818,9]]},"31":{"position":[[60,7],[296,7],[631,7],[704,7]]},"37":{"position":[[233,7]]},"46":{"position":[[73,9]]},"48":{"position":[[426,8]]},"54":{"position":[[485,8]]},"62":{"position":[[0,7]]},"87":{"position":[[446,9],[1028,8],[1183,8]]},"89":{"position":[[375,8],[718,7]]},"100":{"position":[[157,8]]},"104":{"position":[[66,8]]},"106":{"position":[[16,7]]},"108":{"position":[[16,7]]},"141":{"position":[[60,7],[145,7]]},"159":{"position":[[67,7]]},"163":{"position":[[677,7]]},"169":{"position":[[232,7]]},"187":{"position":[[82,7],[476,7]]},"207":{"position":[[16,7]]},"209":{"position":[[16,7],[641,9],[1092,8],[1779,9],[1999,8],[2102,8],[2158,9],[2321,7],[2364,9],[2546,7],[2595,8],[2611,9],[2819,7],[3238,7],[3275,8],[3305,7],[3406,9],[3677,7]]},"212":{"position":[[44,9],[331,9]]},"216":{"position":[[4,8],[181,7]]},"228":{"position":[[87,8]]},"230":{"position":[[241,7]]},"232":{"position":[[220,8]]},"250":{"position":[[154,8]]},"262":{"position":[[282,7]]},"267":{"position":[[54,7]]},"270":{"position":[[390,8]]},"283":{"position":[[108,8]]},"293":{"position":[[205,7],[386,7]]},"303":{"position":[[1730,7],[1811,8],[1846,8],[2245,8],[2463,7]]}}}],["network'",{"_index":2889,"t":{"169":{"position":[[9,9]]},"171":{"position":[[391,9]]},"173":{"position":[[9,9]]},"177":{"position":[[1523,9],[1634,9]]},"295":{"position":[[198,9]]}}}],["network/btc",{"_index":2903,"t":{"169":{"position":[[854,11]]},"175":{"position":[[177,11],[432,11],[507,11]]},"177":{"position":[[23,11],[423,11],[2770,11]]},"179":{"position":[[122,11],[376,11]]},"181":{"position":[[800,11]]},"183":{"position":[[788,11],[1329,11]]},"185":{"position":[[2010,11]]},"187":{"position":[[147,11]]}}}],["network/chain",{"_index":2926,"t":{"175":{"position":[[244,15],[465,14],[540,14]]},"177":{"position":[[1201,15],[2838,16]]},"179":{"position":[[159,15]]}}}],["network_id",{"_index":3115,"t":{"209":{"position":[[1902,11]]}}}],["network’",{"_index":234,"t":{"2":{"position":[[3536,9]]}}}],["never",{"_index":2249,"t":{"94":{"position":[[61456,5]]}}}],["new",{"_index":8,"t":{"2":{"position":[[88,3],[1117,3],[1174,3],[1266,3],[1458,3],[3410,3],[4200,3],[4254,3],[6263,3],[8619,3],[9116,3]]},"37":{"position":[[251,3]]},"92":{"position":[[398,3]]},"94":{"position":[[14995,3],[16324,3],[34259,3],[41496,3],[64094,4],[64178,3],[70638,3],[71771,3]]},"173":{"position":[[347,3],[369,3]]},"177":{"position":[[2280,4],[2301,3],[3416,3],[3436,3],[3459,3],[3487,3]]},"179":{"position":[[42,3]]},"181":{"position":[[940,3]]},"209":{"position":[[1819,3],[2956,3]]},"237":{"position":[[116,3]]},"250":{"position":[[277,3]]},"303":{"position":[[2176,3]]}}}],["newer",{"_index":3087,"t":{"204":{"position":[[221,5]]},"245":{"position":[[328,5]]}}}],["newest",{"_index":3295,"t":{"272":{"position":[[328,6]]}}}],["newimplement",{"_index":2353,"t":{"94":{"position":[[67132,18]]}}}],["newimplementation;\\\\n",{"_index":2356,"t":{"94":{"position":[[67273,21]]}}}],["newop,bool",{"_index":2480,"t":{"94":{"position":[[73963,10],[76753,10]]}}}],["newown",{"_index":2545,"t":{"94":{"position":[[76553,9]]}}}],["newowner);\\\\n",{"_index":2478,"t":{"94":{"position":[[73923,13]]}}}],["newowner;\\\\n",{"_index":2548,"t":{"94":{"position":[[76669,12]]}}}],["newton",{"_index":2116,"t":{"94":{"position":[[52241,6]]}}}],["newton'",{"_index":2181,"t":{"94":{"position":[[54749,8]]}}}],["newvalu",{"_index":2556,"t":{"94":{"position":[[76964,9]]}}}],["newvalue);\\\\n\\\\n",{"_index":2488,"t":{"94":{"position":[[74107,16]]}}}],["newvalue;\\\\n",{"_index":2557,"t":{"94":{"position":[[77015,12]]}}}],["next",{"_index":360,"t":{"2":{"position":[[6359,4],[11506,4]]},"94":{"position":[[14231,4],[41799,4],[42234,4],[60969,4],[61649,4],[77427,4],[77655,4]]},"193":{"position":[[70,4]]},"270":{"position":[[310,4]]}}}],["next.j",{"_index":2915,"t":{"171":{"position":[[617,7]]}}}],["nft",{"_index":21,"t":{"2":{"position":[[214,4],[401,5],[1499,5],[6302,5]]},"78":{"position":[[30,3]]}}}],["ninterfac",{"_index":1343,"t":{"94":{"position":[[12731,14],[14615,14]]}}}],["nlibrari",{"_index":1461,"t":{"94":{"position":[[17985,12],[23042,12],[29112,12],[43040,12],[46441,12],[59419,12],[63181,12],[67318,12],[70094,12]]}}}],["no\\\\n",{"_index":1486,"t":{"94":{"position":[[19618,5]]}}}],["node",{"_index":562,"t":{"2":{"position":[[12291,7]]},"29":{"position":[[468,6]]},"31":{"position":[[4,5],[612,4]]},"37":{"position":[[485,4]]},"161":{"position":[[415,6]]},"163":{"position":[[346,5],[710,4]]},"189":{"position":[[6,4]]},"193":{"position":[[157,5],[227,5],[356,4],[391,5],[424,4],[594,4],[643,4],[766,4],[790,4],[884,6],[937,5]]},"195":{"position":[[50,4],[78,4]]},"202":{"position":[[503,4]]},"260":{"position":[[166,5]]}}}],["node.httptimeout",{"_index":2840,"t":{"161":{"position":[[837,19]]}}}],["node.p2p",{"_index":2835,"t":{"161":{"position":[[746,10]]}}}],["nodiscoveri",{"_index":2837,"t":{"161":{"position":[[771,11]]}}}],["noerror,\\\\n",{"_index":1667,"t":{"94":{"position":[[29159,11]]}}}],["noloc",{"_index":2799,"t":{"161":{"position":[[207,8]]}}}],["nomicfoundation/hardhat",{"_index":1127,"t":{"85":{"position":[[199,25],[245,25]]}}}],["non",{"_index":1455,"t":{"94":{"position":[[17745,3],[18468,3],[18855,3],[19222,3],[19633,3],[20221,3],[20372,3],[30052,4],[30402,3],[31670,4],[32020,3],[50341,3]]}}}],["nonc",{"_index":980,"t":{"68":{"position":[[1412,8],[1754,8]]},"76":{"position":[[1864,8],[2498,8]]},"78":{"position":[[1885,8],[2628,8]]},"94":{"position":[[13338,5],[13762,5],[13928,5],[60634,6],[60656,6],[60710,6],[60740,5],[60981,5],[61318,5],[61450,5],[61634,7],[61731,6],[61802,6],[73273,6]]}}}],["nonce,uint256",{"_index":2457,"t":{"94":{"position":[[73424,13]]}}}],["nonce.\\\\n",{"_index":2238,"t":{"94":{"position":[[60796,9],[61145,9],[61203,9]]}}}],["nonces(address",{"_index":1381,"t":{"94":{"position":[[14023,14],[61021,14],[78274,14]]}}}],["nonces}).\\\\n",{"_index":1361,"t":{"94":{"position":[[13349,13]]}}}],["none",{"_index":1234,"t":{"94":{"position":[[9327,7]]}}}],["noreferrer\">{hash}{txreceipt.transactionhash}/ + + + + +Search the documentation + + + + + +

Search the documentation

+ + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index a0b16284..8e1a0d1d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://docs.bitlayer.org/blogweekly0.5https://docs.bitlayer.org/blog/archiveweekly0.5https://docs.bitlayer.org/blog/Bitlayer:%20Amplifying%20Bitcoinweekly0.5https://docs.bitlayer.org/blog/tagsweekly0.5https://docs.bitlayer.org/blog/tags/hello-bitlayerweekly0.5https://docs.bitlayer.org/markdown-pageweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Accountsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Blocksweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Contractsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Logsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Tokensweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Transactionsweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/BitlayerDesignweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/LVMweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/TransactionLifecycleweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/AboutGasweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Bridgesweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Contractsweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Json-RPCweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Networksweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/PegTokensweekly0.5https://docs.bitlayer.org/docs/Build/Compile%20and%20Runweekly0.5https://docs.bitlayer.org/docs/Build/QuickStartweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-architectureweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-networkweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-scan-apisweekly0.5https://docs.bitlayer.org/docs/category/developer-resourcesweekly0.5https://docs.bitlayer.org/docs/category/faqsweekly0.5https://docs.bitlayer.org/docs/category/getting-startedweekly0.5https://docs.bitlayer.org/docs/category/introductionweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Block%20Explorersweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/BTC%20Connectweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Faucetsweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Subgraphweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/TheGraphweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Walletsweekly0.5https://docs.bitlayer.org/docs/FAQs/Contact%20Detailsweekly0.5https://docs.bitlayer.org/docs/FAQs/Defillama%20TVL%20integrationweekly0.5https://docs.bitlayer.org/docs/FAQs/Frequently%20asked%20questionsweekly0.5https://docs.bitlayer.org/docs/FAQs/WBTCweekly0.5https://docs.bitlayer.org/docs/Introduction/weekly0.5https://docs.bitlayer.org/docs/Introduction/AboutBitlayerweekly0.5https://docs.bitlayer.org/docs/Introduction/BitlayerVsEthweekly0.5https://docs.bitlayer.org/docs/Introduction/BitVMweekly0.5https://docs.bitlayer.org/docs/Introduction/Roadmapweekly0.5https://docs.bitlayer.org/docs/Introduction/TechnicalArchitectureweekly0.5https://docs.bitlayer.org/weekly0.5 \ No newline at end of file +https://docs.bitlayer.org/blogweekly0.5https://docs.bitlayer.org/blog/archiveweekly0.5https://docs.bitlayer.org/blog/Bitlayer:%20Amplifying%20Bitcoinweekly0.5https://docs.bitlayer.org/blog/tagsweekly0.5https://docs.bitlayer.org/blog/tags/hello-bitlayerweekly0.5https://docs.bitlayer.org/markdown-pageweekly0.5https://docs.bitlayer.org/searchweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Accountsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Blocksweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Contractsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Logsweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Tokensweekly0.5https://docs.bitlayer.org/docs/Bitlayer%20Scan%20APIs/Transactionsweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/BitlayerDesignweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/LVMweekly0.5https://docs.bitlayer.org/docs/BitlayerArchitecture/TransactionLifecycleweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/AboutGasweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Bridgesweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Contractsweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Json-RPCweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/Networksweekly0.5https://docs.bitlayer.org/docs/BitlayerNetwork/PegTokensweekly0.5https://docs.bitlayer.org/docs/Build/Compile%20and%20Runweekly0.5https://docs.bitlayer.org/docs/Build/QuickStartweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-architectureweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-networkweekly0.5https://docs.bitlayer.org/docs/category/bitlayer-scan-apisweekly0.5https://docs.bitlayer.org/docs/category/developer-resourcesweekly0.5https://docs.bitlayer.org/docs/category/faqsweekly0.5https://docs.bitlayer.org/docs/category/getting-startedweekly0.5https://docs.bitlayer.org/docs/category/introductionweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Block%20Explorersweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/BTC%20Connectweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Faucetsweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Subgraphweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/TheGraphweekly0.5https://docs.bitlayer.org/docs/DeveloperResources/Walletsweekly0.5https://docs.bitlayer.org/docs/FAQs/Contact%20Detailsweekly0.5https://docs.bitlayer.org/docs/FAQs/Defillama%20TVL%20integrationweekly0.5https://docs.bitlayer.org/docs/FAQs/Frequently%20asked%20questionsweekly0.5https://docs.bitlayer.org/docs/FAQs/WBTCweekly0.5https://docs.bitlayer.org/docs/Introduction/weekly0.5https://docs.bitlayer.org/docs/Introduction/AboutBitlayerweekly0.5https://docs.bitlayer.org/docs/Introduction/BitlayerVsEthweekly0.5https://docs.bitlayer.org/docs/Introduction/BitVMweekly0.5https://docs.bitlayer.org/docs/Introduction/Roadmapweekly0.5https://docs.bitlayer.org/docs/Introduction/TechnicalArchitectureweekly0.5https://docs.bitlayer.org/weekly0.5 \ No newline at end of file