[SPARK-51124][DOC] Self-host JavaScript and CSS in Spark 3.5.0 website
Execute the following command and regenerate the docs related to version 3.5.0 on v3.5.0 tag
```
git cherry-pick 31fbf013e7cba1deeb359c0af17295488cf66461
git cherry-pick 3b892bd632502c56c1f76f858a4531f76118024b
git cherry-pick e395f33dd37f212b6e95b08467e95b58acd73d73
git cherry-pick 03f7200d5b6c63a732162b4762f72ac94a64a3f8
cd docs
SKIP_API=1 PRODUCTION=1 bundle exec jekyll build
```
then copy all contents in `spark/docs/_site` to `site/docs/3.5.0/` and manually reverted the deletion of the following section:
```
<!-- Matomo -->
<script type="text/javascript">
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '40']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
```diff --git a/site/docs/3.5.0/404.html b/site/docs/3.5.0/404.html
index 307f951..21211ca 100644
--- a/site/docs/3.5.0/404.html
+++ b/site/docs/3.5.0/404.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -155,15 +154,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/building-spark.html b/site/docs/3.5.0/building-spark.html
index 672d686..f233c48 100644
--- a/site/docs/3.5.0/building-spark.html
+++ b/site/docs/3.5.0/building-spark.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -481,7 +480,7 @@
<h3 id="related-environment-variables">Related environment variables</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th>Variable Name</th><th>Default</th><th>Meaning</th></tr></thead>
<tr>
<td><code>SPARK_PROJECT_URL</code></td>
@@ -536,15 +535,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/cloud-integration.html b/site/docs/3.5.0/cloud-integration.html
index af76fe6..4546298 100644
--- a/site/docs/3.5.0/cloud-integration.html
+++ b/site/docs/3.5.0/cloud-integration.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -582,15 +581,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/cluster-overview.html b/site/docs/3.5.0/cluster-overview.html
index 552b24b..ab83479 100644
--- a/site/docs/3.5.0/cluster-overview.html
+++ b/site/docs/3.5.0/cluster-overview.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -216,7 +215,7 @@
<p>The following table summarizes terms you’ll see used to refer to cluster concepts:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th style="width: 130px;">Term</th><th>Meaning</th></tr>
</thead>
@@ -278,15 +277,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/configuration.html b/site/docs/3.5.0/configuration.html
index 3ca1684..858b9fb 100644
--- a/site/docs/3.5.0/configuration.html
+++ b/site/docs/3.5.0/configuration.html
@@ -10,13 +10,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Configuration - Spark 3.5.0 Documentation</title>
-
-
-
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+
+
+
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -5445,15 +5444,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/core-migration-guide.html b/site/docs/3.5.0/core-migration-guide.html
index 4fd07bb..71f77b7 100644
--- a/site/docs/3.5.0/core-migration-guide.html
+++ b/site/docs/3.5.0/core-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -244,15 +243,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/css/custom.css b/site/docs/3.5.0/css/custom.css
index e7416d9..4576f45 100644
--- a/site/docs/3.5.0/css/custom.css
+++ b/site/docs/3.5.0/css/custom.css
@@ -1110,18 +1110,5 @@
table {
width: 100%;
overflow-wrap: normal;
- border-collapse: collapse; /* Ensures that the borders collapse into a single border */
}
-table th, table td {
- border: 1px solid #cccccc; /* Adds a border to each table header and data cell */
- padding: 6px 13px; /* Optional: Adds padding inside each cell for better readability */
-}
-
-table tr {
- background-color: white; /* Sets a default background color for all rows */
-}
-
-table tr:nth-child(2n) {
- background-color: #F1F4F5; /* Sets a different background color for even rows */
-}
diff --git a/site/docs/3.5.0/css/docsearch.min.css b/site/docs/3.5.0/css/docsearch.min.css
new file mode 100644
index 0000000..9051e8d
--- /dev/null
+++ b/site/docs/3.5.0/css/docsearch.min.css
@@ -0,0 +1,2 @@
+.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,<svg width="10" height="10" viewBox="0 0 20 38" xmlns="http://www.w3.org/2000/svg"><path d="M1.49 4.31l14 16.126.002-2.624-14 16.074-1.314 1.51 3.017 2.626 1.313-1.508 14-16.075 1.142-1.313-1.14-1.313-14-16.125L3.2.18.18 2.8l1.31 1.51z" fill-rule="evenodd" fill="%231D3657" /></svg>');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}
+/*# sourceMappingURL=docsearch.min.css.map */
\ No newline at end of file
diff --git a/site/docs/3.5.0/css/docsearch.min.css.map b/site/docs/3.5.0/css/docsearch.min.css.map
new file mode 100644
index 0000000..3314ce4
--- /dev/null
+++ b/site/docs/3.5.0/css/docsearch.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["docsearch.css"],"names":[],"mappings":"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","file":"docsearch.min.css","sourcesContent":[".searchbox {\n display: inline-block;\n position: relative;\n width: 200px;\n height: 32px !important;\n white-space: nowrap;\n box-sizing: border-box;\n visibility: visible !important;\n}\n\n.searchbox .algolia-autocomplete {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.searchbox__wrapper {\n width: 100%;\n height: 100%;\n z-index: 999;\n position: relative;\n}\n\n.searchbox__input {\n display: inline-block;\n box-sizing: border-box;\n transition: box-shadow 0.4s ease, background 0.4s ease;\n border: 0;\n border-radius: 16px;\n box-shadow: inset 0 0 0 1px #cccccc;\n background: #ffffff !important;\n padding: 0;\n padding-right: 26px;\n padding-left: 32px;\n width: 100%;\n height: 100%;\n vertical-align: middle;\n white-space: normal;\n font-size: 12px;\n appearance: none;\n}\n\n.searchbox__input::-webkit-search-decoration, .searchbox__input::-webkit-search-cancel-button, .searchbox__input::-webkit-search-results-button, .searchbox__input::-webkit-search-results-decoration {\n display: none;\n}\n\n.searchbox__input:hover {\n box-shadow: inset 0 0 0 1px #b3b3b3;\n}\n\n.searchbox__input:focus, .searchbox__input:active {\n outline: 0;\n box-shadow: inset 0 0 0 1px #aaaaaa;\n background: #ffffff;\n}\n\n.searchbox__input::placeholder {\n color: #aaaaaa;\n}\n\n.searchbox__submit {\n position: absolute;\n top: 0;\n margin: 0;\n border: 0;\n border-radius: 16px 0 0 16px;\n background-color: rgba(69, 142, 225, 0);\n padding: 0;\n width: 32px;\n height: 100%;\n vertical-align: middle;\n text-align: center;\n font-size: inherit;\n user-select: none;\n right: inherit;\n left: 0;\n}\n\n.searchbox__submit::before {\n display: inline-block;\n margin-right: -4px;\n height: 100%;\n vertical-align: middle;\n content: '';\n}\n\n.searchbox__submit:hover, .searchbox__submit:active {\n cursor: pointer;\n}\n\n.searchbox__submit:focus {\n outline: 0;\n}\n\n.searchbox__submit svg {\n width: 14px;\n height: 14px;\n vertical-align: middle;\n fill: #6d7e96;\n}\n\n.searchbox__reset {\n display: block;\n position: absolute;\n top: 8px;\n right: 8px;\n margin: 0;\n border: 0;\n background: none;\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n user-select: none;\n fill: rgba(0, 0, 0, 0.5);\n}\n\n.searchbox__reset.hide {\n display: none;\n}\n\n.searchbox__reset:focus {\n outline: 0;\n}\n\n.searchbox__reset svg {\n display: block;\n margin: 4px;\n width: 8px;\n height: 8px;\n}\n\n.searchbox__input:valid ~ .searchbox__reset {\n display: block;\n animation-name: sbx-reset-in;\n animation-duration: 0.15s;\n}\n\n@keyframes sbx-reset-in {\n 0% {\n transform: translate3d(-20%, 0, 0);\n opacity: 0;\n }\n 100% {\n transform: none;\n opacity: 1;\n }\n}\n\n.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu {\n right: 0 !important;\n left: inherit !important;\n}\n\n.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before {\n right: 48px;\n}\n\n.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu {\n left: 0 !important;\n right: inherit !important;\n}\n\n.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before {\n left: 48px;\n}\n\n.algolia-autocomplete .ds-dropdown-menu {\n position: relative;\n top: -6px;\n border-radius: 4px;\n margin: 6px 0 0;\n padding: 0;\n text-align: left;\n height: auto;\n position: relative;\n background: transparent;\n border: none;\n z-index: 999;\n max-width: 600px;\n min-width: 500px;\n box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1);\n}\n\n.algolia-autocomplete .ds-dropdown-menu:before {\n display: block;\n position: absolute;\n content: '';\n width: 14px;\n height: 14px;\n background: #fff;\n z-index: 1000;\n top: -7px;\n border-top: 1px solid #d9d9d9;\n border-right: 1px solid #d9d9d9;\n transform: rotate(-45deg);\n border-radius: 2px;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {\n position: relative;\n z-index: 1000;\n margin-top: 8px;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover {\n text-decoration: none;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestion {\n cursor: pointer;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple {\n background-color: rgba(69, 142, 225, 0.05);\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content {\n background-color: rgba(69, 142, 225, 0.05);\n}\n\n.algolia-autocomplete .ds-dropdown-menu [class^='ds-dataset-'] {\n position: relative;\n border: solid 1px #d9d9d9;\n background: #fff;\n border-radius: 4px;\n overflow: auto;\n padding: 0 8px 8px;\n}\n\n.algolia-autocomplete .ds-dropdown-menu * {\n box-sizing: border-box;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion {\n display: block;\n position: relative;\n padding: 0 8px;\n background: #fff;\n color: #02060c;\n overflow: hidden;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--highlight {\n color: #174d8c;\n background: rgba(143, 187, 237, 0.1);\n padding: 0.1em 0.05em;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0\n.algolia-docsearch-suggestion--highlight,\n.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1\n.algolia-docsearch-suggestion--highlight {\n padding: 0 0 1px;\n background: inherit;\n box-shadow: inset 0 -2px 0 0 rgba(69, 142, 225, 0.8);\n color: inherit;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {\n padding: 0 0 1px;\n background: inherit;\n box-shadow: inset 0 -2px 0 0 rgba(69, 142, 225, 0.8);\n color: inherit;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content {\n display: block;\n float: right;\n width: 70%;\n position: relative;\n padding: 5.33333px 0 5.33333px 10.66667px;\n cursor: pointer;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content:before {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n height: 100%;\n width: 1px;\n background: #ddd;\n left: -1px;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--category-header {\n position: relative;\n border-bottom: 1px solid #ddd;\n display: none;\n margin-top: 8px;\n padding: 4px 0;\n font-size: 1em;\n color: #33363d;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--wrapper {\n width: 100%;\n float: left;\n padding: 8px 0 0 0;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {\n float: left;\n width: 30%;\n padding-left: 0;\n text-align: right;\n position: relative;\n padding: 5.33333px 10.66667px;\n color: #a4a7ae;\n font-size: 0.9em;\n word-wrap: break-word;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n height: 100%;\n width: 1px;\n background: #ddd;\n right: 0;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline {\n display: none;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--title {\n margin-bottom: 4px;\n color: #02060c;\n font-size: 0.9em;\n font-weight: bold;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text {\n display: block;\n line-height: 1.2em;\n font-size: 0.85em;\n color: #63676d;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--no-results {\n width: 100%;\n padding: 8px 0;\n text-align: center;\n font-size: 1.2em;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--no-results::before {\n display: none;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion code {\n padding: 1px 5px;\n font-size: 90%;\n border: none;\n color: #222222;\n background-color: #ebebeb;\n border-radius: 3px;\n font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight {\n background: none;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header {\n display: block;\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary {\n display: block;\n}\n\n@media all and (min-width: 768px) {\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column {\n display: block;\n }\n}\n\n@media all and (max-width: 768px) {\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column {\n display: inline-block;\n width: auto;\n text-align: left;\n float: left;\n padding: 0;\n color: #02060c;\n font-size: 0.9em;\n font-weight: bold;\n text-align: left;\n opacity: 0.5;\n }\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before {\n display: none;\n }\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after {\n content: '|';\n }\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content {\n display: inline-block;\n width: auto;\n text-align: left;\n float: left;\n padding: 0;\n }\n .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before {\n display: none;\n }\n}\n\n.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion {\n border-bottom: solid 1px #eee;\n padding: 8px;\n margin: 0;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content {\n width: 100%;\n padding: 0;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content::before {\n display: none;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header {\n margin: 0;\n padding: 0;\n display: block;\n width: 100%;\n border: none;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0 {\n opacity: 0.6;\n font-size: 0.85em;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1 {\n opacity: 0.6;\n font-size: 0.85em;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1::before {\n background-image: url('data:image/svg+xml;utf8,<svg width=\"10\" height=\"10\" viewBox=\"0 0 20 38\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.49 4.31l14 16.126.002-2.624-14 16.074-1.314 1.51 3.017 2.626 1.313-1.508 14-16.075 1.142-1.313-1.14-1.313-14-16.125L3.2.18.18 2.8l1.31 1.51z\" fill-rule=\"evenodd\" fill=\"%231D3657\" /></svg>');\n content: '';\n width: 10px;\n height: 10px;\n display: inline-block;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper {\n width: 100%;\n float: left;\n margin: 0;\n padding: 0;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content, .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline {\n display: none !important;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title {\n margin: 0;\n color: #458ee1;\n font-size: 0.9em;\n font-weight: normal;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title::before {\n content: '#';\n font-weight: bold;\n color: #458ee1;\n display: inline-block;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text {\n margin: 4px 0 0;\n display: block;\n line-height: 1.4em;\n padding: 5.33333px 8px;\n background: #f8f8f8;\n font-size: 0.85em;\n opacity: 0.8;\n}\n\n.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {\n color: #3f4145;\n font-weight: bold;\n box-shadow: none;\n}\n\n.algolia-autocomplete .algolia-docsearch-footer {\n width: 134px;\n height: 20px;\n z-index: 2000;\n margin-top: 10.66667px;\n float: right;\n font-size: 0;\n line-height: 0;\n}\n\n.algolia-autocomplete .algolia-docsearch-footer--logo {\n background-image: url(\"data:image/svg+xml,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199c-.295 0-.596.021-.897.069a2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874c-.41.089-1.034.19-1.868.314-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525.26-.45.608-.819 1.047-1.106.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483.158.56.233 1.175.233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164-.514.089-.938.191-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423.685.286 1.274.69 1.753 1.216a5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503-.276-.127-.47-.218-.582-.271a13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729c3.518 0 6.372-2.85 6.372-6.368a6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E%0A\");\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n overflow: hidden;\n text-indent: -9000px;\n padding: 0 !important;\n width: 100%;\n height: 100%;\n display: block;\n}\n"]}
\ No newline at end of file
diff --git a/site/docs/3.5.0/graphx-programming-guide.html b/site/docs/3.5.0/graphx-programming-guide.html
index bd8eb5f..0feaa49 100644
--- a/site/docs/3.5.0/graphx-programming-guide.html
+++ b/site/docs/3.5.0/graphx-programming-guide.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1175,15 +1174,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/hadoop-provided.html b/site/docs/3.5.0/hadoop-provided.html
index 808fec0..961b3c7 100644
--- a/site/docs/3.5.0/hadoop-provided.html
+++ b/site/docs/3.5.0/hadoop-provided.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -183,15 +182,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/hardware-provisioning.html b/site/docs/3.5.0/hardware-provisioning.html
index 2351207..80010b3 100644
--- a/site/docs/3.5.0/hardware-provisioning.html
+++ b/site/docs/3.5.0/hardware-provisioning.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -215,15 +214,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/index.html b/site/docs/3.5.0/index.html
index 985f377..34c9cd6 100644
--- a/site/docs/3.5.0/index.html
+++ b/site/docs/3.5.0/index.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -337,15 +336,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/job-scheduling.html b/site/docs/3.5.0/job-scheduling.html
index 506ba3b..50ee00b 100644
--- a/site/docs/3.5.0/job-scheduling.html
+++ b/site/docs/3.5.0/job-scheduling.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -461,15 +460,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js b/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js
index 78c533b..68acb7a 100644
--- a/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js
+++ b/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js
@@ -1,7 +1,7 @@
/*!
- * Bootstrap v4.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Bootstrap v5.0.2 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],t):t((e=e||self).bootstrap={},e.jQuery)}(this,function(e,p){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function l(o){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?t(Object(r),!0).forEach(function(e){var t,n,i;t=o,i=r[n=e],n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach(function(e){Object.defineProperty(o,e,Object.getOwnPropertyDescriptor(r,e))})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var n="transitionend";function o(e){var t=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(t)},e),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(e){for(;e+=~~(1e6*Math.random()),document.getElementById(e););return e},getSelectorFromElement:function(e){var t=e.getAttribute("data-target");if(!t||"#"===t){var n=e.getAttribute("href");t=n&&"#"!==n?n.trim():""}try{return document.querySelector(t)?t:null}catch(e){return null}},getTransitionDurationFromElement:function(e){if(!e)return 0;var t=p(e).css("transition-duration"),n=p(e).css("transition-delay"),i=parseFloat(t),o=parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(t)+parseFloat(n))):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(e){p(e).trigger(n)},supportsTransitionEnd:function(){return Boolean(n)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=t[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(e.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(e){if(!document.documentElement.attachShadow)return null;if("function"!=typeof e.getRootNode)return e instanceof ShadowRoot?e:e.parentNode?m.findShadowRoot(e.parentNode):null;var t=e.getRootNode();return t instanceof ShadowRoot?t:null},jQueryDetection:function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=p.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};m.jQueryDetection(),p.fn.emulateTransitionEnd=o,p.event.special[m.TRANSITION_END]={bindType:n,delegateType:n,handle:function(e){if(p(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}};var r="alert",a="bs.alert",c="."+a,h=p.fn[r],u={CLOSE:"close"+c,CLOSED:"closed"+c,CLICK_DATA_API:"click"+c+".data-api"},f="alert",d="fade",g="show",_=function(){function i(e){this._element=e}var e=i.prototype;return e.close=function(e){var t=this._element;e&&(t=this._getRootElement(e)),this._triggerCloseEvent(t).isDefaultPrevented()||this._removeElement(t)},e.dispose=function(){p.removeData(this._element,a),this._element=null},e._getRootElement=function(e){var t=m.getSelectorFromElement(e),n=!1;return t&&(n=document.querySelector(t)),n=n||p(e).closest("."+f)[0]},e._triggerCloseEvent=function(e){var t=p.Event(u.CLOSE);return p(e).trigger(t),t},e._removeElement=function(t){var n=this;if(p(t).removeClass(g),p(t).hasClass(d)){var e=m.getTransitionDurationFromElement(t);p(t).one(m.TRANSITION_END,function(e){return n._destroyElement(t,e)}).emulateTransitionEnd(e)}else this._destroyElement(t)},e._destroyElement=function(e){p(e).detach().trigger(u.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(a);t||(t=new i(this),e.data(a,t)),"close"===n&&t[n](this)})},i._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',_._handleDismiss(new _)),p.fn[r]=_._jQueryInterface,p.fn[r].Constructor=_,p.fn[r].noConflict=function(){return p.fn[r]=h,_._jQueryInterface};var v="button",y="bs.button",E="."+y,b=".data-api",w=p.fn[v],T="active",C="btn",S="focus",D='[data-toggle^="button"]',I='[data-toggle="buttons"]',A='[data-toggle="button"]',O='[data-toggle="buttons"] .btn',N='input:not([type="hidden"])',k=".active",L=".btn",P={CLICK_DATA_API:"click"+E+b,FOCUS_BLUR_DATA_API:"focus"+E+b+" blur"+E+b,LOAD_DATA_API:"load"+E+b},x=function(){function n(e){this._element=e}var e=n.prototype;return e.toggle=function(){var e=!0,t=!0,n=p(this._element).closest(I)[0];if(n){var i=this._element.querySelector(N);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(T))e=!1;else{var o=n.querySelector(k);o&&p(o).removeClass(T)}else"checkbox"===i.type?"LABEL"===this._element.tagName&&i.checked===this._element.classList.contains(T)&&(e=!1):e=!1;e&&(i.checked=!this._element.classList.contains(T),p(i).trigger("change")),i.focus(),t=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(t&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(T)),e&&p(this._element).toggleClass(T))},e.dispose=function(){p.removeData(this._element,y),this._element=null},n._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(y);e||(e=new n(this),p(this).data(y,e)),"toggle"===t&&e[t]()})},s(n,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),n}();p(document).on(P.CLICK_DATA_API,D,function(e){var t=e.target;if(p(t).hasClass(C)||(t=p(t).closest(L)[0]),!t||t.hasAttribute("disabled")||t.classList.contains("disabled"))e.preventDefault();else{var n=t.querySelector(N);if(n&&(n.hasAttribute("disabled")||n.classList.contains("disabled")))return void e.preventDefault();x._jQueryInterface.call(p(t),"toggle")}}).on(P.FOCUS_BLUR_DATA_API,D,function(e){var t=p(e.target).closest(L)[0];p(t).toggleClass(S,/^focus(in)?$/.test(e.type))}),p(window).on(P.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(O)),t=0,n=e.length;t<n;t++){var i=e[t],o=i.querySelector(N);o.checked||o.hasAttribute("checked")?i.classList.add(T):i.classList.remove(T)}for(var r=0,s=(e=[].slice.call(document.querySelectorAll(A))).length;r<s;r++){var a=e[r];"true"===a.getAttribute("aria-pressed")?a.classList.add(T):a.classList.remove(T)}}),p.fn[v]=x._jQueryInterface,p.fn[v].Constructor=x,p.fn[v].noConflict=function(){return p.fn[v]=w,x._jQueryInterface};var j="carousel",H="bs.carousel",R="."+H,F=".data-api",M=p.fn[j],W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},B="next",q="prev",K="left",Q="right",V={SLIDE:"slide"+R,SLID:"slid"+R,KEYDOWN:"keydown"+R,MOUSEENTER:"mouseenter"+R,MOUSELEAVE:"mouseleave"+R,TOUCHSTART:"touchstart"+R,TOUCHMOVE:"touchmove"+R,TOUCHEND:"touchend"+R,POINTERDOWN:"pointerdown"+R,POINTERUP:"pointerup"+R,DRAG_START:"dragstart"+R,LOAD_DATA_API:"load"+R+F,CLICK_DATA_API:"click"+R+F},Y="carousel",z="active",X="slide",G="carousel-item-right",$="carousel-item-left",J="carousel-item-next",Z="carousel-item-prev",ee="pointer-event",te=".active",ne=".active.carousel-item",ie=".carousel-item",oe=".carousel-item img",re=".carousel-item-next, .carousel-item-prev",se=".carousel-indicators",ae="[data-slide], [data-slide-to]",le='[data-ride="carousel"]',ce={TOUCH:"touch",PEN:"pen"},he=function(){function r(e,t){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._element=e,this._indicatorsElement=this._element.querySelector(se),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=r.prototype;return e.next=function(){this._isSliding||this._slide(B)},e.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(q)},e.pause=function(e){e||(this._isPaused=!0),this._element.querySelector(re)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(e){var t=this;this._activeElement=this._element.querySelector(ne);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)p(this._element).one(V.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=n<e?B:q;this._slide(i,this._items[e])}},e.dispose=function(){p(this._element).off(R),p.removeData(this._element,H),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(e){return e=l({},W,{},e),m.typeCheckConfig(j,e,U),e},e._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=40)){var t=e/this.touchDeltaX;(this.touchDeltaX=0)<t&&this.prev(),t<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&p(this._element).on(V.KEYDOWN,function(e){return t._keydown(e)}),"hover"===this._config.pause&&p(this._element).on(V.MOUSEENTER,function(e){return t.pause(e)}).on(V.MOUSELEAVE,function(e){return t.cycle(e)}),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var n=function(e){t._pointerEvent&&ce[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},i=function(e){t._pointerEvent&&ce[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval))};p(this._element.querySelectorAll(oe)).on(V.DRAG_START,function(e){return e.preventDefault()}),this._pointerEvent?(p(this._element).on(V.POINTERDOWN,function(e){return n(e)}),p(this._element).on(V.POINTERUP,function(e){return i(e)}),this._element.classList.add(ee)):(p(this._element).on(V.TOUCHSTART,function(e){return n(e)}),p(this._element).on(V.TOUCHMOVE,function(e){return function(e){e.originalEvent.touches&&1<e.originalEvent.touches.length?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)}),p(this._element).on(V.TOUCHEND,function(e){return i(e)}))}},e._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.which){case 37:e.preventDefault(),this.prev();break;case 39:e.preventDefault(),this.next()}},e._getItemIndex=function(e){return this._items=e&&e.parentNode?[].slice.call(e.parentNode.querySelectorAll(ie)):[],this._items.indexOf(e)},e._getItemByDirection=function(e,t){var n=e===B,i=e===q,o=this._getItemIndex(t),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return t;var s=(o+(e===q?-1:1))%this._items.length;return-1==s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),i=this._getItemIndex(this._element.querySelector(ne)),o=p.Event(V.SLIDE,{relatedTarget:e,direction:t,from:i,to:n});return p(this._element).trigger(o),o},e._setActiveIndicatorElement=function(e){if(this._indicatorsElement){var t=[].slice.call(this._indicatorsElement.querySelectorAll(te));p(t).removeClass(z);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&p(n).addClass(z)}},e._slide=function(e,t){var n,i,o,r=this,s=this._element.querySelector(ne),a=this._getItemIndex(s),l=t||s&&this._getItemByDirection(e,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=e===B?(n=$,i=J,K):(n=G,i=Z,Q),l&&p(l).hasClass(z))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(V.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(X)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=f):this._config.interval=this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(z),p(s).removeClass(z+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(z),p(l).addClass(z),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var e=p(this).data(H),t=l({},W,{},p(this).data());"object"==typeof i&&(t=l({},t,{},i));var n="string"==typeof i?i:t.slide;if(e||(e=new r(this,t),p(this).data(H,e)),"number"==typeof i)e.to(i);else if("string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}else t.interval&&t.ride&&(e.pause(),e.cycle())})},r._dataApiClickHandler=function(e){var t=m.getSelectorFromElement(this);if(t){var n=p(t)[0];if(n&&p(n).hasClass(Y)){var i=l({},p(n).data(),{},p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(H).to(o),e.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return W}}]),r}();p(document).on(V.CLICK_DATA_API,ae,he._dataApiClickHandler),p(window).on(V.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(le)),t=0,n=e.length;t<n;t++){var i=p(e[t]);he._jQueryInterface.call(i,i.data())}}),p.fn[j]=he._jQueryInterface,p.fn[j].Constructor=he,p.fn[j].noConflict=function(){return p.fn[j]=M,he._jQueryInterface};var ue="collapse",fe="bs.collapse",de="."+fe,pe=p.fn[ue],me={toggle:!0,parent:""},ge={toggle:"boolean",parent:"(string|element)"},_e={SHOW:"show"+de,SHOWN:"shown"+de,HIDE:"hide"+de,HIDDEN:"hidden"+de,CLICK_DATA_API:"click"+de+".data-api"},ve="show",ye="collapse",Ee="collapsing",be="collapsed",we="width",Te="height",Ce=".show, .collapsing",Se='[data-toggle="collapse"]',De=function(){function a(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(Se)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(e){return e===t});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=a.prototype;return e.toggle=function(){p(this._element).hasClass(ve)?this.hide():this.show()},e.show=function(){var e,t,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(ve)&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(Ce)).filter(function(e){return"string"==typeof n._config.parent?e.getAttribute("data-parent")===n._config.parent:e.classList.contains(ye)})).length&&(e=null),!(e&&(t=p(e).not(this._selector).data(fe))&&t._isTransitioning))){var i=p.Event(_e.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){e&&(a._jQueryInterface.call(p(e).not(this._selector),"hide"),t||p(e).data(fe,null));var o=this._getDimension();p(this._element).removeClass(ye).addClass(Ee),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(be).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(Ee).addClass(ye).addClass(ve),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(_e.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},e.hide=function(){var e=this;if(!this._isTransitioning&&p(this._element).hasClass(ve)){var t=p.Event(_e.HIDE);if(p(this._element).trigger(t),!t.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(Ee).removeClass(ye).removeClass(ve);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(ve)||p(r).addClass(be).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){e.setTransitioning(!1),p(e._element).removeClass(Ee).addClass(ye).trigger(_e.HIDDEN)}).emulateTransitionEnd(a)}}},e.setTransitioning=function(e){this._isTransitioning=e},e.dispose=function(){p.removeData(this._element,fe),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(e){return(e=l({},me,{},e)).toggle=Boolean(e.toggle),m.typeCheckConfig(ue,e,ge),e},e._getDimension=function(){return p(this._element).hasClass(we)?we:Te},e._getParent=function(){var e,n=this;m.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var t='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(e.querySelectorAll(t));return p(i).each(function(e,t){n._addAriaAndCollapsedClass(a._getTargetFromElement(t),[t])}),e},e._addAriaAndCollapsedClass=function(e,t){var n=p(e).hasClass(ve);t.length&&p(t).toggleClass(be,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(e){var t=m.getSelectorFromElement(e);return t?document.querySelector(t):null},a._jQueryInterface=function(i){return this.each(function(){var e=p(this),t=e.data(fe),n=l({},me,{},e.data(),{},"object"==typeof i&&i?i:{});if(!t&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),t||(t=new a(this,n),e.data(fe,t)),"string"==typeof i){if("undefined"==typeof t[i])throw new TypeError('No method named "'+i+'"');t[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return me}}]),a}();p(document).on(_e.CLICK_DATA_API,Se,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var n=p(this),t=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(t));p(i).each(function(){var e=p(this),t=e.data(fe)?"toggle":n.data();De._jQueryInterface.call(e,t)})}),p.fn[ue]=De._jQueryInterface,p.fn[ue].Constructor=De,p.fn[ue].noConflict=function(){return p.fn[ue]=pe,De._jQueryInterface};var Ie="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,Ae=function(){for(var e=["Edge","Trident","Firefox"],t=0;t<e.length;t+=1)if(Ie&&0<=navigator.userAgent.indexOf(e[t]))return 1;return 0}();var Oe=Ie&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},Ae))}};function Ne(e){return e&&"[object Function]"==={}.toString.call(e)}function ke(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function Le(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function Pe(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=ke(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?e:Pe(Le(e))}function xe(e){return e&&e.referenceNode?e.referenceNode:e}var je=Ie&&!(!window.MSInputMethodContext||!document.documentMode),He=Ie&&/MSIE 10/.test(navigator.userAgent);function Re(e){return 11===e?je:10===e?He:je||He}function Fe(e){if(!e)return document.documentElement;for(var t=Re(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===ke(n,"position")?Fe(n):n:e?e.ownerDocument.documentElement:document.documentElement}function Me(e){return null!==e.parentNode?Me(e.parentNode):e}function We(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,o=n?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s=r.commonAncestorContainer;if(e!==s&&t!==s||i.contains(o))return function(e){var t=e.nodeName;return"BODY"!==t&&("HTML"===t||Fe(e.firstElementChild)===e)}(s)?s:Fe(s);var a=Me(e);return a.host?We(a.host,t):We(e,Me(t).host)}function Ue(e,t){var n="top"===(1<arguments.length&&void 0!==t?t:"top")?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"!==i&&"HTML"!==i)return e[n];var o=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||o)[n]}function Be(e,t){var n="x"===t?"Left":"Top",i="Left"==n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"],10)+parseFloat(e["border"+i+"Width"],10)}function qe(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],Re(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function Ke(e){var t=e.body,n=e.documentElement,i=Re(10)&&getComputedStyle(n);return{height:qe("Height",t,n,i),width:qe("Width",t,n,i)}}var Qe=function(e,t,n){return t&&Ve(e.prototype,t),n&&Ve(e,n),e};function Ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ze=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e};function Xe(e){return ze({},e,{right:e.left+e.width,bottom:e.top+e.height})}function Ge(e){var t={};try{if(Re(10)){t=e.getBoundingClientRect();var n=Ue(e,"top"),i=Ue(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}else t=e.getBoundingClientRect()}catch(e){}var o={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},r="HTML"===e.nodeName?Ke(e.ownerDocument):{},s=r.width||e.clientWidth||o.width,a=r.height||e.clientHeight||o.height,l=e.offsetWidth-s,c=e.offsetHeight-a;if(l||c){var h=ke(e);l-=Be(h,"x"),c-=Be(h,"y"),o.width-=l,o.height-=c}return Xe(o)}function $e(e,t,n){var i=2<arguments.length&&void 0!==n&&n,o=Re(10),r="HTML"===t.nodeName,s=Ge(e),a=Ge(t),l=Pe(e),c=ke(t),h=parseFloat(c.borderTopWidth,10),u=parseFloat(c.borderLeftWidth,10);i&&r&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var f=Xe({top:s.top-a.top-h,left:s.left-a.left-u,width:s.width,height:s.height});if(f.marginTop=0,f.marginLeft=0,!o&&r){var d=parseFloat(c.marginTop,10),p=parseFloat(c.marginLeft,10);f.top-=h-d,f.bottom-=h-d,f.left-=u-p,f.right-=u-p,f.marginTop=d,f.marginLeft=p}return(o&&!i?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=function(e,t,n){var i=2<arguments.length&&void 0!==n&&n,o=Ue(t,"top"),r=Ue(t,"left"),s=i?-1:1;return e.top+=o*s,e.bottom+=o*s,e.left+=r*s,e.right+=r*s,e}(f,t)),f}function Je(e){if(!e||!e.parentElement||Re())return document.documentElement;for(var t=e.parentElement;t&&"none"===ke(t,"transform");)t=t.parentElement;return t||document.documentElement}function Ze(e,t,n,i,o){var r=4<arguments.length&&void 0!==o&&o,s={top:0,left:0},a=r?Je(e):We(e,xe(t));if("viewport"===i)s=function(e,t){var n=1<arguments.length&&void 0!==t&&t,i=e.ownerDocument.documentElement,o=$e(e,i),r=Math.max(i.clientWidth,window.innerWidth||0),s=Math.max(i.clientHeight,window.innerHeight||0),a=n?0:Ue(i),l=n?0:Ue(i,"left");return Xe({top:a-o.top+o.marginTop,left:l-o.left+o.marginLeft,width:r,height:s})}(a,r);else{var l=void 0;"scrollParent"===i?"BODY"===(l=Pe(Le(t))).nodeName&&(l=e.ownerDocument.documentElement):l="window"===i?e.ownerDocument.documentElement:i;var c=$e(l,a,r);if("HTML"!==l.nodeName||function e(t){var n=t.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===ke(t,"position"))return!0;var i=Le(t);return!!i&&e(i)}(a))s=c;else{var h=Ke(e.ownerDocument),u=h.height,f=h.width;s.top+=c.top-c.marginTop,s.bottom=u+c.top,s.left+=c.left-c.marginLeft,s.right=f+c.left}}var d="number"==typeof(n=n||0);return s.left+=d?n:n.left||0,s.top+=d?n:n.top||0,s.right-=d?n:n.right||0,s.bottom-=d?n:n.bottom||0,s}function et(e,t,i,n,o,r){var s=5<arguments.length&&void 0!==r?r:0;if(-1===e.indexOf("auto"))return e;var a=Ze(i,n,s,o),l={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},c=Object.keys(l).map(function(e){return ze({key:e},l[e],{area:function(e){return e.width*e.height}(l[e])})}).sort(function(e,t){return t.area-e.area}),h=c.filter(function(e){var t=e.width,n=e.height;return t>=i.clientWidth&&n>=i.clientHeight}),u=0<h.length?h[0].key:c[0].key,f=e.split("-")[1];return u+(f?"-"+f:"")}function tt(e,t,n,i){var o=3<arguments.length&&void 0!==i?i:null;return $e(n,o?Je(t):We(t,xe(n)),o)}function nt(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function it(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function ot(e,t,n){n=n.split("-")[0];var i=nt(e),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=t[s]+t[l]/2-i[l]/2,o[a]=n===a?t[a]-i[c]:t[it(a)],o}function rt(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function st(e,n,t){return(void 0===t?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=rt(e,function(e){return e[t]===n});return e.indexOf(i)}(e,"name",t))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var t=e.function||e.fn;e.enabled&&Ne(t)&&(n.offsets.popper=Xe(n.offsets.popper),n.offsets.reference=Xe(n.offsets.reference),n=t(n,e))}),n}function at(e,n){return e.some(function(e){var t=e.name;return e.enabled&&t===n})}function lt(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var o=t[i],r=o?""+o+n:e;if("undefined"!=typeof document.body.style[r])return r}return null}function ct(e){var t=e.ownerDocument;return t?t.defaultView:window}function ht(e,t,n,i){n.updateBound=i,ct(e).addEventListener("resize",n.updateBound,{passive:!0});var o=Pe(e);return function e(t,n,i,o){var r="BODY"===t.nodeName,s=r?t.ownerDocument.defaultView:t;s.addEventListener(n,i,{passive:!0}),r||e(Pe(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function ut(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=function(e,t){return ct(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}(this.reference,this.state))}function ft(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function dt(n,i){Object.keys(i).forEach(function(e){var t="";-1!==["width","height","top","right","bottom","left"].indexOf(e)&&ft(i[e])&&(t="px"),n.style[e]=i[e]+t})}function pt(e,t){function n(e){return e}var i=e.offsets,o=i.popper,r=i.reference,s=Math.round,a=Math.floor,l=s(r.width),c=s(o.width),h=-1!==["left","right"].indexOf(e.placement),u=-1!==e.placement.indexOf("-"),f=t?h||u||l%2==c%2?s:a:n,d=t?s:n;return{left:f(l%2==1&&c%2==1&&!u&&t?o.left-1:o.left),top:d(o.top),bottom:d(o.bottom),right:f(o.right)}}var mt=Ie&&/Firefox/i.test(navigator.userAgent);function gt(e,t,n){var i=rt(e,function(e){return e.name===t}),o=!!i&&e.some(function(e){return e.name===n&&e.enabled&&e.order<i.order});if(!o){var r="`"+t+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var _t=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],vt=_t.slice(3);function yt(e,t){var n=1<arguments.length&&void 0!==t&&t,i=vt.indexOf(e),o=vt.slice(i+1).concat(vt.slice(0,i));return n?o.reverse():o}var Et="flip",bt="clockwise",wt="counterclockwise";function Tt(e,o,r,t){var s=[0,0],a=-1!==["right","left"].indexOf(t),n=e.split(/(\+|\-)/).map(function(e){return e.trim()}),i=n.indexOf(rt(n,function(e){return-1!==e.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(e,t){var n=(1===t?!a:a)?"height":"width",i=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,i=!0,e):i?(e[e.length-1]+=t,i=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,n,i){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return e;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Xe(a)[t]/100*r}(e,n,o,r)})})).forEach(function(n,i){n.forEach(function(e,t){ft(e)&&(s[i]+=e*("-"===n[t-1]?-1:1))})}),s}var Ct={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var o=e.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Ye({},l,r[l]),end:Ye({},l,r[l]+r[c]-s[c])};e.offsets.popper=ze({},s,h[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,o=e.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ft(+n)?[+n,0]:Tt(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),e.popper=r,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,i){var t=i.boundariesElement||Fe(e.instance.popper);e.instance.reference===t&&(t=Fe(t));var n=lt("transform"),o=e.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Ze(e.instance.popper,e.instance.reference,i.padding,t,e.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=e.offsets.popper,u={primary:function(e){var t=h[e];return h[e]<l[e]&&!i.escapeWithReference&&(t=Math.max(h[e],l[e])),Ye({},e,t)},secondary:function(e){var t="right"===e?"left":"top",n=h[t];return h[e]>l[e]&&!i.escapeWithReference&&(n=Math.min(h[t],l[e]-("right"===e?h.width:h.height))),Ye({},t,n)}};return c.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";h=ze({},h,u[t](e))}),e.offsets.popper=h,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,o=e.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(e.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(e.offsets.popper[l]=r(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!gt(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var o=e.placement.split("-")[0],r=e.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=nt(i)[c];a[d]-p<s[u]&&(e.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(e.offsets.popper[u]+=a[u]+p-s[d]),e.offsets.popper=Xe(e.offsets.popper);var m=a[u]+a[c]/2-p/2,g=ke(e.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-e.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),e.arrowElement=i,e.offsets.arrow=(Ye(n={},u,Math.round(y)),Ye(n,f,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(m,g){if(at(m.instance.modifiers,"inner"))return m;if(m.flipped&&m.placement===m.originalPlacement)return m;var _=Ze(m.instance.popper,m.instance.reference,g.padding,g.boundariesElement,m.positionFixed),v=m.placement.split("-")[0],y=it(v),E=m.placement.split("-")[1]||"",b=[];switch(g.behavior){case Et:b=[v,y];break;case bt:b=yt(v);break;case wt:b=yt(v,!0);break;default:b=g.behavior}return b.forEach(function(e,t){if(v!==e||b.length===t+1)return m;v=m.placement.split("-")[0],y=it(v);var n=m.offsets.popper,i=m.offsets.reference,o=Math.floor,r="left"===v&&o(n.right)>o(i.left)||"right"===v&&o(n.left)<o(i.right)||"top"===v&&o(n.bottom)>o(i.top)||"bottom"===v&&o(n.top)<o(i.bottom),s=o(n.left)<o(_.left),a=o(n.right)>o(_.right),l=o(n.top)<o(_.top),c=o(n.bottom)>o(_.bottom),h="left"===v&&s||"right"===v&&a||"top"===v&&l||"bottom"===v&&c,u=-1!==["top","bottom"].indexOf(v),f=!!g.flipVariations&&(u&&"start"===E&&s||u&&"end"===E&&a||!u&&"start"===E&&l||!u&&"end"===E&&c),d=!!g.flipVariationsByContent&&(u&&"start"===E&&a||u&&"end"===E&&s||!u&&"start"===E&&c||!u&&"end"===E&&l),p=f||d;(r||h||p)&&(m.flipped=!0,(r||h)&&(v=b[t+1]),p&&(E=function(e){return"end"===e?"start":"start"===e?"end":e}(E)),m.placement=v+(E?"-"+E:""),m.offsets.popper=ze({},m.offsets.popper,ot(m.instance.popper,m.offsets.reference,m.placement)),m=st(m.instance.modifiers,m,"flip"))}),m},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),e.placement=it(t),e.offsets.popper=Xe(o),e}},hide:{order:800,enabled:!0,fn:function(e){if(!gt(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=rt(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(!1===e.hide)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var n=t.x,i=t.y,o=e.offsets.popper,r=rt(e.instance.modifiers,function(e){return"applyStyle"===e.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s=void 0!==r?r:t.gpuAcceleration,a=Fe(e.instance.popper),l=Ge(a),c={position:o.position},h=pt(e,window.devicePixelRatio<2||!mt),u="bottom"===n?"top":"bottom",f="right"===i?"left":"right",d=lt("transform"),p=void 0,m=void 0;if(m="bottom"==u?"HTML"===a.nodeName?-a.clientHeight+h.bottom:-l.height+h.bottom:h.top,p="right"==f?"HTML"===a.nodeName?-a.clientWidth+h.right:-l.width+h.right:h.left,s&&d)c[d]="translate3d("+p+"px, "+m+"px, 0)",c[u]=0,c[f]=0,c.willChange="transform";else{var g="bottom"==u?-1:1,_="right"==f?-1:1;c[u]=m*g,c[f]=p*_,c.willChange=u+", "+f}var v={"x-placement":e.placement};return e.attributes=ze({},v,e.attributes),e.styles=ze({},c,e.styles),e.arrowStyles=ze({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(e){return dt(e.instance.popper,e.styles),function(t,n){Object.keys(n).forEach(function(e){!1!==n[e]?t.setAttribute(e,n[e]):t.removeAttribute(e)})}(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&dt(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,n,i,o){var r=tt(o,t,e,n.positionFixed),s=et(n.placement,r,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return t.setAttribute("x-placement",s),dt(t,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},St=(Qe(Dt,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=tt(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=et(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=ot(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=st(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,at(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[lt("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ht(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return ut.call(this)}}]),Dt);function Dt(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Dt),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=Oe(this.update.bind(this)),this.options=ze({},Dt.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(ze({},Dt.Defaults.modifiers,i.modifiers)).forEach(function(e){n.options.modifiers[e]=ze({},Dt.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return ze({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&Ne(e.onLoad)&&e.onLoad(n.reference,n.popper,n.options,e,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}St.Utils=("undefined"!=typeof window?window:global).PopperUtils,St.placements=_t,St.Defaults=Ct;var It="dropdown",At="bs.dropdown",Ot="."+At,Nt=".data-api",kt=p.fn[It],Lt=new RegExp("38|40|27"),Pt={HIDE:"hide"+Ot,HIDDEN:"hidden"+Ot,SHOW:"show"+Ot,SHOWN:"shown"+Ot,CLICK:"click"+Ot,CLICK_DATA_API:"click"+Ot+Nt,KEYDOWN_DATA_API:"keydown"+Ot+Nt,KEYUP_DATA_API:"keyup"+Ot+Nt},xt="disabled",jt="show",Ht="dropup",Rt="dropright",Ft="dropleft",Mt="dropdown-menu-right",Wt="position-static",Ut='[data-toggle="dropdown"]',Bt=".dropdown form",qt=".dropdown-menu",Kt=".navbar-nav",Qt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Vt="top-start",Yt="top-end",zt="bottom-start",Xt="bottom-end",Gt="right-start",$t="left-start",Jt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},Zt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},en=function(){function c(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=c.prototype;return e.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(xt)){var e=p(this._menu).hasClass(jt);c._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||p(this._element).hasClass(xt)||p(this._menu).hasClass(jt))){var t={relatedTarget:this._element},n=p.Event(Pt.SHOW,t),i=c._getParentFromElement(this._element);if(p(i).trigger(n),!n.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof St)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=i:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(i).addClass(Wt),this._popper=new St(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(i).closest(Kt).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(jt),p(i).toggleClass(jt).trigger(p.Event(Pt.SHOWN,t))}}},e.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(xt)&&p(this._menu).hasClass(jt)){var e={relatedTarget:this._element},t=p.Event(Pt.HIDE,e),n=c._getParentFromElement(this._element);p(n).trigger(t),t.isDefaultPrevented()||(this._popper&&this._popper.destroy(),p(this._menu).toggleClass(jt),p(n).toggleClass(jt).trigger(p.Event(Pt.HIDDEN,e)))}},e.dispose=function(){p.removeData(this._element,At),p(this._element).off(Ot),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;p(this._element).on(Pt.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},e._getConfig=function(e){return e=l({},this.constructor.Default,{},p(this._element).data(),{},e),m.typeCheckConfig(It,e,this.constructor.DefaultType),e},e._getMenuElement=function(){if(!this._menu){var e=c._getParentFromElement(this._element);e&&(this._menu=e.querySelector(qt))}return this._menu},e._getPlacement=function(){var e=p(this._element.parentNode),t=zt;return e.hasClass(Ht)?(t=Vt,p(this._menu).hasClass(Mt)&&(t=Yt)):e.hasClass(Rt)?t=Gt:e.hasClass(Ft)?t=$t:p(this._menu).hasClass(Mt)&&(t=Xt),t},e._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,{},t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),l({},e,{},this._config.popperConfig)},c._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(At);if(e||(e=new c(this,"object"==typeof t?t:null),p(this).data(At,e)),"string"==typeof t){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},c._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var t=[].slice.call(document.querySelectorAll(Ut)),n=0,i=t.length;n<i;n++){var o=c._getParentFromElement(t[n]),r=p(t[n]).data(At),s={relatedTarget:t[n]};if(e&&"click"===e.type&&(s.clickEvent=e),r){var a=r._menu;if(p(o).hasClass(jt)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&p.contains(o,e.target))){var l=p.Event(Pt.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),t[n].setAttribute("aria-expanded","false"),r._popper&&r._popper.destroy(),p(a).removeClass(jt),p(o).removeClass(jt).trigger(p.Event(Pt.HIDDEN,s)))}}}},c._getParentFromElement=function(e){var t,n=m.getSelectorFromElement(e);return n&&(t=document.querySelector(n)),t||e.parentNode},c._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||p(e.target).closest(qt).length)):Lt.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!p(this).hasClass(xt))){var t=c._getParentFromElement(this),n=p(t).hasClass(jt);if(n||27!==e.which)if(n&&(!n||27!==e.which&&32!==e.which)){var i=[].slice.call(t.querySelectorAll(Qt)).filter(function(e){return p(e).is(":visible")});if(0!==i.length){var o=i.indexOf(e.target);38===e.which&&0<o&&o--,40===e.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===e.which){var r=t.querySelector(Ut);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Jt}},{key:"DefaultType",get:function(){return Zt}}]),c}();p(document).on(Pt.KEYDOWN_DATA_API,Ut,en._dataApiKeydownHandler).on(Pt.KEYDOWN_DATA_API,qt,en._dataApiKeydownHandler).on(Pt.CLICK_DATA_API+" "+Pt.KEYUP_DATA_API,en._clearMenus).on(Pt.CLICK_DATA_API,Ut,function(e){e.preventDefault(),e.stopPropagation(),en._jQueryInterface.call(p(this),"toggle")}).on(Pt.CLICK_DATA_API,Bt,function(e){e.stopPropagation()}),p.fn[It]=en._jQueryInterface,p.fn[It].Constructor=en,p.fn[It].noConflict=function(){return p.fn[It]=kt,en._jQueryInterface};var tn="modal",nn="bs.modal",on="."+nn,rn=p.fn[tn],sn={backdrop:!0,keyboard:!0,focus:!0,show:!0},an={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},ln={HIDE:"hide"+on,HIDE_PREVENTED:"hidePrevented"+on,HIDDEN:"hidden"+on,SHOW:"show"+on,SHOWN:"shown"+on,FOCUSIN:"focusin"+on,RESIZE:"resize"+on,CLICK_DISMISS:"click.dismiss"+on,KEYDOWN_DISMISS:"keydown.dismiss"+on,MOUSEUP_DISMISS:"mouseup.dismiss"+on,MOUSEDOWN_DISMISS:"mousedown.dismiss"+on,CLICK_DATA_API:"click"+on+".data-api"},cn="modal-dialog-scrollable",hn="modal-scrollbar-measure",un="modal-backdrop",fn="modal-open",dn="fade",pn="show",mn="modal-static",gn=".modal-dialog",_n=".modal-body",vn='[data-toggle="modal"]',yn='[data-dismiss="modal"]',En=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",bn=".sticky-top",wn=function(){function o(e,t){this._config=this._getConfig(t),this._element=e,this._dialog=e.querySelector(gn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=o.prototype;return e.toggle=function(e){return this._isShown?this.hide():this.show(e)},e.show=function(e){var t=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(dn)&&(this._isTransitioning=!0);var n=p.Event(ln.SHOW,{relatedTarget:e});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(ln.CLICK_DISMISS,yn,function(e){return t.hide(e)}),p(this._dialog).on(ln.MOUSEDOWN_DISMISS,function(){p(t._element).one(ln.MOUSEUP_DISMISS,function(e){p(e.target).is(t._element)&&(t._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return t._showElement(e)}))}},e.hide=function(e){var t=this;if(e&&e.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(ln.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(dn);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(ln.FOCUSIN),p(this._element).removeClass(pn),p(this._element).off(ln.CLICK_DISMISS),p(this._dialog).off(ln.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(e){return t._hideModal(e)}).emulateTransitionEnd(o)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach(function(e){return p(e).off(on)}),p(document).off(ln.FOCUSIN),p.removeData(this._element,nn),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(e){return e=l({},sn,{},e),m.typeCheckConfig(tn,e,an),e},e._triggerBackdropTransition=function(){var e=this;if("static"===this._config.backdrop){var t=p.Event(ln.HIDE_PREVENTED);if(p(this._element).trigger(t),t.defaultPrevented)return;this._element.classList.add(mn);var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){e._element.classList.remove(mn)}).emulateTransitionEnd(n),this._element.focus()}else this.hide()},e._showElement=function(e){var t=this,n=p(this._element).hasClass(dn),i=this._dialog?this._dialog.querySelector(_n):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p(this._dialog).hasClass(cn)&&i?i.scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(pn),this._config.focus&&this._enforceFocus();function o(){t._config.focus&&t._element.focus(),t._isTransitioning=!1,p(t._element).trigger(r)}var r=p.Event(ln.SHOWN,{relatedTarget:e});if(n){var s=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(s)}else o()},e._enforceFocus=function(){var t=this;p(document).off(ln.FOCUSIN).on(ln.FOCUSIN,function(e){document!==e.target&&t._element!==e.target&&0===p(t._element).has(e.target).length&&t._element.focus()})},e._setEscapeEvent=function(){var t=this;this._isShown&&this._config.keyboard?p(this._element).on(ln.KEYDOWN_DISMISS,function(e){27===e.which&&t._triggerBackdropTransition()}):this._isShown||p(this._element).off(ln.KEYDOWN_DISMISS)},e._setResizeEvent=function(){var t=this;this._isShown?p(window).on(ln.RESIZE,function(e){return t.handleUpdate(e)}):p(window).off(ln.RESIZE)},e._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(fn),e._resetAdjustments(),e._resetScrollbar(),p(e._element).trigger(ln.HIDDEN)})},e._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(e){var t=this,n=p(this._element).hasClass(dn)?dn:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=un,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(ln.CLICK_DISMISS,function(e){t._ignoreBackdropClick?t._ignoreBackdropClick=!1:e.target===e.currentTarget&&t._triggerBackdropTransition()}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(pn),!e)return;if(!n)return void e();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,e).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(pn);var o=function(){t._removeBackdrop(),e&&e()};if(p(this._element).hasClass(dn)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else e&&e()},e._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(En)),t=[].slice.call(document.querySelectorAll(bn));p(e).each(function(e,t){var n=t.style.paddingRight,i=p(t).css("padding-right");p(t).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(t).each(function(e,t){var n=t.style.marginRight,i=p(t).css("margin-right");p(t).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(fn)},e._resetScrollbar=function(){var e=[].slice.call(document.querySelectorAll(En));p(e).each(function(e,t){var n=p(t).data("padding-right");p(t).removeData("padding-right"),t.style.paddingRight=n||""});var t=[].slice.call(document.querySelectorAll(""+bn));p(t).each(function(e,t){var n=p(t).data("margin-right");"undefined"!=typeof n&&p(t).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var e=document.createElement("div");e.className=hn,document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t},o._jQueryInterface=function(n,i){return this.each(function(){var e=p(this).data(nn),t=l({},sn,{},p(this).data(),{},"object"==typeof n&&n?n:{});if(e||(e=new o(this,t),p(this).data(nn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](i)}else t.show&&e.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return sn}}]),o}();p(document).on(ln.CLICK_DATA_API,vn,function(e){var t,n=this,i=m.getSelectorFromElement(this);i&&(t=document.querySelector(i));var o=p(t).data(nn)?"toggle":l({},p(t).data(),{},p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var r=p(t).one(ln.SHOW,function(e){e.isDefaultPrevented()||r.one(ln.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});wn._jQueryInterface.call(p(t),o,this)}),p.fn[tn]=wn._jQueryInterface,p.fn[tn].Constructor=wn,p.fn[tn].noConflict=function(){return p.fn[tn]=rn,wn._jQueryInterface};var Tn=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Cn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Sn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Dn=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function In(e,r,t){if(0===e.length)return e;if(t&&"function"==typeof t)return t(e);for(var n=(new window.DOMParser).parseFromString(e,"text/html"),s=Object.keys(r),a=[].slice.call(n.body.querySelectorAll("*")),i=function(e){var t=a[e],n=t.nodeName.toLowerCase();if(-1===s.indexOf(t.nodeName.toLowerCase()))return t.parentNode.removeChild(t),"continue";var i=[].slice.call(t.attributes),o=[].concat(r["*"]||[],r[n]||[]);i.forEach(function(e){!function(e,t){var n=e.nodeName.toLowerCase();if(-1!==t.indexOf(n))return-1===Tn.indexOf(n)||Boolean(e.nodeValue.match(Sn)||e.nodeValue.match(Dn));for(var i=t.filter(function(e){return e instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1}(e,o)&&t.removeAttribute(e.nodeName)})},o=0,l=a.length;o<l;o++)i(o);return n.body.innerHTML}var An="tooltip",On="bs.tooltip",Nn="."+On,kn=p.fn[An],Ln="bs-tooltip",Pn=new RegExp("(^|\\s)"+Ln+"\\S+","g"),xn=["sanitize","whiteList","sanitizeFn"],jn={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Hn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Rn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Cn,popperConfig:null},Fn="show",Mn="out",Wn={HIDE:"hide"+Nn,HIDDEN:"hidden"+Nn,SHOW:"show"+Nn,SHOWN:"shown"+Nn,INSERTED:"inserted"+Nn,CLICK:"click"+Nn,FOCUSIN:"focusin"+Nn,FOCUSOUT:"focusout"+Nn,MOUSEENTER:"mouseenter"+Nn,MOUSELEAVE:"mouseleave"+Nn},Un="fade",Bn="show",qn=".tooltip-inner",Kn=".arrow",Qn="hover",Vn="focus",Yn="click",zn="manual",Xn=function(){function i(e,t){if("undefined"==typeof St)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=p(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(Bn))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var e=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(e);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Un);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new St(this.element,o,this._getPopperConfig(a)),p(o).addClass(Bn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,p(t.element).trigger(t.constructor.Event.SHOWN),e===Mn&&t._leave(null,t)};if(p(this.tip).hasClass(Un)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(e){function t(){n._hoverState!==Fn&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),p(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()}var n=this,i=this.getTipElement(),o=p.Event(this.constructor.Event.HIDE);if(p(this.element).trigger(o),!o.isDefaultPrevented()){if(p(i).removeClass(Bn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Yn]=!1,this._activeTrigger[Vn]=!1,this._activeTrigger[Qn]=!1,p(this.tip).hasClass(Un)){var r=m.getTransitionDurationFromElement(i);p(i).one(m.TRANSITION_END,t).emulateTransitionEnd(r)}else t();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){p(this.getTipElement()).addClass(Ln+"-"+e)},e.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},e.setContent=function(){var e=this.getTipElement();this.setElementContent(p(e.querySelectorAll(qn)),this.getTitle()),p(e).removeClass(Un+" "+Bn)},e.setElementContent=function(e,t){"object"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=In(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?p(t).parent().is(e)||e.empty().append(t):e.text(p(t).text())},e.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e=e||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},e._getPopperConfig=function(e){var t=this;return l({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Kn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},{},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,{},t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},e._getAttachment=function(e){return Hn[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if(e!==zn){var t=e===Qn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Qn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}}),this._hideModalHandler=function(){i.element&&i.hide()},p(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==e||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?Vn:Qn]=!0),p(t.getTipElement()).hasClass(Bn)||t._hoverState===Fn?t._hoverState=Fn:(clearTimeout(t._timeout),t._hoverState=Fn,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===Fn&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?Vn:Qn]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Mn,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){t._hoverState===Mn&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){var t=p(this.element).data();return Object.keys(t).forEach(function(e){-1!==xn.indexOf(e)&&delete t[e]}),"number"==typeof(e=l({},this.constructor.Default,{},t,{},"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),m.typeCheckConfig(An,e,this.constructor.DefaultType),e.sanitize&&(e.template=In(e.template,e.whiteList,e.sanitizeFn)),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(Pn);null!==t&&t.length&&e.removeClass(t.join(""))},e._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},e._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute("x-placement")&&(p(e).removeClass(Un),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data(On),t="object"==typeof n&&n;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data(On,e)),"string"==typeof n)){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Rn}},{key:"NAME",get:function(){return An}},{key:"DATA_KEY",get:function(){return On}},{key:"Event",get:function(){return Wn}},{key:"EVENT_KEY",get:function(){return Nn}},{key:"DefaultType",get:function(){return jn}}]),i}();p.fn[An]=Xn._jQueryInterface,p.fn[An].Constructor=Xn,p.fn[An].noConflict=function(){return p.fn[An]=kn,Xn._jQueryInterface};var Gn="popover",$n="bs.popover",Jn="."+$n,Zn=p.fn[Gn],ei="bs-popover",ti=new RegExp("(^|\\s)"+ei+"\\S+","g"),ni=l({},Xn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),ii=l({},Xn.DefaultType,{content:"(string|element|function)"}),oi="fade",ri="show",si=".popover-header",ai=".popover-body",li={HIDE:"hide"+Jn,HIDDEN:"hidden"+Jn,SHOW:"show"+Jn,SHOWN:"shown"+Jn,INSERTED:"inserted"+Jn,CLICK:"click"+Jn,FOCUSIN:"focusin"+Jn,FOCUSOUT:"focusout"+Jn,MOUSEENTER:"mouseenter"+Jn,MOUSELEAVE:"mouseleave"+Jn},ci=function(e){function i(){return e.apply(this,arguments)||this}!function(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}(i,e);var t=i.prototype;return t.isWithContent=function(){return this.getTitle()||this._getContent()},t.addAttachmentClass=function(e){p(this.getTipElement()).addClass(ei+"-"+e)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var e=p(this.getTipElement());this.setElementContent(e.find(si),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(ai),t),e.removeClass(oi+" "+ri)},t._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},t._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(ti);null!==t&&0<t.length&&e.removeClass(t.join(""))},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data($n),t="object"==typeof n?n:null;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data($n,e)),"string"==typeof n)){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return ni}},{key:"NAME",get:function(){return Gn}},{key:"DATA_KEY",get:function(){return $n}},{key:"Event",get:function(){return li}},{key:"EVENT_KEY",get:function(){return Jn}},{key:"DefaultType",get:function(){return ii}}]),i}(Xn);p.fn[Gn]=ci._jQueryInterface,p.fn[Gn].Constructor=ci,p.fn[Gn].noConflict=function(){return p.fn[Gn]=Zn,ci._jQueryInterface};var hi="scrollspy",ui="bs.scrollspy",fi="."+ui,di=p.fn[hi],pi={offset:10,method:"auto",target:""},mi={offset:"number",method:"string",target:"(string|element)"},gi={ACTIVATE:"activate"+fi,SCROLL:"scroll"+fi,LOAD_DATA_API:"load"+fi+".data-api"},_i="dropdown-item",vi="active",yi='[data-spy="scroll"]',Ei=".nav, .list-group",bi=".nav-link",wi=".nav-item",Ti=".list-group-item",Ci=".dropdown",Si=".dropdown-item",Di=".dropdown-toggle",Ii="offset",Ai="position",Oi=function(){function n(e,t){var n=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(t),this._selector=this._config.target+" "+bi+","+this._config.target+" "+Ti+","+this._config.target+" "+Si,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(gi.SCROLL,function(e){return n._process(e)}),this.refresh(),this._process()}var e=n.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?Ii:Ai,o="auto"===this._config.method?e:this._config.method,r=o===Ai?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(e){var t,n=m.getSelectorFromElement(e);if(n&&(t=document.querySelector(n)),t){var i=t.getBoundingClientRect();if(i.width||i.height)return[p(t)[o]().top+r,n]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},e.dispose=function(){p.removeData(this._element,ui),p(this._scrollElement).off(fi),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(e){if("string"!=typeof(e=l({},pi,{},"object"==typeof e&&e?e:{})).target){var t=p(e.target).attr("id");t||(t=m.getUID(hi),p(e.target).attr("id",t)),e.target="#"+t}return m.typeCheckConfig(hi,e,mi),e},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),n<=e){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||e<this._offsets[o+1])&&this._activate(this._targets[o])}}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map(function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'}),n=p([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass(_i)?(n.closest(Ci).find(Di).addClass(vi),n.addClass(vi)):(n.addClass(vi),n.parents(Ei).prev(bi+", "+Ti).addClass(vi),n.parents(Ei).prev(wi).children(bi).addClass(vi)),p(this._scrollElement).trigger(gi.ACTIVATE,{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(e){return e.classList.contains(vi)}).forEach(function(e){return e.classList.remove(vi)})},n._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(ui);if(e||(e=new n(this,"object"==typeof t&&t),p(this).data(ui,e)),"string"==typeof t){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return pi}}]),n}();p(window).on(gi.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(yi)),t=e.length;t--;){var n=p(e[t]);Oi._jQueryInterface.call(n,n.data())}}),p.fn[hi]=Oi._jQueryInterface,p.fn[hi].Constructor=Oi,p.fn[hi].noConflict=function(){return p.fn[hi]=di,Oi._jQueryInterface};var Ni="bs.tab",ki="."+Ni,Li=p.fn.tab,Pi={HIDE:"hide"+ki,HIDDEN:"hidden"+ki,SHOW:"show"+ki,SHOWN:"shown"+ki,CLICK_DATA_API:"click"+ki+".data-api"},xi="dropdown-menu",ji="active",Hi="disabled",Ri="fade",Fi="show",Mi=".dropdown",Wi=".nav, .list-group",Ui=".active",Bi="> li > .active",qi='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Ki=".dropdown-toggle",Qi="> .dropdown-menu .active",Vi=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(ji)||p(this._element).hasClass(Hi))){var e,i,t=p(this._element).closest(Wi)[0],o=m.getSelectorFromElement(this._element);if(t){var r="UL"===t.nodeName||"OL"===t.nodeName?Bi:Ui;i=(i=p.makeArray(p(t).find(r)))[i.length-1]}var s=p.Event(Pi.HIDE,{relatedTarget:this._element}),a=p.Event(Pi.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(e=document.querySelector(o)),this._activate(this._element,t);var l=function(){var e=p.Event(Pi.HIDDEN,{relatedTarget:n._element}),t=p.Event(Pi.SHOWN,{relatedTarget:i});p(i).trigger(e),p(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){p.removeData(this._element,Ni),this._element=null},e._activate=function(e,t,n){function i(){return o._transitionComplete(e,r,n)}var o=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?p(t).children(Ui):p(t).find(Bi))[0],s=n&&r&&p(r).hasClass(Ri);if(r&&s){var a=m.getTransitionDurationFromElement(r);p(r).removeClass(Fi).one(m.TRANSITION_END,i).emulateTransitionEnd(a)}else i()},e._transitionComplete=function(e,t,n){if(t){p(t).removeClass(ji);var i=p(t.parentNode).find(Qi)[0];i&&p(i).removeClass(ji),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}if(p(e).addClass(ji),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),m.reflow(e),e.classList.contains(Ri)&&e.classList.add(Fi),e.parentNode&&p(e.parentNode).hasClass(xi)){var o=p(e).closest(Mi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ki));p(r).addClass(ji)}e.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(Ni);if(t||(t=new i(this),e.data(Ni,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p(document).on(Pi.CLICK_DATA_API,qi,function(e){e.preventDefault(),Vi._jQueryInterface.call(p(this),"show")}),p.fn.tab=Vi._jQueryInterface,p.fn.tab.Constructor=Vi,p.fn.tab.noConflict=function(){return p.fn.tab=Li,Vi._jQueryInterface};var Yi="toast",zi="bs.toast",Xi="."+zi,Gi=p.fn[Yi],$i={CLICK_DISMISS:"click.dismiss"+Xi,HIDE:"hide"+Xi,HIDDEN:"hidden"+Xi,SHOW:"show"+Xi,SHOWN:"shown"+Xi},Ji="fade",Zi="hide",eo="show",to="showing",no={animation:"boolean",autohide:"boolean",delay:"number"},io={animation:!0,autohide:!0,delay:500},oo='[data-dismiss="toast"]',ro=function(){function i(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var e=i.prototype;return e.show=function(){var e=this,t=p.Event($i.SHOW);if(p(this._element).trigger(t),!t.isDefaultPrevented()){this._config.animation&&this._element.classList.add(Ji);var n=function(){e._element.classList.remove(to),e._element.classList.add(eo),p(e._element).trigger($i.SHOWN),e._config.autohide&&(e._timeout=setTimeout(function(){e.hide()},e._config.delay))};if(this._element.classList.remove(Zi),m.reflow(this._element),this._element.classList.add(to),this._config.animation){var i=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(eo)){var e=p.Event($i.HIDE);p(this._element).trigger(e),e.isDefaultPrevented()||this._close()}},e.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(eo)&&this._element.classList.remove(eo),p(this._element).off($i.CLICK_DISMISS),p.removeData(this._element,zi),this._element=null,this._config=null},e._getConfig=function(e){return e=l({},io,{},p(this._element).data(),{},"object"==typeof e&&e?e:{}),m.typeCheckConfig(Yi,e,this.constructor.DefaultType),e},e._setListeners=function(){var e=this;p(this._element).on($i.CLICK_DISMISS,oo,function(){return e.hide()})},e._close=function(){function e(){t._element.classList.add(Zi),p(t._element).trigger($i.HIDDEN)}var t=this;if(this._element.classList.remove(eo),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(zi);if(t||(t=new i(this,"object"==typeof n&&n),e.data(zi,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"DefaultType",get:function(){return no}},{key:"Default",get:function(){return io}}]),i}();p.fn[Yi]=ro._jQueryInterface,p.fn[Yi].Constructor=ro,p.fn[Yi].noConflict=function(){return p.fn[Yi]=Gi,ro._jQueryInterface},e.Alert=_,e.Button=x,e.Carousel=he,e.Collapse=De,e.Dropdown=en,e.Modal=wn,e.Popover=ci,e.Scrollspy=Oi,e.Tab=Vi,e.Toast=ro,e.Tooltip=Xn,e.Util=m,Object.defineProperty(e,"__esModule",{value:!0})});
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]}},e=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},i=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},n=t=>{const e=i(t);return e&&document.querySelector(e)?e:null},s=t=>{const e=i(t);return e?document.querySelector(e):null},o=t=>{t.dispatchEvent(new Event("transitionend"))},r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),a=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?t.findOne(e):null,l=(t,e,i)=>{Object.keys(i).forEach(n=>{const s=i[n],o=e[n],a=o&&r(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)})},c=t=>!(!r(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),h=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),d=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d(t.parentNode):null},u=()=>{},f=t=>t.offsetHeight,p=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},m=[],g=()=>"rtl"===document.documentElement.dir,_=t=>{var e;e=()=>{const e=p();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",()=>{m.forEach(t=>t())}),m.push(e)):e()},b=t=>{"function"==typeof t&&t()},v=(t,e,i=!0)=>{if(!i)return void b(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const r=({target:i})=>{i===e&&(s=!0,e.removeEventListener("transitionend",r),b(t))};e.addEventListener("transitionend",r),setTimeout(()=>{s||o(e)},n)},y=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},w=/[^.]*(?=\..*)\.|.*/,E=/\..*/,A=/::\d+$/,T={};let O=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},k=/^(mouseenter|mouseleave)/i,L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function D(t){const e=x(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function S(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;s<o;s++){const o=t[n[s]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function I(t,e,i){const n="string"==typeof e,s=n?i:e;let o=M(t);return L.has(o)||(o=t),[n,s,o]}function N(t,e,i,n,s){if("string"!=typeof e||!t)return;if(i||(i=n,n=null),k.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=I(e,i,n),l=D(t),c=l[a]||(l[a]={}),h=S(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=x(r,e.replace(w,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function j(t,e,i,n,s){const o=S(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function M(t){return t=t.replace(E,""),C[t]||t}const P={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=I(e,i,n),a=r!==e,l=D(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void j(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];j(t,e,i,n.originalHandler,n.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const n=i.replace(A,"");if(!a||e.includes(n)){const e=h[i];j(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=p(),s=M(e),o=e!==s,r=L.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},H=new Map;var R={set(t,e,i){H.has(t)||H.set(t,new Map);const n=H.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>H.has(t)&&H.get(t).get(e)||null,remove(t,e){if(!H.has(t))return;const i=H.get(t);i.delete(e),0===i.size&&H.delete(t)}};class B{constructor(t){(t=a(t))&&(this._element=t,R.set(this._element,this.constructor.DATA_KEY,this))}dispose(){R.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){v(t,e,i)}static getInstance(t){return R.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.0.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class W extends B{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,i=this._triggerCloseEvent(e);null===i||i.defaultPrevented||this._removeElement(e)}_getRootElement(t){return s(t)||t.closest(".alert")}_triggerCloseEvent(t){return P.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),P.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}P.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',W.handleDismiss(new W)),_(W);class q extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=q.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function z(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function $(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');q.getOrCreateInstance(e).toggle()}),_(q);const U={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+$(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+$(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=z(t.dataset[i])}),e},getDataAttribute:(t,e)=>z(t.getAttribute("data-bs-"+$(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},V={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",X="prev",Y="left",Q="right",G={ArrowLeft:Q,ArrowRight:Y};class Z extends B{constructor(e,i){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(i),this._indicatorsElement=t.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return F}static get NAME(){return"carousel"}next(){this._slide(K)}nextWhenVisible(){!document.hidden&&c(this._element)&&this.next()}prev(){this._slide(X)}pause(e){e||(this._isPaused=!0),t.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(o(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=t.findOne(".active.carousel-item",this._element);const i=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(e));if(i===e)return this.pause(),void this.cycle();const n=e>i?K:X;this._slide(n,this._items[e])}_getConfig(t){return t={...F,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("carousel",t,V),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:Y)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};t.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",t=>e(t)),P.on(this._element,"pointerup.bs.carousel",t=>n(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",t=>e(t)),P.on(this._element,"touchmove.bs.carousel",t=>i(t)),P.on(this._element,"touchend.bs.carousel",t=>n(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=G[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(e){return this._items=e&&e.parentNode?t.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(t,e){const i=t===K;return y(this._items,e,i,this._config.wrap)}_triggerSlideEvent(e,i){const n=this._getItemIndex(e),s=this._getItemIndex(t.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:i,from:s,to:n})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const i=t.findOne(".active",this._indicatorsElement);i.classList.remove("active"),i.removeAttribute("aria-current");const n=t.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t<n.length;t++)if(Number.parseInt(n[t].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(e)){n[t].classList.add("active"),n[t].setAttribute("aria-current","true");break}}}_updateInterval(){const e=this._activeElement||t.findOne(".active.carousel-item",this._element);if(!e)return;const i=Number.parseInt(e.getAttribute("data-bs-interval"),10);i?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=i):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(e,i){const n=this._directionToOrder(e),s=t.findOne(".active.carousel-item",this._element),o=this._getItemIndex(s),r=i||this._getItemByOrder(n,s),a=this._getItemIndex(r),l=Boolean(this._interval),c=n===K,h=c?"carousel-item-start":"carousel-item-end",d=c?"carousel-item-next":"carousel-item-prev",u=this._orderToDirection(n);if(r&&r.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(r,u).defaultPrevented)return;if(!s||!r)return;this._isSliding=!0,l&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;const p=()=>{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),f(r),s.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),s.classList.remove("active",d,h),this._isSliding=!1,setTimeout(p,0)};this._queueCallback(t,s,!0)}else s.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,p();l&&this.cycle()}_directionToOrder(t){return[Q,Y].includes(t)?g()?t===Y?X:K:t===Y?K:X:t}_orderToDirection(t){return[K,X].includes(t)?g()?t===X?Y:Q:t===X?Q:Y:t}static carouselInterface(t,e){const i=Z.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Z.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=s(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Z.carouselInterface(e,i),n&&Z.getInstance(e).to(n),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Z.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const e=t.find('[data-bs-ride="carousel"]');for(let t=0,i=e.length;t<i;t++)Z.carouselInterface(e[t],Z.getInstance(e[t]))}),_(Z);const J={toggle:!0,parent:""},tt={toggle:"boolean",parent:"(string|element)"};class et extends B{constructor(e,i){super(e),this._isTransitioning=!1,this._config=this._getConfig(i),this._triggerArray=t.find(`[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`);const s=t.find('[data-bs-toggle="collapse"]');for(let e=0,i=s.length;e<i;e++){const i=s[e],o=n(i),r=t.find(o).filter(t=>t===this._element);null!==o&&r.length&&(this._selector=o,this._triggerArray.push(i))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return J}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let e,i;this._parent&&(e=t.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===e.length&&(e=null));const n=t.findOne(this._selector);if(e){const t=e.find(t=>n!==t);if(i=t?et.getInstance(t):null,i&&i._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e&&e.forEach(t=>{n!==t&&et.collapseInterface(t,"hide"),i||R.set(t,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(s[0].toUpperCase()+s.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",this.setTransitioning(!1),P.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[s]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",f(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t<e;t++){const e=this._triggerArray[t],i=s(e);i&&!i.classList.contains("show")&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[t]="",this._queueCallback(()=>{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...J,...t}).toggle=Boolean(t.toggle),l("collapse",t,tt),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:e}=this._config;e=a(e);const i=`[data-bs-toggle="collapse"][data-bs-parent="${e}"]`;return t.find(i,e).forEach(t=>{const e=s(t);this._addAriaAndCollapsedClass(e,[t])}),e}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const i=t.classList.contains("show");e.forEach(t=>{i?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",i)})}static collapseInterface(t,e){let i=et.getInstance(t);const n={...J,...U.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!i&&n.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(n.toggle=!1),i||(i=new et(t,n)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){et.collapseInterface(this,t)}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const i=U.getDataAttributes(this),s=n(this);t.find(s).forEach(t=>{const e=et.getInstance(t);let n;e?(null===e._parent&&"string"==typeof i.parent&&(e._config.parent=i.parent,e._parent=e._getParent()),n="toggle"):n=i,et.collapseInterface(t,n)})})),_(et);var it="top",nt="bottom",st="right",ot="left",rt=[it,nt,st,ot],at=rt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),lt=[].concat(rt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),ct=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ht(t){return t?(t.nodeName||"").toLowerCase():null}function dt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ut(t){return t instanceof dt(t).Element||t instanceof Element}function ft(t){return t instanceof dt(t).HTMLElement||t instanceof HTMLElement}function pt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof dt(t).ShadowRoot||t instanceof ShadowRoot)}var mt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ft(s)&&ht(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});ft(n)&&ht(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function gt(t){return t.split("-")[0]}function _t(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function bt(t){var e=_t(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function vt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&pt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function yt(t){return dt(t).getComputedStyle(t)}function wt(t){return["table","td","th"].indexOf(ht(t))>=0}function Et(t){return((ut(t)?t.ownerDocument:t.document)||window.document).documentElement}function At(t){return"html"===ht(t)?t:t.assignedSlot||t.parentNode||(pt(t)?t.host:null)||Et(t)}function Tt(t){return ft(t)&&"fixed"!==yt(t).position?t.offsetParent:null}function Ot(t){for(var e=dt(t),i=Tt(t);i&&wt(i)&&"static"===yt(i).position;)i=Tt(i);return i&&("html"===ht(i)||"body"===ht(i)&&"static"===yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&ft(t)&&"fixed"===yt(t).position)return null;for(var i=At(t);ft(i)&&["html","body"].indexOf(ht(i))<0;){var n=yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ct(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var kt=Math.max,Lt=Math.min,xt=Math.round;function Dt(t,e,i){return kt(t,Lt(e,i))}function St(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function It(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Nt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=gt(i.placement),l=Ct(a),c=[ot,st].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return St("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:It(t,rt))}(s.padding,i),d=bt(o),u="y"===l?it:ot,f="y"===l?nt:st,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ot(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=Dt(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&vt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},jt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mt(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,h=!0===c?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:xt(xt(e*n)/n)||0,y:xt(xt(i*n)/n)||0}}(o):"function"==typeof c?c(o):o,d=h.x,u=void 0===d?0:d,f=h.y,p=void 0===f?0:f,m=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),_=ot,b=it,v=window;if(l){var y=Ot(i),w="clientHeight",E="clientWidth";y===dt(i)&&"static"!==yt(y=Et(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,s===it&&(b=nt,p-=y[w]-n.height,p*=a?1:-1),s===ot&&(_=st,u-=y[E]-n.width,u*=a?1:-1)}var A,T=Object.assign({position:r},l&&jt);return a?Object.assign({},T,((A={})[b]=g?"0":"",A[_]=m?"0":"",A.transform=(v.devicePixelRatio||1)<2?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",A)):Object.assign({},T,((e={})[b]=g?p+"px":"",e[_]=m?u+"px":"",e.transform="",e))}var Pt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:gt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Mt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Mt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Ht={passive:!0},Rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,Ht)})),a&&l.addEventListener("resize",i.update,Ht),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,Ht)})),a&&l.removeEventListener("resize",i.update,Ht)}},data:{}},Bt={left:"right",right:"left",bottom:"top",top:"bottom"};function Wt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Bt[t]}))}var qt={start:"end",end:"start"};function zt(t){return t.replace(/start|end/g,(function(t){return qt[t]}))}function $t(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ut(t){return _t(Et(t)).left+$t(t).scrollLeft}function Ft(t){var e=yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Vt(t,e){var i;void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ft(e)&&Ft(e)?e:t(At(e))}(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=dt(n),r=s?[o].concat(o.visualViewport||[],Ft(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Vt(At(r)))}function Kt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t,e){return"viewport"===e?Kt(function(t){var e=dt(t),i=Et(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+Ut(t),y:a}}(t)):ft(e)?function(t){var e=_t(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Kt(function(t){var e,i=Et(t),n=$t(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ut(t),l=-n.scrollTop;return"rtl"===yt(s||i).direction&&(a+=kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Et(t)))}function Yt(t){return t.split("-")[1]}function Qt(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?gt(s):null,r=s?Yt(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case it:e={x:a,y:i.y-n.height};break;case nt:e={x:a,y:i.y+i.height};break;case st:e={x:i.x+i.width,y:l};break;case ot:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ct(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[h]/2-n[h]/2);break;case"end":e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Gt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,h=void 0===c?"popper":c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=St("number"!=typeof p?p:It(p,rt)),g="popper"===h?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[u?g:h],y=function(t,e,i){var n="clippingParents"===e?function(t){var e=Vt(At(t)),i=["absolute","fixed"].indexOf(yt(t).position)>=0&&ft(t)?Ot(t):t;return ut(i)?e.filter((function(t){return ut(t)&&vt(t,i)&&"body"!==ht(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Xt(t,i);return e.top=kt(n.top,e.top),e.right=Lt(n.right,e.right),e.bottom=Lt(n.bottom,e.bottom),e.left=kt(n.left,e.left),e}),Xt(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(ut(v)?v:v.contextElement||Et(t.elements.popper),r,l),w=_t(_),E=Qt({reference:w,element:b,strategy:"absolute",placement:s}),A=Kt(Object.assign({},b,E)),T="popper"===h?A:w,O={top:y.top-T.top+m.top,bottom:T.bottom-y.bottom+m.bottom,left:y.left-T.left+m.left,right:T.right-y.right+m.right},C=t.modifiersData.offset;if("popper"===h&&C){var k=C[s];Object.keys(O).forEach((function(t){var e=[st,nt].indexOf(t)>=0?1:-1,i=[it,nt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function Zt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?lt:l,h=Yt(n),d=h?a?at:at.filter((function(t){return Yt(t)===h})):rt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[gt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}var Jt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=gt(g),b=l||(_!==g&&p?function(t){if("auto"===gt(t))return[];var e=Wt(t);return[zt(t),e,zt(e)]}(g):[Wt(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat("auto"===gt(i)?Zt(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O<v.length;O++){var C=v[O],k=gt(C),L="start"===Yt(C),x=[it,nt].indexOf(k)>=0,D=x?"width":"height",S=Gt(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=x?L?st:ot:L?nt:it;y[D]>w[D]&&(I=Wt(I));var N=Wt(I),j=[];if(o&&j.push(S[k]<=0),a&&j.push(S[I]<=0,S[N]<=0),j.every((function(t){return t}))){T=C,A=!1;break}E.set(C,j)}if(A)for(var M=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},P=p?3:1;P>0&&"break"!==M(P);P--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function te(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ee(t){return[it,st,nt,ot].some((function(e){return t[e]>=0}))}var ie={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Gt(e,{elementContext:"reference"}),a=Gt(e,{altBoundary:!0}),l=te(r,n),c=te(a,s,o),h=ee(l),d=ee(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},ne={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=gt(t),s=[ot,it].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[ot,st].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},se={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Qt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},oe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=Gt(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=gt(e.placement),b=Yt(e.placement),v=!b,y=Ct(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?it:ot,L="y"===y?nt:st,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],I=E[y]-g[L],N=f?-T[x]/2:0,j="start"===b?A[x]:T[x],M="start"===b?-T[x]:-A[x],P=e.elements.arrow,H=f&&P?bt(P):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=R[k],W=R[L],q=Dt(0,A[x],H[x]),z=v?A[x]/2-N-q-B-O:j-q-B-O,$=v?-A[x]/2+N+q+W+O:M+q+W+O,U=e.elements.arrow&&Ot(e.elements.arrow),F=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-F,X=E[y]+$-V;if(o){var Y=Dt(f?Lt(S,K):S,D,f?kt(I,X):I);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?it:ot,G="x"===y?nt:st,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=Dt(f?Lt(J,K):J,Z,f?kt(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function re(t,e,i){void 0===i&&(i=!1);var n,s,o=Et(e),r=_t(t),a=ft(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!i)&&(("body"!==ht(e)||Ft(o))&&(l=(n=e)!==dt(n)&&ft(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:$t(n)),ft(e)?((c=_t(e)).x+=e.clientLeft,c.y+=e.clientTop):o&&(c.x=Ut(o))),{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}var ae={placement:"bottom",modifiers:[],strategy:"absolute"};function le(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ce(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?ae:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},ae,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){d(),a.options=Object.assign({},o,a.options,i),a.scrollParents={reference:ut(t)?Vt(t):t.contextElement?Vt(t.contextElement):[],popper:Vt(e)};var s,r,c=function(t){var e=function(t){var e=new Map,i=new Set,n=[];return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||function t(s){i.add(s.name),[].concat(s.requires||[],s.requiresIfExists||[]).forEach((function(n){if(!i.has(n)){var s=e.get(n);s&&t(s)}})),n.push(s)}(t)})),n}(t);return ct.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((s=[].concat(n,a.options.modifiers),r=s.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(r).map((function(t){return r[t]}))));return a.orderedModifiers=c.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(le(e,i)){a.rects={reference:re(e,Ot(i),"fixed"===a.options.strategy),popper:bt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!le(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var he=ce(),de=ce({defaultModifiers:[Rt,se,Pt,mt]}),ue=ce({defaultModifiers:[Rt,se,Pt,mt,ne,Jt,oe,Nt,ie]}),fe=Object.freeze({__proto__:null,popperGenerator:ce,detectOverflow:Gt,createPopperBase:he,createPopper:ue,createPopperLite:de,top:it,bottom:nt,right:st,left:ot,auto:"auto",basePlacements:rt,start:"start",end:"end",clippingParents:"clippingParents",viewport:"viewport",popper:"popper",reference:"reference",variationPlacements:at,placements:lt,beforeRead:"beforeRead",read:"read",afterRead:"afterRead",beforeMain:"beforeMain",main:"main",afterMain:"afterMain",beforeWrite:"beforeWrite",write:"write",afterWrite:"afterWrite",modifierPhases:ct,applyStyles:mt,arrow:Nt,computeStyles:Pt,eventListeners:Rt,flip:Jt,hide:ie,offset:ne,popperOffsets:se,preventOverflow:oe});const pe=new RegExp("ArrowUp|ArrowDown|Escape"),me=g()?"top-end":"top-start",ge=g()?"top-start":"top-end",_e=g()?"bottom-end":"bottom-start",be=g()?"bottom-start":"bottom-end",ve=g()?"left-start":"right-start",ye=g()?"right-start":"left-start",we={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},Ee={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Ae extends B{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return we}static get DefaultType(){return Ee}static get NAME(){return"dropdown"}toggle(){h(this._element)||(this._element.classList.contains("show")?this.hide():this.show())}show(){if(h(this._element)||this._menu.classList.contains("show"))return;const t=Ae.getParentFromElement(this._element),e={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)U.setDataAttribute(this._menu,"popper","none");else{if(void 0===fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:r(this._config.reference)?e=a(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=ue(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",u)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),P.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(h(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){P.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},l("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!r(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return t.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ve;if(t.classList.contains("dropstart"))return ye;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ge:me:e?be:_e}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:e,target:i}){const n=t.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(c);n.length&&y(n,i,"ArrowDown"===e,!n.includes(i)).focus()}static dropdownInterface(t,e){const i=Ae.getOrCreateInstance(t,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){Ae.dropdownInterface(this,t)}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const i=t.find('[data-bs-toggle="dropdown"]');for(let t=0,n=i.length;t<n;t++){const n=Ae.getInstance(i[t]);if(!n||!1===n._config.autoClose)continue;if(!n._element.classList.contains("show"))continue;const s={relatedTarget:n._element};if(e){const t=e.composedPath(),i=t.includes(n._menu);if(t.includes(n._element)||"inside"===n._config.autoClose&&!i||"outside"===n._config.autoClose&&i)continue;if(n._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;"click"===e.type&&(s.clickEvent=e)}n._completeHide(s)}}static getParentFromElement(t){return s(t)||t.parentNode}static dataApiKeydownHandler(e){if(/input|textarea/i.test(e.target.tagName)?"Space"===e.key||"Escape"!==e.key&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key||e.target.closest(".dropdown-menu")):!pe.test(e.key))return;const i=this.classList.contains("show");if(!i&&"Escape"===e.key)return;if(e.preventDefault(),e.stopPropagation(),h(this))return;const n=()=>this.matches('[data-bs-toggle="dropdown"]')?this:t.prev(this,'[data-bs-toggle="dropdown"]')[0];return"Escape"===e.key?(n().focus(),void Ae.clearMenus()):"ArrowUp"===e.key||"ArrowDown"===e.key?(i||n().click(),void Ae.getInstance(n())._selectMenuItem(e)):void(i&&"Space"!==e.key||Ae.clearMenus())}}P.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',Ae.dataApiKeydownHandler),P.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",Ae.dataApiKeydownHandler),P.on(document,"click.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),Ae.dropdownInterface(this)})),_(Ae);class Te{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(e,i){r(e)?i(e):t.find(e,this._element).forEach(i)}isOverflowing(){return this.getWidth()>0}}const Oe={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},Ce={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class ke{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&f(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{b(t)})):b(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),b(t)})):b(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...Oe,..."object"==typeof t?t:{}}).rootElement=a(t.rootElement),l("backdrop",t,Ce),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),P.on(this._getElement(),"mousedown.bs.backdrop",()=>{b(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(P.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){v(t,this._getElement(),this._config.isAnimated)}}const Le={backdrop:!0,keyboard:!0,focus:!0},xe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class De extends B{constructor(e,i){super(e),this._config=this._getConfig(i),this._dialog=t.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Te}static get Default(){return Le}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),P.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&["A","AREA"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),P.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>P.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new ke({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...Le,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("modal",t,xe),t}_showElement(e){const i=this._isAnimated(),n=t.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,n&&(n.scrollTop=0),i&&f(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:e})},this._dialog,i)}_enforceFocus(){P.off(document,"focusin.bs.modal"),P.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains("modal-static")||(n||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!g()||i&&!t&&g())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!g()||!i&&t&&g())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=De.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=s(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{c(this)&&this.focus()})}),De.getOrCreateInstance(e).toggle(this)})),_(De);const Se={backdrop:!0,keyboard:!0,scroll:!1},Ie={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Ne extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Se}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||((new Te).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(P.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new Te).reset(),P.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...Se,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("offcanvas",t,Ie),t}_initializeBackDrop(){return new ke({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){P.off(document,"focusin.bs.offcanvas"),P.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){P.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),P.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Ne.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const i=s(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),h(this))return;P.one(i,"hidden.bs.offcanvas",()=>{c(this)&&this.focus()});const n=t.findOne(".offcanvas.show");n&&n!==i&&Ne.getInstance(n).hide(),Ne.getOrCreateInstance(i).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>t.find(".offcanvas.show").forEach(t=>Ne.getOrCreateInstance(t).show())),_(Ne);const je=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Me=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Pe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,He=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!je.has(i)||Boolean(Me.test(t.nodeValue)||Pe.test(t.nodeValue));const n=e.filter(t=>t instanceof RegExp);for(let t=0,e=n.length;t<e;t++)if(n[t].test(i))return!0;return!1};function Re(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=Object.keys(e),o=[].concat(...n.body.querySelectorAll("*"));for(let t=0,i=o.length;t<i;t++){const i=o[t],n=i.nodeName.toLowerCase();if(!s.includes(n)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(e["*"]||[],e[n]||[]);r.forEach(t=>{He(t,a)||i.removeAttribute(t.nodeName)})}return n.body.innerHTML}const Be=new RegExp("(^|\\s)bs-tooltip\\S+","g"),We=new Set(["sanitize","allowList","sanitizeFn"]),qe={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},ze={AUTO:"auto",TOP:"top",RIGHT:g()?"left":"right",BOTTOM:"bottom",LEFT:g()?"right":"left"},$e={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Fe extends B{constructor(t,e){if(void 0===fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return $e}static get NAME(){return"tooltip"}static get Event(){return Ue}static get DefaultType(){return qe}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),i=d(this._element),n=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(t.defaultPrevented||!n)return;const s=this.getTipElement(),o=e(this.constructor.NAME);s.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this.setContent(),this._config.animation&&s.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;R.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.appendChild(s),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=ue(this._element,s,this._getPopperConfig(a)),s.classList.add("show");const c="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;c&&s.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",u)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return r(e)?(e=a(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Re(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const i=this.constructor.DATA_KEY;return(e=e||R.get(t.delegateTarget,i))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),R.set(t.delegateTarget,i,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return ze[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this._config.selector,t=>this._enter(t)),P.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{We.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:a(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Re(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Be);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Fe);const Ve=new RegExp("(^|\\s)bs-popover\\S+","g"),Ke={...Fe.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Xe={...Fe.DefaultType,content:"(string|element|function)"},Ye={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Qe extends Fe{static get Default(){return Ke}static get NAME(){return"popover"}static get Event(){return Ye}static get DefaultType(){return Xe}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||t.findOne(".popover-header",this.tip).remove(),this._getContent()||t.findOne(".popover-body",this.tip).remove()),this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".popover-header",e),this.getTitle());let i=this._getContent();"function"==typeof i&&(i=i.call(this._element)),this.setElementContent(t.findOne(".popover-body",e),i),e.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ve);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Qe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Qe);const Ge={offset:10,method:"auto",target:""},Ze={offset:"number",method:"string",target:"(string|element)"};class Je extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Ge}static get NAME(){return"scrollspy"}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?e:this._config.method,s="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.find(this._selector).map(e=>{const o=n(e),r=o?t.findOne(o):null;if(r){const t=r.getBoundingClientRect();if(t.width||t.height)return[U[i](r).top+s,o]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){P.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...Ge,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&r(t.target)){let{id:i}=t.target;i||(i=e("scrollspy"),t.target.id=i),t.target="#"+i}return l("scrollspy",t,Ze),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(e){this._activeTarget=e,this._clear();const i=this._selector.split(",").map(t=>`${t}[data-bs-target="${e}"],${t}[href="${e}"]`),n=t.findOne(i.join(","));n.classList.contains("dropdown-item")?(t.findOne(".dropdown-toggle",n.closest(".dropdown")).classList.add("active"),n.classList.add("active")):(n.classList.add("active"),t.parents(n,".nav, .list-group").forEach(e=>{t.prev(e,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),t.prev(e,".nav-item").forEach(e=>{t.children(e,".nav-link").forEach(t=>t.classList.add("active"))})})),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:e})}_clear(){t.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{t.find('[data-bs-spy="scroll"]').forEach(t=>new Je(t))}),_(Je);class ti extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let e;const i=s(this._element),n=this._element.closest(".nav, .list-group");if(n){const i="UL"===n.nodeName||"OL"===n.nodeName?":scope > li > .active":".active";e=t.find(i,n),e=e[e.length-1]}const o=e?P.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==o&&o.defaultPrevented)return;this._activate(this._element,n);const r=()=>{P.trigger(e,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:e})};i?this._activate(i,i.parentNode,r):r()}_activate(e,i,n){const s=(!i||"UL"!==i.nodeName&&"OL"!==i.nodeName?t.children(i,".active"):t.find(":scope > li > .active",i))[0],o=n&&s&&s.classList.contains("fade"),r=()=>this._transitionComplete(e,s,n);s&&o?(s.classList.remove("show"),this._queueCallback(r,e,!0)):r()}_transitionComplete(e,i,n){if(i){i.classList.remove("active");const e=t.findOne(":scope > .dropdown-menu .active",i.parentNode);e&&e.classList.remove("active"),"tab"===i.getAttribute("role")&&i.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),f(e),e.classList.contains("fade")&&e.classList.add("show");let s=e.parentNode;if(s&&"LI"===s.nodeName&&(s=s.parentNode),s&&s.classList.contains("dropdown-menu")){const i=e.closest(".dropdown");i&&t.find(".dropdown-toggle",i).forEach(t=>t.classList.add("active")),e.setAttribute("aria-expanded",!0)}n&&n()}static jQueryInterface(t){return this.each((function(){const e=ti.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),h(this)||ti.getOrCreateInstance(this).show()})),_(ti);const ei={animation:"boolean",autohide:"boolean",delay:"number"},ii={animation:!0,autohide:!0,delay:5e3};class ni extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return ei}static get Default(){return ii}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),f(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),P.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...ii,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},l("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),P.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),P.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return _(ni),{Alert:W,Button:q,Carousel:Z,Collapse:et,Dropdown:Ae,Modal:De,Offcanvas:Ne,Popover:Qe,ScrollSpy:Je,Tab:ti,Toast:ni,Tooltip:Fe}}));
//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
diff --git a/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js.map b/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js.map
index 54d2495..7a01d5c 100644
--- a/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js.map
+++ b/site/docs/3.5.0/js/vendor/bootstrap.bundle.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","LOAD_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","tagName","focus","hasAttribute","setAttribute","toggleClass","button","inputBtn","window","buttons","slice","querySelectorAll","i","len","length","add","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_objectSpread2","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","isOffsetContainer","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","createClass","protoProps","staticProps","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","_ref","getArea","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","getWindow","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","removeEventListeners","isNumeric","n","isNaN","isFinite","setStyles","unit","getRoundedOffsets","shouldRound","noRound","v","_data$offsets","round","floor","referenceWidth","popperWidth","isVertical","isVariation","horizontalToInteger","verticalToInteger","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","side","shiftOffsets","preventOverflow","instance","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","position","devicePixelRatio","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","removeAttribute","setAttributes","onLoad","modifierOptions","Popper","isDestroyed","isCreated","removeChild","classCallCheck","requestAnimationFrame","update","enableEventListeners","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","backdrop","HIDE_PREVENTED","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","transitionComplete","shownEvent","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","popperInstance","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","active","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","_close"],"mappings":";;;;;ypCAeA,IAAMA,EAAiB,gBAsBvB,SAASC,EAAsBC,GAAU,IAAAC,EAAAC,KACnCC,GAAS,EAYb,OAVAC,EAAEF,MAAMG,IAAIC,EAAKR,eAAgB,WAC/BK,GAAS,IAGXI,WAAW,WACJJ,GACHG,EAAKE,qBAAqBP,IAE3BD,GAEIE,KAcT,IAAMI,EAAO,CAEXR,eAAgB,kBAEhBW,OAJW,SAIJC,GACL,KAEEA,MAvDU,IAuDGC,KAAKC,UACXC,SAASC,eAAeJ,KACjC,OAAOA,GAGTK,uBAZW,SAYYC,GACrB,IAAIC,EAAWD,EAAQE,aAAa,eAEpC,IAAKD,GAAyB,MAAbA,EAAkB,CACjC,IAAME,EAAWH,EAAQE,aAAa,QACtCD,EAAWE,GAAyB,MAAbA,EAAmBA,EAASC,OAAS,GAG9D,IACE,OAAOP,SAASQ,cAAcJ,GAAYA,EAAW,KACrD,MAAOK,GACP,OAAO,OAIXC,iCA3BW,SA2BsBP,GAC/B,IAAKA,EACH,OAAO,EAIT,IAAIQ,EAAqBpB,EAAEY,GAASS,IAAI,uBACpCC,EAAkBtB,EAAEY,GAASS,IAAI,oBAE/BE,EAA0BC,WAAWJ,GACrCK,EAAuBD,WAAWF,GAGxC,OAAKC,GAA4BE,GAKjCL,EAAqBA,EAAmBM,MAAM,KAAK,GACnDJ,EAAkBA,EAAgBI,MAAM,KAAK,GA7FjB,KA+FpBF,WAAWJ,GAAsBI,WAAWF,KAP3C,GAUXK,OAnDW,SAmDJf,GACL,OAAOA,EAAQgB,cAGjBxB,qBAvDW,SAuDUQ,GACnBZ,EAAEY,GAASiB,QAAQnC,IAIrBoC,sBA5DW,WA6DT,OAAOC,QAAQrC,IAGjBsC,UAhEW,SAgEDC,GACR,OAAQA,EAAI,IAAMA,GAAKC,UAGzBC,gBApEW,SAoEKC,EAAeC,EAAQC,GACrC,IAAK,IAAMC,KAAYD,EACrB,GAAIE,OAAOC,UAAUC,eAAeC,KAAKL,EAAaC,GAAW,CAC/D,IAAMK,EAAgBN,EAAYC,GAC5BM,EAAgBR,EAAOE,GACvBO,EAAgBD,GAAS3C,EAAK8B,UAAUa,GAC1C,WAtHIZ,EAsHeY,EArHtB,GAAGE,SAASJ,KAAKV,GAAKe,MAAM,eAAe,GAAGC,eAuH/C,IAAK,IAAIC,OAAON,GAAeO,KAAKL,GAClC,MAAM,IAAIM,MACLhB,EAAciB,cAAjB,aACWd,EADX,oBACuCO,EADvC,wBAEsBF,EAFtB,MA1HZ,IAAgBX,GAkIdqB,eAtFW,SAsFI1C,GACb,IAAKH,SAAS8C,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxB5C,EAAQ6C,YAKnB,OAAI7C,aAAmB8C,WACd9C,EAIJA,EAAQ+C,WAINzD,EAAKoD,eAAe1C,EAAQ+C,YAH1B,KAVP,IAAMC,EAAOhD,EAAQ6C,cACrB,OAAOG,aAAgBF,WAAaE,EAAO,MAe/CC,gBA7GW,WA8GT,GAAiB,oBAAN7D,EACT,MAAM,IAAI8D,UAAU,kGAGtB,IAAMC,EAAU/D,EAAEgE,GAAGC,OAAOvC,MAAM,KAAK,GAAGA,MAAM,KAOhD,GAAIqC,EAAQ,GALI,GAKYA,EAAQ,GAJnB,GAFA,IAMoCA,EAAQ,IAJ5C,IAI+DA,EAAQ,IAAmBA,EAAQ,GAHlG,GACA,GAEmHA,EAAQ,GAC1I,MAAM,IAAIX,MAAM,iFAKtBlD,EAAK2D,kBAzIH7D,EAAEgE,GAAGE,qBAAuBvE,EAC5BK,EAAEmE,MAAMC,QAAQlE,EAAKR,gBA9Bd,CACL2E,SAAU3E,EACV4E,aAAc5E,EACd6E,OAHK,SAGEJ,GACL,GAAInE,EAAEmE,EAAMK,QAAQC,GAAG3E,MACrB,OAAOqE,EAAMO,UAAUC,QAAQC,MAAM9E,KAAM+E,aCdnD,IAAMC,EAAsB,QAEtBC,EAAsB,WACtBC,EAAS,IAAiBD,EAE1BE,EAAsBjF,EAAEgE,GAAGc,GAM3BI,EAAQ,CACZC,MAAK,QAAoBH,EACzBI,OAAM,SAAoBJ,EAC1BK,eAAc,QAAWL,EAVC,aAatBM,EACI,QADJA,EAEI,OAFJA,EAGI,OASJC,aACJ,SAAAA,EAAY3E,GACVd,KAAK0F,SAAW5E,6BAWlB6E,MAAA,SAAM7E,GACJ,IAAI8E,EAAc5F,KAAK0F,SACnB5E,IACF8E,EAAc5F,KAAK6F,gBAAgB/E,IAGjBd,KAAK8F,mBAAmBF,GAE5BG,sBAIhB/F,KAAKgG,eAAeJ,MAGtBK,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,GAC5BjF,KAAK0F,SAAW,QAKlBG,gBAAA,SAAgB/E,GACd,IAAMC,EAAWX,EAAKS,uBAAuBC,GACzCqF,GAAa,EAUjB,OARIpF,IACFoF,EAASxF,SAASQ,cAAcJ,IAIhCoF,EADGA,GACMjG,EAAEY,GAASsF,QAAX,IAAuBZ,GAAmB,MAMvDM,mBAAA,SAAmBhF,GACjB,IAAMuF,EAAanG,EAAEkF,MAAMA,EAAMC,OAGjC,OADAnF,EAAEY,GAASiB,QAAQsE,GACZA,KAGTL,eAAA,SAAelF,GAAS,IAAAf,EAAAC,KAGtB,GAFAE,EAAEY,GAASwF,YAAYd,GAElBtF,EAAEY,GAASyF,SAASf,GAAzB,CAKA,IAAMlE,EAAqBlB,EAAKiB,iCAAiCP,GAEjEZ,EAAEY,GACCX,IAAIC,EAAKR,eAAgB,SAACyE,GAAD,OAAWtE,EAAKyG,gBAAgB1F,EAASuD,KAClED,qBAAqB9C,QARtBtB,KAAKwG,gBAAgB1F,MAWzB0F,gBAAA,SAAgB1F,GACdZ,EAAEY,GACC2F,SACA1E,QAAQqD,EAAME,QACdoB,YAKEC,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAMC,EAAW3G,EAAEF,MACf8G,EAAaD,EAASC,KAAK7B,GAE1B6B,IACHA,EAAO,IAAIrB,EAAMzF,MACjB6G,EAASC,KAAK7B,EAAU6B,IAGX,UAAXvE,GACFuE,EAAKvE,GAAQvC,WAKZ+G,eAAP,SAAsBC,GACpB,OAAO,SAAU3C,GACXA,GACFA,EAAM4C,iBAGRD,EAAcrB,MAAM3F,gDA/FtB,MApCwB,iBA8I5BE,EAAES,UAAUuG,GACV9B,EAAMG,eAxII,yBA0IVE,EAAMsB,eAAe,IAAItB,IAS3BvF,EAAEgE,GAAGc,GAAoBS,EAAMkB,iBAC/BzG,EAAEgE,GAAGc,GAAMmC,YAAc1B,EACzBvF,EAAEgE,GAAGc,GAAMoC,WAAc,WAEvB,OADAlH,EAAEgE,GAAGc,GAAQG,EACNM,EAAMkB,kBChKf,IAAM3B,EAAsB,SAEtBC,EAAsB,YACtBC,EAAS,IAAiBD,EAC1BoC,EAAsB,YACtBlC,EAAsBjF,EAAEgE,GAAGc,GAE3BQ,EACK,SADLA,EAEK,MAFLA,EAGK,QAGL8B,EACmB,0BADnBA,EAEmB,0BAFnBA,EAGmB,yBAHnBA,EAImB,+BAJnBA,EAKmB,6BALnBA,EAMmB,UANnBA,EAOmB,OAGnBlC,EAAQ,CACZG,eAAc,QAAgBL,EAAYmC,EAC1CE,oBAAsB,QAAQrC,EAAYmC,EAApB,QACSnC,EAAYmC,EAC3CG,cAAa,OAAgBtC,EAAYmC,GASrCI,aACJ,SAAAA,EAAY3G,GACVd,KAAK0F,SAAW5E,6BAWlB4G,OAAA,WACE,IAAIC,GAAqB,EACrBC,GAAiB,EACfhC,EAAc1F,EAAEF,KAAK0F,UAAUU,QACnCkB,GACA,GAEF,GAAI1B,EAAa,CACf,IAAMiC,EAAQ7H,KAAK0F,SAASvE,cAAcmG,GAE1C,GAAIO,EAAO,CACT,GAAmB,UAAfA,EAAMC,KACR,GAAID,EAAME,SACR/H,KAAK0F,SAASsC,UAAUC,SAASzC,GACjCmC,GAAqB,MAChB,CACL,IAAMO,EAAgBtC,EAAYzE,cAAcmG,GAE5CY,GACFhI,EAAEgI,GAAe5B,YAAYd,OAGT,aAAfqC,EAAMC,KACe,UAA1B9H,KAAK0F,SAASyC,SAAuBN,EAAME,UAAY/H,KAAK0F,SAASsC,UAAUC,SAASzC,KAC1FmC,GAAqB,GAIvBA,GAAqB,EAGnBA,IACFE,EAAME,SAAW/H,KAAK0F,SAASsC,UAAUC,SAASzC,GAClDtF,EAAE2H,GAAO9F,QAAQ,WAGnB8F,EAAMO,QACNR,GAAiB,GAIf5H,KAAK0F,SAAS2C,aAAa,aAAerI,KAAK0F,SAASsC,UAAUC,SAAS,cAC3EL,GACF5H,KAAK0F,SAAS4C,aAAa,gBACxBtI,KAAK0F,SAASsC,UAAUC,SAASzC,IAGlCmC,GACFzH,EAAEF,KAAK0F,UAAU6C,YAAY/C,OAKnCS,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,GAC5BjF,KAAK0F,SAAW,QAKXiB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,GAEnB6B,IACHA,EAAO,IAAIW,EAAOzH,MAClBE,EAAEF,MAAM8G,KAAK7B,EAAU6B,IAGV,WAAXvE,GACFuE,EAAKvE,gDA3ET,MA3CwB,iBAkI5BrC,EAAES,UACCuG,GAAG9B,EAAMG,eAAgB+B,EAA6B,SAACjD,GACtD,IAAImE,EAASnE,EAAMK,OAMnB,GAJKxE,EAAEsI,GAAQjC,SAASf,KACtBgD,EAAStI,EAAEsI,GAAQpC,QAAQkB,GAAiB,KAGzCkB,GAAUA,EAAOH,aAAa,aAAeG,EAAOR,UAAUC,SAAS,YAC1E5D,EAAM4C,qBACD,CACL,IAAMwB,EAAWD,EAAOrH,cAAcmG,GAEtC,GAAImB,IAAaA,EAASJ,aAAa,aAAeI,EAAST,UAAUC,SAAS,aAEhF,YADA5D,EAAM4C,iBAIRQ,EAAOd,iBAAiB9D,KAAK3C,EAAEsI,GAAS,aAG3CtB,GAAG9B,EAAMmC,oBAAqBD,EAA6B,SAACjD,GAC3D,IAAMmE,EAAStI,EAAEmE,EAAMK,QAAQ0B,QAAQkB,GAAiB,GACxDpH,EAAEsI,GAAQD,YAAY/C,EAAiB,eAAenC,KAAKgB,EAAMyD,SAGrE5H,EAAEwI,QAAQxB,GAAG9B,EAAMoC,cAAe,WAKhC,IADA,IAAImB,EAAU,GAAGC,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,IAC7CwB,EAAI,EAAGC,EAAMJ,EAAQK,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAMN,EAASG,EAAQG,GACjBjB,EAAQW,EAAOrH,cAAcmG,GAC/BO,EAAME,SAAWF,EAAMQ,aAAa,WACtCG,EAAOR,UAAUiB,IAAIzD,GAErBgD,EAAOR,UAAUtB,OAAOlB,GAM5B,IAAK,IAAIsD,EAAI,EAAGC,GADhBJ,EAAU,GAAGC,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KACpB0B,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAMN,EAASG,EAAQG,GACqB,SAAxCN,EAAOxH,aAAa,gBACtBwH,EAAOR,UAAUiB,IAAIzD,GAErBgD,EAAOR,UAAUtB,OAAOlB,MAW9BtF,EAAEgE,GAAGc,GAAQyC,EAAOd,iBACpBzG,EAAEgE,GAAGc,GAAMmC,YAAcM,EACzBvH,EAAEgE,GAAGc,GAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,GAAQG,EACNsC,EAAOd,kBCjMhB,IAAM3B,EAAyB,WAEzBC,EAAyB,cACzBC,EAAS,IAAoBD,EAC7BoC,EAAyB,YACzBlC,EAAyBjF,EAAEgE,GAAGc,GAM9BkE,EAAU,CACdC,SAAW,IACXC,UAAW,EACXC,OAAW,EACXC,MAAW,QACXC,MAAW,EACXC,OAAW,GAGPC,EAAc,CAClBN,SAAW,mBACXC,SAAW,UACXC,MAAW,mBACXC,MAAW,mBACXC,KAAW,UACXC,MAAW,WAGPE,EACO,OADPA,EAEO,OAFPA,EAGO,OAHPA,EAIO,QAGPtE,EAAQ,CACZuE,MAAK,QAAoBzE,EACzB0E,KAAI,OAAoB1E,EACxB2E,QAAO,UAAoB3E,EAC3B4E,WAAU,aAAoB5E,EAC9B6E,WAAU,aAAoB7E,EAC9B8E,WAAU,aAAoB9E,EAC9B+E,UAAS,YAAoB/E,EAC7BgF,SAAQ,WAAoBhF,EAC5BiF,YAAW,cAAoBjF,EAC/BkF,UAAS,YAAoBlF,EAC7BmF,WAAU,YAAmBnF,EAC7BsC,cAAa,OAAWtC,EAAYmC,EACpC9B,eAAc,QAAWL,EAAYmC,GAGjC7B,EACY,WADZA,EAEY,SAFZA,EAGY,QAHZA,EAIY,sBAJZA,EAKY,qBALZA,EAMY,qBANZA,EAOY,qBAPZA,GASY,gBAGZ8B,GACU,UADVA,GAEU,wBAFVA,GAGU,iBAHVA,GAIU,qBAJVA,GAKU,2CALVA,GAMU,uBANVA,GAOU,gCAPVA,GAQU,yBAGVgD,GAAc,CAClBC,MAAQ,QACRC,IAAQ,OAQJC,cACJ,SAAAA,EAAY3J,EAASyB,GACnBvC,KAAK0K,OAAiB,KACtB1K,KAAK2K,UAAiB,KACtB3K,KAAK4K,eAAiB,KACtB5K,KAAK6K,WAAiB,EACtB7K,KAAK8K,YAAiB,EACtB9K,KAAK+K,aAAiB,KACtB/K,KAAKgL,YAAiB,EACtBhL,KAAKiL,YAAiB,EAEtBjL,KAAKkL,QAAqBlL,KAAKmL,WAAW5I,GAC1CvC,KAAK0F,SAAqB5E,EAC1Bd,KAAKoL,mBAAqBpL,KAAK0F,SAASvE,cAAcmG,IACtDtH,KAAKqL,gBAAqB,iBAAkB1K,SAAS8C,iBAA8C,EAA3B6H,UAAUC,eAClFvL,KAAKwL,cAAqBvJ,QAAQyG,OAAO+C,cAAgB/C,OAAOgD,gBAEhE1L,KAAK2L,gDAePC,KAAA,WACO5L,KAAK8K,YACR9K,KAAK6L,OAAOnC,MAIhBoC,gBAAA,YAGOnL,SAASoL,QACX7L,EAAEF,KAAK0F,UAAUf,GAAG,aAAsD,WAAvCzE,EAAEF,KAAK0F,UAAUnE,IAAI,eACzDvB,KAAK4L,UAITI,KAAA,WACOhM,KAAK8K,YACR9K,KAAK6L,OAAOnC,MAIhBJ,MAAA,SAAMjF,GACCA,IACHrE,KAAK6K,WAAY,GAGf7K,KAAK0F,SAASvE,cAAcmG,MAC9BlH,EAAKE,qBAAqBN,KAAK0F,UAC/B1F,KAAKiM,OAAM,IAGbC,cAAclM,KAAK2K,WACnB3K,KAAK2K,UAAY,QAGnBsB,MAAA,SAAM5H,GACCA,IACHrE,KAAK6K,WAAY,GAGf7K,KAAK2K,YACPuB,cAAclM,KAAK2K,WACnB3K,KAAK2K,UAAY,MAGf3K,KAAKkL,QAAQ/B,WAAanJ,KAAK6K,YACjC7K,KAAK2K,UAAYwB,aACdxL,SAASyL,gBAAkBpM,KAAK8L,gBAAkB9L,KAAK4L,MAAMS,KAAKrM,MACnEA,KAAKkL,QAAQ/B,cAKnBmD,GAAA,SAAGC,GAAO,IAAAxM,EAAAC,KACRA,KAAK4K,eAAiB5K,KAAK0F,SAASvE,cAAcmG,IAElD,IAAMkF,EAAcxM,KAAKyM,cAAczM,KAAK4K,gBAE5C,KAAI2B,EAAQvM,KAAK0K,OAAO1B,OAAS,GAAKuD,EAAQ,GAI9C,GAAIvM,KAAK8K,WACP5K,EAAEF,KAAK0F,UAAUvF,IAAIiF,EAAMwE,KAAM,WAAA,OAAM7J,EAAKuM,GAAGC,SADjD,CAKA,GAAIC,IAAgBD,EAGlB,OAFAvM,KAAKsJ,aACLtJ,KAAKiM,QAIP,IAAMS,EAAoBF,EAARD,EACd7C,EACAA,EAEJ1J,KAAK6L,OAAOa,EAAW1M,KAAK0K,OAAO6B,QAGrCtG,QAAA,WACE/F,EAAEF,KAAK0F,UAAUiH,IAAIzH,GACrBhF,EAAEgG,WAAWlG,KAAK0F,SAAUT,GAE5BjF,KAAK0K,OAAqB,KAC1B1K,KAAKkL,QAAqB,KAC1BlL,KAAK0F,SAAqB,KAC1B1F,KAAK2K,UAAqB,KAC1B3K,KAAK6K,UAAqB,KAC1B7K,KAAK8K,WAAqB,KAC1B9K,KAAK4K,eAAqB,KAC1B5K,KAAKoL,mBAAqB,QAK5BD,WAAA,SAAW5I,GAMT,OALAA,EAAMqK,EAAA,GACD1D,EADC,GAED3G,GAELnC,EAAKiC,gBAAgB2C,EAAMzC,EAAQkH,GAC5BlH,KAGTsK,aAAA,WACE,IAAMC,EAAYrM,KAAKsM,IAAI/M,KAAKiL,aAEhC,KAAI6B,GAxNuB,IAwN3B,CAIA,IAAMJ,EAAYI,EAAY9M,KAAKiL,aAEnCjL,KAAKiL,YAAc,GAGfyB,GACF1M,KAAKgM,OAIHU,EAAY,GACd1M,KAAK4L,WAITD,mBAAA,WAAqB,IAAAqB,EAAAhN,KACfA,KAAKkL,QAAQ9B,UACflJ,EAAEF,KAAK0F,UACJwB,GAAG9B,EAAMyE,QAAS,SAACxF,GAAD,OAAW2I,EAAKC,SAAS5I,KAGrB,UAAvBrE,KAAKkL,QAAQ5B,OACfpJ,EAAEF,KAAK0F,UACJwB,GAAG9B,EAAM0E,WAAY,SAACzF,GAAD,OAAW2I,EAAK1D,MAAMjF,KAC3C6C,GAAG9B,EAAM2E,WAAY,SAAC1F,GAAD,OAAW2I,EAAKf,MAAM5H,KAG5CrE,KAAKkL,QAAQ1B,OACfxJ,KAAKkN,6BAITA,wBAAA,WAA0B,IAAAC,EAAAnN,KACxB,GAAKA,KAAKqL,gBAAV,CAIA,IAAM+B,EAAQ,SAAC/I,GACT8I,EAAK3B,eAAiBlB,GAAYjG,EAAMgJ,cAAcC,YAAY/J,eACpE4J,EAAKnC,YAAc3G,EAAMgJ,cAAcE,QAC7BJ,EAAK3B,gBACf2B,EAAKnC,YAAc3G,EAAMgJ,cAAcG,QAAQ,GAAGD,UAahDE,EAAM,SAACpJ,GACP8I,EAAK3B,eAAiBlB,GAAYjG,EAAMgJ,cAAcC,YAAY/J,iBACpE4J,EAAKlC,YAAc5G,EAAMgJ,cAAcE,QAAUJ,EAAKnC,aAGxDmC,EAAKN,eACsB,UAAvBM,EAAKjC,QAAQ5B,QASf6D,EAAK7D,QACD6D,EAAKpC,cACP2C,aAAaP,EAAKpC,cAEpBoC,EAAKpC,aAAe1K,WAAW,SAACgE,GAAD,OAAW8I,EAAKlB,MAAM5H,IAtS9B,IAsS+D8I,EAAKjC,QAAQ/B,YAIvGjJ,EAAEF,KAAK0F,SAASmD,iBAAiBvB,KAAoBJ,GAAG9B,EAAMiF,WAAY,SAACsD,GAAD,OAAOA,EAAE1G,mBAC/EjH,KAAKwL,eACPtL,EAAEF,KAAK0F,UAAUwB,GAAG9B,EAAM+E,YAAa,SAAC9F,GAAD,OAAW+I,EAAM/I,KACxDnE,EAAEF,KAAK0F,UAAUwB,GAAG9B,EAAMgF,UAAW,SAAC/F,GAAD,OAAWoJ,EAAIpJ,KAEpDrE,KAAK0F,SAASsC,UAAUiB,IAAIzD,MAE5BtF,EAAEF,KAAK0F,UAAUwB,GAAG9B,EAAM4E,WAAY,SAAC3F,GAAD,OAAW+I,EAAM/I,KACvDnE,EAAEF,KAAK0F,UAAUwB,GAAG9B,EAAM6E,UAAW,SAAC5F,GAAD,OAxC1B,SAACA,GAERA,EAAMgJ,cAAcG,SAAgD,EAArCnJ,EAAMgJ,cAAcG,QAAQxE,OAC7DmE,EAAKlC,YAAc,EAEnBkC,EAAKlC,YAAc5G,EAAMgJ,cAAcG,QAAQ,GAAGD,QAAUJ,EAAKnC,YAmCnB4C,CAAKvJ,KACrDnE,EAAEF,KAAK0F,UAAUwB,GAAG9B,EAAM8E,SAAU,SAAC7F,GAAD,OAAWoJ,EAAIpJ,UAIvD4I,SAAA,SAAS5I,GACP,IAAI,kBAAkBhB,KAAKgB,EAAMK,OAAOyD,SAIxC,OAAQ9D,EAAMwJ,OACZ,KA/TyB,GAgUvBxJ,EAAM4C,iBACNjH,KAAKgM,OACL,MACF,KAlUyB,GAmUvB3H,EAAM4C,iBACNjH,KAAK4L,WAMXa,cAAA,SAAc3L,GAIZ,OAHAd,KAAK0K,OAAS5J,GAAWA,EAAQ+C,WAC7B,GAAG+E,MAAM/F,KAAK/B,EAAQ+C,WAAWgF,iBAAiBvB,KAClD,GACGtH,KAAK0K,OAAOoD,QAAQhN,MAG7BiN,oBAAA,SAAoBrB,EAAWxE,GAC7B,IAAM8F,EAAkBtB,IAAchD,EAChCuE,EAAkBvB,IAAchD,EAChC8C,EAAkBxM,KAAKyM,cAAcvE,GACrCgG,EAAkBlO,KAAK0K,OAAO1B,OAAS,EAI7C,IAHwBiF,GAAmC,IAAhBzB,GACnBwB,GAAmBxB,IAAgB0B,KAErClO,KAAKkL,QAAQ3B,KACjC,OAAOrB,EAGT,IACMiG,GAAa3B,GADDE,IAAchD,GAAkB,EAAI,IACZ1J,KAAK0K,OAAO1B,OAEtD,OAAsB,GAAfmF,EACHnO,KAAK0K,OAAO1K,KAAK0K,OAAO1B,OAAS,GAAKhJ,KAAK0K,OAAOyD,MAGxDC,mBAAA,SAAmBC,EAAeC,GAChC,IAAMC,EAAcvO,KAAKyM,cAAc4B,GACjCG,EAAYxO,KAAKyM,cAAczM,KAAK0F,SAASvE,cAAcmG,KAC3DmH,EAAavO,EAAEkF,MAAMA,EAAMuE,MAAO,CACtC0E,cAAAA,EACA3B,UAAW4B,EACXI,KAAMF,EACNlC,GAAIiC,IAKN,OAFArO,EAAEF,KAAK0F,UAAU3D,QAAQ0M,GAElBA,KAGTE,2BAAA,SAA2B7N,GACzB,GAAId,KAAKoL,mBAAoB,CAC3B,IAAMwD,EAAa,GAAGhG,MAAM/F,KAAK7C,KAAKoL,mBAAmBvC,iBAAiBvB,KAC1EpH,EAAE0O,GACCtI,YAAYd,GAEf,IAAMqJ,EAAgB7O,KAAKoL,mBAAmB0D,SAC5C9O,KAAKyM,cAAc3L,IAGjB+N,GACF3O,EAAE2O,GAAeE,SAASvJ,OAKhCqG,OAAA,SAAOa,EAAW5L,GAAS,IAQrBkO,EACAC,EACAX,EAVqBY,EAAAlP,KACnBkI,EAAgBlI,KAAK0F,SAASvE,cAAcmG,IAC5C6H,EAAqBnP,KAAKyM,cAAcvE,GACxCkH,EAAgBtO,GAAWoH,GAC/BlI,KAAK+N,oBAAoBrB,EAAWxE,GAChCmH,EAAmBrP,KAAKyM,cAAc2C,GACtCE,EAAYrN,QAAQjC,KAAK2K,WAgB/B,GAPE2D,EAHE5B,IAAchD,GAChBsF,EAAuBxJ,EACvByJ,EAAiBzJ,EACIkE,IAErBsF,EAAuBxJ,EACvByJ,EAAiBzJ,EACIkE,GAGnB0F,GAAelP,EAAEkP,GAAa7I,SAASf,GACzCxF,KAAK8K,YAAa,OAKpB,IADmB9K,KAAKoO,mBAAmBgB,EAAad,GACzCvI,sBAIVmC,GAAkBkH,EAAvB,CAKApP,KAAK8K,YAAa,EAEdwE,GACFtP,KAAKsJ,QAGPtJ,KAAK2O,2BAA2BS,GAEhC,IAAMG,EAAYrP,EAAEkF,MAAMA,EAAMwE,KAAM,CACpCyE,cAAee,EACf1C,UAAW4B,EACXI,KAAMS,EACN7C,GAAI+C,IAGN,GAAInP,EAAEF,KAAK0F,UAAUa,SAASf,GAAkB,CAC9CtF,EAAEkP,GAAaL,SAASE,GAExB7O,EAAKyB,OAAOuN,GAEZlP,EAAEgI,GAAe6G,SAASC,GAC1B9O,EAAEkP,GAAaL,SAASC,GAExB,IAAMQ,EAAsBC,SAASL,EAAYpO,aAAa,iBAAkB,IAC5EwO,GACFxP,KAAKkL,QAAQwE,gBAAkB1P,KAAKkL,QAAQwE,iBAAmB1P,KAAKkL,QAAQ/B,SAC5EnJ,KAAKkL,QAAQ/B,SAAWqG,GAExBxP,KAAKkL,QAAQ/B,SAAWnJ,KAAKkL,QAAQwE,iBAAmB1P,KAAKkL,QAAQ/B,SAGvE,IAAM7H,EAAqBlB,EAAKiB,iCAAiC6G,GAEjEhI,EAAEgI,GACC/H,IAAIC,EAAKR,eAAgB,WACxBM,EAAEkP,GACC9I,YAAe0I,EADlB,IAC0CC,GACvCF,SAASvJ,GAEZtF,EAAEgI,GAAe5B,YAAed,EAAhC,IAAoDyJ,EAApD,IAAsED,GAEtEE,EAAKpE,YAAa,EAElBzK,WAAW,WAAA,OAAMH,EAAEgP,EAAKxJ,UAAU3D,QAAQwN,IAAY,KAEvDnL,qBAAqB9C,QAExBpB,EAAEgI,GAAe5B,YAAYd,GAC7BtF,EAAEkP,GAAaL,SAASvJ,GAExBxF,KAAK8K,YAAa,EAClB5K,EAAEF,KAAK0F,UAAU3D,QAAQwN,GAGvBD,GACFtP,KAAKiM,YAMFtF,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,GACpBiG,EAAO0B,EAAA,GACN1D,EADM,GAENhJ,EAAEF,MAAM8G,QAGS,iBAAXvE,IACT2I,EAAO0B,EAAA,GACF1B,EADE,GAEF3I,IAIP,IAAMoN,EAA2B,iBAAXpN,EAAsBA,EAAS2I,EAAQ7B,MAO7D,GALKvC,IACHA,EAAO,IAAI2D,EAASzK,KAAMkL,GAC1BhL,EAAEF,MAAM8G,KAAK7B,EAAU6B,IAGH,iBAAXvE,EACTuE,EAAKwF,GAAG/J,QACH,GAAsB,iBAAXoN,EAAqB,CACrC,GAA4B,oBAAjB7I,EAAK6I,GACd,MAAM,IAAI3L,UAAJ,oBAAkC2L,EAAlC,KAER7I,EAAK6I,UACIzE,EAAQ/B,UAAY+B,EAAQ0E,OACrC9I,EAAKwC,QACLxC,EAAKmF,cAKJ4D,qBAAP,SAA4BxL,GAC1B,IAAMtD,EAAWX,EAAKS,uBAAuBb,MAE7C,GAAKe,EAAL,CAIA,IAAM2D,EAASxE,EAAEa,GAAU,GAE3B,GAAK2D,GAAWxE,EAAEwE,GAAQ6B,SAASf,GAAnC,CAIA,IAAMjD,EAAMqK,EAAA,GACP1M,EAAEwE,GAAQoC,OADH,GAEP5G,EAAEF,MAAM8G,QAEPgJ,EAAa9P,KAAKgB,aAAa,iBAEjC8O,IACFvN,EAAO4G,UAAW,GAGpBsB,EAAS9D,iBAAiB9D,KAAK3C,EAAEwE,GAASnC,GAEtCuN,GACF5P,EAAEwE,GAAQoC,KAAK7B,GAAUqH,GAAGwD,GAG9BzL,EAAM4C,4DAjcN,MA3G2B,wCA+G3B,OAAOiC,WAucXhJ,EAAES,UACCuG,GAAG9B,EAAMG,eAAgB+B,GAAqBmD,GAASoF,sBAE1D3P,EAAEwI,QAAQxB,GAAG9B,EAAMoC,cAAe,WAEhC,IADA,IAAMuI,EAAY,GAAGnH,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KACjDwB,EAAI,EAAGC,EAAMgH,EAAU/G,OAAQF,EAAIC,EAAKD,IAAK,CACpD,IAAMkH,EAAY9P,EAAE6P,EAAUjH,IAC9B2B,GAAS9D,iBAAiB9D,KAAKmN,EAAWA,EAAUlJ,WAUxD5G,EAAEgE,GAAGc,GAAQyF,GAAS9D,iBACtBzG,EAAEgE,GAAGc,GAAMmC,YAAcsD,GACzBvK,EAAEgE,GAAGc,GAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,GAAQG,EACNsF,GAAS9D,kBC5kBlB,IAAM3B,GAAsB,WAEtBC,GAAsB,cACtBC,GAAS,IAAiBD,GAE1BE,GAAsBjF,EAAEgE,GAAGc,IAE3BkE,GAAU,CACdxB,QAAS,EACTvB,OAAS,IAGLsD,GAAc,CAClB/B,OAAS,UACTvB,OAAS,oBAGLf,GAAQ,CACZ6K,KAAI,OAAoB/K,GACxBgL,MAAK,QAAoBhL,GACzBiL,KAAI,OAAoBjL,GACxBkL,OAAM,SAAoBlL,GAC1BK,eAAc,QAAWL,GAlBC,aAqBtBM,GACS,OADTA,GAES,WAFTA,GAGS,aAHTA,GAIS,YAGT6K,GACK,QADLA,GAEK,SAGL/I,GACU,qBADVA,GAEU,2BASVgJ,cACJ,SAAAA,EAAYxP,EAASyB,GACnBvC,KAAKuQ,kBAAmB,EACxBvQ,KAAK0F,SAAmB5E,EACxBd,KAAKkL,QAAmBlL,KAAKmL,WAAW5I,GACxCvC,KAAKwQ,cAAmB,GAAG5H,MAAM/F,KAAKlC,SAASkI,iBAC7C,mCAAmC/H,EAAQ2P,GAA3C,6CAC0C3P,EAAQ2P,GADlD,OAKF,IADA,IAAMC,EAAa,GAAG9H,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KAClDwB,EAAI,EAAGC,EAAM2H,EAAW1H,OAAQF,EAAIC,EAAKD,IAAK,CACrD,IAAM6H,EAAOD,EAAW5H,GAClB/H,EAAWX,EAAKS,uBAAuB8P,GACvCC,EAAgB,GAAGhI,MAAM/F,KAAKlC,SAASkI,iBAAiB9H,IAC3D8P,OAAO,SAACC,GAAD,OAAeA,IAAchQ,IAEtB,OAAbC,GAA4C,EAAvB6P,EAAc5H,SACrChJ,KAAK+Q,UAAYhQ,EACjBf,KAAKwQ,cAAcQ,KAAKL,IAI5B3Q,KAAKiR,QAAUjR,KAAKkL,QAAQ/E,OAASnG,KAAKkR,aAAe,KAEpDlR,KAAKkL,QAAQ/E,QAChBnG,KAAKmR,0BAA0BnR,KAAK0F,SAAU1F,KAAKwQ,eAGjDxQ,KAAKkL,QAAQxD,QACf1H,KAAK0H,oCAgBTA,OAAA,WACMxH,EAAEF,KAAK0F,UAAUa,SAASf,IAC5BxF,KAAKoR,OAELpR,KAAKqR,UAITA,KAAA,WAAO,IAMDC,EACAC,EAPCxR,EAAAC,KACL,IAAIA,KAAKuQ,mBACPrQ,EAAEF,KAAK0F,UAAUa,SAASf,MAOxBxF,KAAKiR,SAUgB,KATvBK,EAAU,GAAG1I,MAAM/F,KAAK7C,KAAKiR,QAAQpI,iBAAiBvB,KACnDuJ,OAAO,SAACF,GACP,MAAmC,iBAAxB5Q,EAAKmL,QAAQ/E,OACfwK,EAAK3P,aAAa,iBAAmBjB,EAAKmL,QAAQ/E,OAGpDwK,EAAK3I,UAAUC,SAASzC,OAGvBwD,SACVsI,EAAU,QAIVA,IACFC,EAAcrR,EAAEoR,GAASE,IAAIxR,KAAK+Q,WAAWjK,KAAK7B,MAC/BsM,EAAYhB,mBAFjC,CAOA,IAAMkB,EAAavR,EAAEkF,MAAMA,GAAM6K,MAEjC,GADA/P,EAAEF,KAAK0F,UAAU3D,QAAQ0P,IACrBA,EAAW1L,qBAAf,CAIIuL,IACFhB,EAAS3J,iBAAiB9D,KAAK3C,EAAEoR,GAASE,IAAIxR,KAAK+Q,WAAY,QAC1DQ,GACHrR,EAAEoR,GAASxK,KAAK7B,GAAU,OAI9B,IAAMyM,EAAY1R,KAAK2R,gBAEvBzR,EAAEF,KAAK0F,UACJY,YAAYd,IACZuJ,SAASvJ,IAEZxF,KAAK0F,SAASkM,MAAMF,GAAa,EAE7B1R,KAAKwQ,cAAcxH,QACrB9I,EAAEF,KAAKwQ,eACJlK,YAAYd,IACZqM,KAAK,iBAAiB,GAG3B7R,KAAK8R,kBAAiB,GAEtB,IAcMC,EAAU,UADaL,EAAU,GAAGnO,cAAgBmO,EAAU9I,MAAM,IAEpEtH,EAAqBlB,EAAKiB,iCAAiCrB,KAAK0F,UAEtExF,EAAEF,KAAK0F,UACJvF,IAAIC,EAAKR,eAlBK,WACfM,EAAEH,EAAK2F,UACJY,YAAYd,IACZuJ,SAASvJ,IACTuJ,SAASvJ,IAEZzF,EAAK2F,SAASkM,MAAMF,GAAa,GAEjC3R,EAAK+R,kBAAiB,GAEtB5R,EAAEH,EAAK2F,UAAU3D,QAAQqD,GAAM8K,SAS9B9L,qBAAqB9C,GAExBtB,KAAK0F,SAASkM,MAAMF,GAAgB1R,KAAK0F,SAASqM,GAAlD,UAGFX,KAAA,WAAO,IAAApE,EAAAhN,KACL,IAAIA,KAAKuQ,kBACNrQ,EAAEF,KAAK0F,UAAUa,SAASf,IAD7B,CAKA,IAAMiM,EAAavR,EAAEkF,MAAMA,GAAM+K,MAEjC,GADAjQ,EAAEF,KAAK0F,UAAU3D,QAAQ0P,IACrBA,EAAW1L,qBAAf,CAIA,IAAM2L,EAAY1R,KAAK2R,gBAEvB3R,KAAK0F,SAASkM,MAAMF,GAAgB1R,KAAK0F,SAASsM,wBAAwBN,GAA1E,KAEAtR,EAAKyB,OAAO7B,KAAK0F,UAEjBxF,EAAEF,KAAK0F,UACJqJ,SAASvJ,IACTc,YAAYd,IACZc,YAAYd,IAEf,IAAMyM,EAAqBjS,KAAKwQ,cAAcxH,OAC9C,GAAyB,EAArBiJ,EACF,IAAK,IAAInJ,EAAI,EAAGA,EAAImJ,EAAoBnJ,IAAK,CAC3C,IAAM/G,EAAU/B,KAAKwQ,cAAc1H,GAC7B/H,EAAWX,EAAKS,uBAAuBkB,GAE7C,GAAiB,OAAbhB,EACYb,EAAE,GAAG0I,MAAM/F,KAAKlC,SAASkI,iBAAiB9H,KAC7CwF,SAASf,KAClBtF,EAAE6B,GAASgN,SAASvJ,IACjBqM,KAAK,iBAAiB,GAMjC7R,KAAK8R,kBAAiB,GAUtB9R,KAAK0F,SAASkM,MAAMF,GAAa,GACjC,IAAMpQ,EAAqBlB,EAAKiB,iCAAiCrB,KAAK0F,UAEtExF,EAAEF,KAAK0F,UACJvF,IAAIC,EAAKR,eAZK,WACfoN,EAAK8E,kBAAiB,GACtB5R,EAAE8M,EAAKtH,UACJY,YAAYd,IACZuJ,SAASvJ,IACTzD,QAAQqD,GAAMgL,UAQhBhM,qBAAqB9C,QAG1BwQ,iBAAA,SAAiBI,GACflS,KAAKuQ,iBAAmB2B,KAG1BjM,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAE5BjF,KAAKkL,QAAmB,KACxBlL,KAAKiR,QAAmB,KACxBjR,KAAK0F,SAAmB,KACxB1F,KAAKwQ,cAAmB,KACxBxQ,KAAKuQ,iBAAmB,QAK1BpF,WAAA,SAAW5I,GAOT,OANAA,EAAMqK,EAAA,GACD1D,GADC,GAED3G,IAEEmF,OAASzF,QAAQM,EAAOmF,QAC/BtH,EAAKiC,gBAAgB2C,GAAMzC,EAAQkH,IAC5BlH,KAGToP,cAAA,WAEE,OADiBzR,EAAEF,KAAK0F,UAAUa,SAAS8J,IACzBA,GAAkBA,MAGtCa,WAAA,WAAa,IACP/K,EADOgH,EAAAnN,KAGPI,EAAK8B,UAAUlC,KAAKkL,QAAQ/E,SAC9BA,EAASnG,KAAKkL,QAAQ/E,OAGoB,oBAA/BnG,KAAKkL,QAAQ/E,OAAOhC,SAC7BgC,EAASnG,KAAKkL,QAAQ/E,OAAO,KAG/BA,EAASxF,SAASQ,cAAcnB,KAAKkL,QAAQ/E,QAG/C,IAAMpF,EAAQ,yCAC6Bf,KAAKkL,QAAQ/E,OAD1C,KAGR2I,EAAW,GAAGlG,MAAM/F,KAAKsD,EAAO0C,iBAAiB9H,IAQvD,OAPAb,EAAE4O,GAAUlI,KAAK,SAACkC,EAAGhI,GACnBqM,EAAKgE,0BACHb,EAAS6B,sBAAsBrR,GAC/B,CAACA,MAIEqF,KAGTgL,0BAAA,SAA0BrQ,EAASsR,GACjC,IAAMC,EAASnS,EAAEY,GAASyF,SAASf,IAE/B4M,EAAapJ,QACf9I,EAAEkS,GACC7J,YAAY/C,IAAsB6M,GAClCR,KAAK,gBAAiBQ,MAMtBF,sBAAP,SAA6BrR,GAC3B,IAAMC,EAAWX,EAAKS,uBAAuBC,GAC7C,OAAOC,EAAWJ,SAASQ,cAAcJ,GAAY,QAGhD4F,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAM0L,EAAUpS,EAAEF,MACd8G,EAAYwL,EAAMxL,KAAK7B,IACrBiG,EAAO0B,EAAA,GACR1D,GADQ,GAERoJ,EAAMxL,OAFE,GAGU,iBAAXvE,GAAuBA,EAASA,EAAS,IAYrD,IATKuE,GAAQoE,EAAQxD,QAAU,YAAYrE,KAAKd,KAC9C2I,EAAQxD,QAAS,GAGdZ,IACHA,EAAO,IAAIwJ,EAAStQ,KAAMkL,GAC1BoH,EAAMxL,KAAK7B,GAAU6B,IAGD,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,iDAjQT,MApFwB,wCAwFxB,OAAO2G,YAyQXhJ,EAAES,UAAUuG,GAAG9B,GAAMG,eAAgB+B,GAAsB,SAAUjD,GAE/B,MAAhCA,EAAMkO,cAAcpK,SACtB9D,EAAM4C,iBAGR,IAAMuL,EAAWtS,EAAEF,MACbe,EAAWX,EAAKS,uBAAuBb,MACvCyS,EAAY,GAAG7J,MAAM/F,KAAKlC,SAASkI,iBAAiB9H,IAE1Db,EAAEuS,GAAW7L,KAAK,WAChB,IAAM8L,EAAUxS,EAAEF,MAEZuC,EADUmQ,EAAQ5L,KAAK7B,IACN,SAAWuN,EAAS1L,OAC3CwJ,GAAS3J,iBAAiB9D,KAAK6P,EAASnQ,OAU5CrC,EAAEgE,GAAGc,IAAQsL,GAAS3J,iBACtBzG,EAAEgE,GAAGc,IAAMmC,YAAcmJ,GACzBpQ,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACNmL,GAAS3J,kBCtXlB,IAAIgM,GAA8B,oBAAXjK,QAA8C,oBAAb/H,UAAiD,oBAAd2K,UAEvFsH,GAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvC/J,EAAI,EAAGA,EAAI+J,EAAsB7J,OAAQF,GAAK,EACrD,GAAI6J,IAAsE,GAAzDrH,UAAUwH,UAAUhF,QAAQ+E,EAAsB/J,IACjE,OAAO,EAGX,OAAO,EAPa,GAqCtB,IAWIiK,GAXqBJ,IAAajK,OAAOsK,QA3B7C,SAA2B9O,GACzB,IAAIjE,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTyI,OAAOsK,QAAQC,UAAUC,KAAK,WAC5BjT,GAAS,EACTiE,SAKN,SAAsBA,GACpB,IAAIiP,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZ9S,WAAW,WACT8S,GAAY,EACZjP,KACC0O,OAyBT,SAASQ,GAAWC,GAElB,OAAOA,GAA8D,sBADvD,GACoBpQ,SAASJ,KAAKwQ,GAUlD,SAASC,GAAyBxS,EAAS2B,GACzC,GAAyB,IAArB3B,EAAQsB,SACV,MAAO,GAGT,IACIb,EADST,EAAQyS,cAAcC,YAClBC,iBAAiB3S,EAAS,MAC3C,OAAO2B,EAAWlB,EAAIkB,GAAYlB,EAUpC,SAASmS,GAAc5S,GACrB,MAAyB,SAArBA,EAAQ6S,SACH7S,EAEFA,EAAQ+C,YAAc/C,EAAQ8S,KAUvC,SAASC,GAAgB/S,GAEvB,IAAKA,EACH,OAAOH,SAASmT,KAGlB,OAAQhT,EAAQ6S,UACd,IAAK,OACL,IAAK,OACH,OAAO7S,EAAQyS,cAAcO,KAC/B,IAAK,YACH,OAAOhT,EAAQgT,KAKnB,IAAIC,EAAwBT,GAAyBxS,GACjDkT,EAAWD,EAAsBC,SACjCC,EAAYF,EAAsBE,UAClCC,EAAYH,EAAsBG,UAEtC,MAAI,wBAAwB7Q,KAAK2Q,EAAWE,EAAYD,GAC/CnT,EAGF+S,GAAgBH,GAAc5S,IAUvC,SAASqT,GAAiBC,GACxB,OAAOA,GAAaA,EAAUC,cAAgBD,EAAUC,cAAgBD,EAG1E,IAAIE,GAAS3B,OAAgBjK,OAAO6L,uBAAwB5T,SAAS6T,cACjEC,GAAS9B,IAAa,UAAUtP,KAAKiI,UAAUwH,WASnD,SAAS4B,GAAKzQ,GACZ,OAAgB,KAAZA,EACKqQ,GAEO,KAAZrQ,EACKwQ,GAEFH,IAAUG,GAUnB,SAASE,GAAgB7T,GACvB,IAAKA,EACH,OAAOH,SAAS8C,gBAQlB,IALA,IAAImR,EAAiBF,GAAK,IAAM/T,SAASmT,KAAO,KAG5Ce,EAAe/T,EAAQ+T,cAAgB,KAEpCA,IAAiBD,GAAkB9T,EAAQgU,oBAChDD,GAAgB/T,EAAUA,EAAQgU,oBAAoBD,aAGxD,IAAIlB,EAAWkB,GAAgBA,EAAalB,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAAS7F,QAAQ+G,EAAalB,WAA2E,WAAvDL,GAAyBuB,EAAc,YACjGF,GAAgBE,GAGlBA,EATE/T,EAAUA,EAAQyS,cAAc9P,gBAAkB9C,SAAS8C,gBA4BtE,SAASsR,GAAQC,GACf,OAAwB,OAApBA,EAAKnR,WACAkR,GAAQC,EAAKnR,YAGfmR,EAWT,SAASC,GAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAAS9S,UAAa+S,GAAaA,EAAS/S,UAC5D,OAAOzB,SAAS8C,gBAIlB,IAAI2R,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1DnI,EAAQgI,EAAQF,EAAWC,EAC3B1H,EAAM2H,EAAQD,EAAWD,EAGzBM,EAAQ7U,SAAS8U,cACrBD,EAAME,SAAStI,EAAO,GACtBoI,EAAMG,OAAOlI,EAAK,GAClB,IAAImI,EAA0BJ,EAAMI,wBAIpC,GAAIV,IAAaU,GAA2BT,IAAaS,GAA2BxI,EAAMnF,SAASwF,GACjG,OApDJ,SAA2B3M,GACzB,IAAI6S,EAAW7S,EAAQ6S,SAEvB,MAAiB,SAAbA,IAGgB,SAAbA,GAAuBgB,GAAgB7T,EAAQ+U,qBAAuB/U,GA8CvEgV,CAAkBF,GACbA,EAGFjB,GAAgBiB,GAIzB,IAAIG,EAAehB,GAAQG,GAC3B,OAAIa,EAAanC,KACRqB,GAAuBc,EAAanC,KAAMuB,GAE1CF,GAAuBC,EAAUH,GAAQI,GAAUvB,MAY9D,SAASoC,GAAUlV,EAAnB,GACE,IAEImV,EAAqB,SAFK,EAAnBlR,UAAUiE,aAA+BkN,IADtD,EAAA,EACiF,OAE9C,YAAc,aAC3CvC,EAAW7S,EAAQ6S,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAM3B,OAAO7S,EAAQmV,GALb,IAAIE,EAAOrV,EAAQyS,cAAc9P,gBAEjC,OADuB3C,EAAQyS,cAAc6C,kBAAoBD,GACzCF,GAsC5B,SAASI,GAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,QAAVD,EAAmB,QAAU,SAEzC,OAAO9U,WAAW4U,EAAO,SAAWE,EAAQ,SAAU,IAAM9U,WAAW4U,EAAO,SAAWG,EAAQ,SAAU,IAG7G,SAASC,GAAQH,EAAMzC,EAAMqC,EAAMQ,GACjC,OAAOlW,KAAKmW,IAAI9C,EAAK,SAAWyC,GAAOzC,EAAK,SAAWyC,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAO7B,GAAK,IAAMjF,SAAS0G,EAAK,SAAWI,IAAS9G,SAASkH,EAAc,UAAqB,WAATJ,EAAoB,MAAQ,UAAY9G,SAASkH,EAAc,UAAqB,WAATJ,EAAoB,SAAW,WAAa,GAG5U,SAASM,GAAelW,GACtB,IAAImT,EAAOnT,EAASmT,KAChBqC,EAAOxV,EAAS8C,gBAChBkT,EAAgBjC,GAAK,KAAOjB,iBAAiB0C,GAEjD,MAAO,CACLW,OAAQJ,GAAQ,SAAU5C,EAAMqC,EAAMQ,GACtCI,MAAOL,GAAQ,QAAS5C,EAAMqC,EAAMQ,IAIxC,IAMIK,GAWK,SAAU7P,EAAa8P,EAAYC,GAGxC,OAFID,GAAYE,GAAiBhQ,EAAYxE,UAAWsU,GACpDC,GAAaC,GAAiBhQ,EAAa+P,GACxC/P,GAbT,SAASgQ,GAAiBzS,EAAQ0S,GAChC,IAAK,IAAItO,EAAI,EAAGA,EAAIsO,EAAMpO,OAAQF,IAAK,CACrC,IAAIuO,EAAaD,EAAMtO,GACvBuO,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD9U,OAAO+U,eAAe/S,EAAQ2S,EAAWK,IAAKL,IAe/B,SAAjBI,GAA2BtV,EAAKuV,EAAK3U,GAYvC,OAXI2U,KAAOvV,EACTO,OAAO+U,eAAetV,EAAKuV,EAAK,CAC9B3U,MAAOA,EACPuU,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZrV,EAAIuV,GAAO3U,EAGNZ,EAZT,IAeIwV,GAAWjV,OAAOkV,QAAU,SAAUlT,GACxC,IAAK,IAAIoE,EAAI,EAAGA,EAAI/D,UAAUiE,OAAQF,IAAK,CACzC,IAAI+O,EAAS9S,UAAU+D,GAEvB,IAAK,IAAI4O,KAAOG,EACVnV,OAAOC,UAAUC,eAAeC,KAAKgV,EAAQH,KAC/ChT,EAAOgT,GAAOG,EAAOH,IAK3B,OAAOhT,GAUT,SAASoT,GAAcC,GACrB,OAAOJ,GAAS,GAAII,EAAS,CAC3BC,MAAOD,EAAQE,KAAOF,EAAQhB,MAC9BmB,OAAQH,EAAQI,IAAMJ,EAAQjB,SAWlC,SAAS9E,GAAsBlR,GAC7B,IAAIsX,EAAO,GAKX,IACE,GAAI1D,GAAK,IAAK,CACZ0D,EAAOtX,EAAQkR,wBACf,IAAIqG,EAAYrC,GAAUlV,EAAS,OAC/BwX,EAAatC,GAAUlV,EAAS,QACpCsX,EAAKD,KAAOE,EACZD,EAAKH,MAAQK,EACbF,EAAKF,QAAUG,EACfD,EAAKJ,OAASM,OAEdF,EAAOtX,EAAQkR,wBAEjB,MAAOrE,IAET,IAAI4K,EAAS,CACXN,KAAMG,EAAKH,KACXE,IAAKC,EAAKD,IACVpB,MAAOqB,EAAKJ,MAAQI,EAAKH,KACzBnB,OAAQsB,EAAKF,OAASE,EAAKD,KAIzBK,EAA6B,SAArB1X,EAAQ6S,SAAsBkD,GAAe/V,EAAQyS,eAAiB,GAC9EwD,EAAQyB,EAAMzB,OAASjW,EAAQ2X,aAAeF,EAAOxB,MACrDD,EAAS0B,EAAM1B,QAAUhW,EAAQ4X,cAAgBH,EAAOzB,OAExD6B,EAAiB7X,EAAQ8X,YAAc7B,EACvC8B,EAAgB/X,EAAQgB,aAAegV,EAI3C,GAAI6B,GAAkBE,EAAe,CACnC,IAAIvC,EAAShD,GAAyBxS,GACtC6X,GAAkBtC,GAAeC,EAAQ,KACzCuC,GAAiBxC,GAAeC,EAAQ,KAExCiC,EAAOxB,OAAS4B,EAChBJ,EAAOzB,QAAU+B,EAGnB,OAAOf,GAAcS,GAGvB,SAASO,GAAqChK,EAAU3I,EAAxD,GACE,IAAI4S,EAAmC,EAAnBhU,UAAUiE,aAA+BkN,IAD/D,GAAA,EAGMzB,EAASC,GAAK,IACdsE,EAA6B,SAApB7S,EAAOwN,SAChBsF,EAAejH,GAAsBlD,GACrCoK,EAAalH,GAAsB7L,GACnCgT,EAAetF,GAAgB/E,GAE/BwH,EAAShD,GAAyBnN,GAClCiT,EAAiB1X,WAAW4U,EAAO8C,eAAgB,IACnDC,EAAkB3X,WAAW4U,EAAO+C,gBAAiB,IAGrDN,GAAiBC,IACnBE,EAAWf,IAAM1X,KAAKmW,IAAIsC,EAAWf,IAAK,GAC1Ce,EAAWjB,KAAOxX,KAAKmW,IAAIsC,EAAWjB,KAAM,IAE9C,IAAIF,EAAUD,GAAc,CAC1BK,IAAKc,EAAad,IAAMe,EAAWf,IAAMiB,EACzCnB,KAAMgB,EAAahB,KAAOiB,EAAWjB,KAAOoB,EAC5CtC,MAAOkC,EAAalC,MACpBD,OAAQmC,EAAanC,SASvB,GAPAiB,EAAQuB,UAAY,EACpBvB,EAAQwB,WAAa,GAMhB9E,GAAUuE,EAAQ,CACrB,IAAIM,EAAY5X,WAAW4U,EAAOgD,UAAW,IACzCC,EAAa7X,WAAW4U,EAAOiD,WAAY,IAE/CxB,EAAQI,KAAOiB,EAAiBE,EAChCvB,EAAQG,QAAUkB,EAAiBE,EACnCvB,EAAQE,MAAQoB,EAAkBE,EAClCxB,EAAQC,OAASqB,EAAkBE,EAGnCxB,EAAQuB,UAAYA,EACpBvB,EAAQwB,WAAaA,EAOvB,OAJI9E,IAAWsE,EAAgB5S,EAAO8B,SAASkR,GAAgBhT,IAAWgT,GAA0C,SAA1BA,EAAaxF,YACrGoE,EA1NJ,SAAuBK,EAAMtX,EAA7B,GACE,IAAI0Y,EAA8B,EAAnBzU,UAAUiE,aAA+BkN,IAD1D,GAAA,EAGMmC,EAAYrC,GAAUlV,EAAS,OAC/BwX,EAAatC,GAAUlV,EAAS,QAChC2Y,EAAWD,GAAY,EAAI,EAK/B,OAJApB,EAAKD,KAAOE,EAAYoB,EACxBrB,EAAKF,QAAUG,EAAYoB,EAC3BrB,EAAKH,MAAQK,EAAamB,EAC1BrB,EAAKJ,OAASM,EAAamB,EACpBrB,EAgNKsB,CAAc3B,EAAS5R,IAG5B4R,EAuDT,SAAS4B,GAA6B7Y,GAEpC,IAAKA,IAAYA,EAAQ8Y,eAAiBlF,KACxC,OAAO/T,SAAS8C,gBAGlB,IADA,IAAIoW,EAAK/Y,EAAQ8Y,cACVC,GAAoD,SAA9CvG,GAAyBuG,EAAI,cACxCA,EAAKA,EAAGD,cAEV,OAAOC,GAAMlZ,SAAS8C,gBAcxB,SAASqW,GAAcC,EAAQ3F,EAAW4F,EAASC,EAAnD,GACE,IAAIlB,EAAmC,EAAnBhU,UAAUiE,aAA+BkN,IAD/D,GAAA,EAKMgE,EAAa,CAAE/B,IAAK,EAAGF,KAAM,GAC7BpD,EAAekE,EAAgBY,GAA6BI,GAAU9E,GAAuB8E,EAAQ5F,GAAiBC,IAG1H,GAA0B,aAAtB6F,EACFC,EArFJ,SAAuDpZ,EAAvD,GACE,IAAIqZ,EAAmC,EAAnBpV,UAAUiE,aAA+BkN,IAD/D,GAAA,EAGMC,EAAOrV,EAAQyS,cAAc9P,gBAC7B2W,EAAiBtB,GAAqChY,EAASqV,GAC/DY,EAAQtW,KAAKmW,IAAIT,EAAKsC,YAAa/P,OAAO2R,YAAc,GACxDvD,EAASrW,KAAKmW,IAAIT,EAAKuC,aAAchQ,OAAO4R,aAAe,GAE3DjC,EAAa8B,EAAkC,EAAlBnE,GAAUG,GACvCmC,EAAc6B,EAA0C,EAA1BnE,GAAUG,EAAM,QASlD,OAAO2B,GAPM,CACXK,IAAKE,EAAY+B,EAAejC,IAAMiC,EAAed,UACrDrB,KAAMK,EAAa8B,EAAenC,KAAOmC,EAAeb,WACxDxC,MAAOA,EACPD,OAAQA,IAsEKyD,CAA8C1F,EAAckE,OACpE,CAEL,IAAIyB,OAAiB,EACK,iBAAtBP,EAE8B,UADhCO,EAAiB3G,GAAgBH,GAAcU,KAC5BT,WACjB6G,EAAiBT,EAAOxG,cAAc9P,iBAGxC+W,EAD+B,WAAtBP,EACQF,EAAOxG,cAAc9P,gBAErBwW,EAGnB,IAAIlC,EAAUe,GAAqC0B,EAAgB3F,EAAckE,GAGjF,GAAgC,SAA5ByB,EAAe7G,UA1EvB,SAAS8G,EAAQ3Z,GACf,IAAI6S,EAAW7S,EAAQ6S,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDL,GAAyBxS,EAAS,YACpC,OAAO,EAET,IAAI+C,EAAa6P,GAAc5S,GAC/B,QAAK+C,GAGE4W,EAAQ5W,GA8D8B4W,CAAQ5F,GAWjDqF,EAAanC,MAXmD,CAChE,IAAI2C,EAAkB7D,GAAekD,EAAOxG,eACxCuD,EAAS4D,EAAgB5D,OACzBC,EAAQ2D,EAAgB3D,MAE5BmD,EAAW/B,KAAOJ,EAAQI,IAAMJ,EAAQuB,UACxCY,EAAWhC,OAASpB,EAASiB,EAAQI,IACrC+B,EAAWjC,MAAQF,EAAQE,KAAOF,EAAQwB,WAC1CW,EAAWlC,MAAQjB,EAAQgB,EAAQE,MASvC,IAAI0C,EAAqC,iBADzCX,EAAUA,GAAW,GAOrB,OALAE,EAAWjC,MAAQ0C,EAAkBX,EAAUA,EAAQ/B,MAAQ,EAC/DiC,EAAW/B,KAAOwC,EAAkBX,EAAUA,EAAQ7B,KAAO,EAC7D+B,EAAWlC,OAAS2C,EAAkBX,EAAUA,EAAQhC,OAAS,EACjEkC,EAAWhC,QAAUyC,EAAkBX,EAAUA,EAAQ9B,QAAU,EAE5DgC,EAmBT,SAASU,GAAqBC,EAAWC,EAASf,EAAQ3F,EAAW6F,EAArE,GACE,IAAID,EAA6B,EAAnBjV,UAAUiE,aAA+BkN,IADzD,EAAA,EACoF,EAElF,IAAmC,IAA/B2E,EAAU/M,QAAQ,QACpB,OAAO+M,EAGT,IAAIX,EAAaJ,GAAcC,EAAQ3F,EAAW4F,EAASC,GAEvDc,EAAQ,CACV5C,IAAK,CACHpB,MAAOmD,EAAWnD,MAClBD,OAAQgE,EAAQ3C,IAAM+B,EAAW/B,KAEnCH,MAAO,CACLjB,MAAOmD,EAAWlC,MAAQ8C,EAAQ9C,MAClClB,OAAQoD,EAAWpD,QAErBoB,OAAQ,CACNnB,MAAOmD,EAAWnD,MAClBD,OAAQoD,EAAWhC,OAAS4C,EAAQ5C,QAEtCD,KAAM,CACJlB,MAAO+D,EAAQ7C,KAAOiC,EAAWjC,KACjCnB,OAAQoD,EAAWpD,SAInBkE,EAActY,OAAOuY,KAAKF,GAAOG,IAAI,SAAUxD,GACjD,OAAOC,GAAS,CACdD,IAAKA,GACJqD,EAAMrD,GAAM,CACbyD,KAhDN,SAAiBC,GAIf,OAHYA,EAAKrE,MACJqE,EAAKtE,OA8CRuE,CAAQN,EAAMrD,QAErB4D,KAAK,SAAUC,EAAGC,GACnB,OAAOA,EAAEL,KAAOI,EAAEJ,OAGhBM,EAAgBT,EAAYnK,OAAO,SAAU6K,GAC/C,IAAI3E,EAAQ2E,EAAM3E,MACdD,EAAS4E,EAAM5E,OACnB,OAAOC,GAASgD,EAAOtB,aAAe3B,GAAUiD,EAAOrB,eAGrDiD,EAA2C,EAAvBF,EAAczS,OAAayS,EAAc,GAAG/D,IAAMsD,EAAY,GAAGtD,IAErFkE,EAAYf,EAAUjZ,MAAM,KAAK,GAErC,OAAO+Z,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASC,GAAoBC,EAAO/B,EAAQ3F,EAA5C,GACE,IAAI2E,EAAmC,EAAnBhU,UAAUiE,aAA+BkN,IAD/D,EAAA,EAC0F,KAGxF,OAAO4C,GAAqC1E,EADnB2E,EAAgBY,GAA6BI,GAAU9E,GAAuB8E,EAAQ5F,GAAiBC,IACrD2E,GAU7E,SAASgD,GAAcjb,GACrB,IACIwV,EADSxV,EAAQyS,cAAcC,YACfC,iBAAiB3S,GACjCkb,EAAIta,WAAW4U,EAAOgD,WAAa,GAAK5X,WAAW4U,EAAO2F,cAAgB,GAC1EC,EAAIxa,WAAW4U,EAAOiD,YAAc,GAAK7X,WAAW4U,EAAO6F,aAAe,GAK9E,MAJa,CACXpF,MAAOjW,EAAQ8X,YAAcsD,EAC7BpF,OAAQhW,EAAQgB,aAAeka,GAYnC,SAASI,GAAqBvB,GAC5B,IAAIwB,EAAO,CAAEpE,KAAM,QAASD,MAAO,OAAQE,OAAQ,MAAOC,IAAK,UAC/D,OAAO0C,EAAUyB,QAAQ,yBAA0B,SAAUC,GAC3D,OAAOF,EAAKE,KAchB,SAASC,GAAiBzC,EAAQ0C,EAAkB5B,GAClDA,EAAYA,EAAUjZ,MAAM,KAAK,GAGjC,IAAI8a,EAAaX,GAAchC,GAG3B4C,EAAgB,CAClB5F,MAAO2F,EAAW3F,MAClBD,OAAQ4F,EAAW5F,QAIjB8F,GAAoD,IAA1C,CAAC,QAAS,QAAQ9O,QAAQ+M,GACpCgC,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZjC,IAAciC,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBL,GAAqBU,IAGhEH,EAYT,SAASM,GAAKC,EAAKC,GAEjB,OAAIC,MAAMza,UAAUsa,KACXC,EAAID,KAAKE,GAIXD,EAAIrM,OAAOsM,GAAO,GAqC3B,SAASE,GAAaC,EAAWxW,EAAMyW,GAoBrC,YAnB8BrH,IAATqH,EAAqBD,EAAYA,EAAU1U,MAAM,EA1BxE,SAAmBsU,EAAKM,EAAMza,GAE5B,GAAIqa,MAAMza,UAAU8a,UAClB,OAAOP,EAAIO,UAAU,SAAUC,GAC7B,OAAOA,EAAIF,KAAUza,IAKzB,IAAIG,EAAQ+Z,GAAKC,EAAK,SAAU/a,GAC9B,OAAOA,EAAIqb,KAAUza,IAEvB,OAAOma,EAAIpP,QAAQ5K,GAcsDua,CAAUH,EAAW,OAAQC,KAEvFI,QAAQ,SAAUlE,GAC3BA,EAAmB,UAErBmE,QAAQC,KAAK,yDAEf,IAAI3Z,EAAKuV,EAAmB,UAAKA,EAASvV,GACtCuV,EAASqE,SAAW1K,GAAWlP,KAIjC4C,EAAKiR,QAAQgC,OAASjC,GAAchR,EAAKiR,QAAQgC,QACjDjT,EAAKiR,QAAQ3D,UAAY0D,GAAchR,EAAKiR,QAAQ3D,WAEpDtN,EAAO5C,EAAG4C,EAAM2S,MAIb3S,EA8DT,SAASiX,GAAkBT,EAAWU,GACpC,OAAOV,EAAUW,KAAK,SAAU7C,GAC9B,IAAI8C,EAAO9C,EAAK8C,KAEhB,OADc9C,EAAK0C,SACDI,IAASF,IAW/B,SAASG,GAAyB1b,GAIhC,IAHA,IAAI2b,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAY5b,EAAS6b,OAAO,GAAG/a,cAAgBd,EAASmG,MAAM,GAEzDE,EAAI,EAAGA,EAAIsV,EAASpV,OAAQF,IAAK,CACxC,IAAItI,EAAS4d,EAAStV,GAClByV,EAAU/d,EAAS,GAAKA,EAAS6d,EAAY5b,EACjD,GAA4C,oBAAjC9B,SAASmT,KAAKlC,MAAM2M,GAC7B,OAAOA,EAGX,OAAO,KAsCT,SAASC,GAAU1d,GACjB,IAAIyS,EAAgBzS,EAAQyS,cAC5B,OAAOA,EAAgBA,EAAcC,YAAc9K,OAoBrD,SAAS+V,GAAoBrK,EAAWsK,EAAS5C,EAAO6C,GAEtD7C,EAAM6C,YAAcA,EACpBH,GAAUpK,GAAWwK,iBAAiB,SAAU9C,EAAM6C,YAAa,CAAEE,SAAS,IAG9E,IAAIC,EAAgBjL,GAAgBO,GAKpC,OA5BF,SAAS2K,EAAsB5F,EAAc9U,EAAO2a,EAAUC,GAC5D,IAAIC,EAAmC,SAA1B/F,EAAaxF,SACtBjP,EAASwa,EAAS/F,EAAa5F,cAAcC,YAAc2F,EAC/DzU,EAAOka,iBAAiBva,EAAO2a,EAAU,CAAEH,SAAS,IAE/CK,GACHH,EAAsBlL,GAAgBnP,EAAOb,YAAaQ,EAAO2a,EAAUC,GAE7EA,EAAcjO,KAAKtM,GAgBnBqa,CAAsBD,EAAe,SAAUhD,EAAM6C,YAAa7C,EAAMmD,eACxEnD,EAAMgD,cAAgBA,EACtBhD,EAAMqD,eAAgB,EAEfrD,EA6CT,SAASsD,KACHpf,KAAK8b,MAAMqD,gBACbE,qBAAqBrf,KAAKsf,gBAC1Btf,KAAK8b,MA3BT,SAA8B1H,EAAW0H,GAcvC,OAZA0C,GAAUpK,GAAWmL,oBAAoB,SAAUzD,EAAM6C,aAGzD7C,EAAMmD,cAActB,QAAQ,SAAUjZ,GACpCA,EAAO6a,oBAAoB,SAAUzD,EAAM6C,eAI7C7C,EAAM6C,YAAc,KACpB7C,EAAMmD,cAAgB,GACtBnD,EAAMgD,cAAgB,KACtBhD,EAAMqD,eAAgB,EACfrD,EAaQ0D,CAAqBxf,KAAKoU,UAAWpU,KAAK8b,QAW3D,SAAS2D,GAAUC,GACjB,MAAa,KAANA,IAAaC,MAAMje,WAAWge,KAAOE,SAASF,GAWvD,SAASG,GAAU/e,EAASwV,GAC1B5T,OAAOuY,KAAK3E,GAAQqH,QAAQ,SAAUH,GACpC,IAAIsC,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQhS,QAAQ0P,IAAgBiC,GAAUnJ,EAAOkH,MACjGsC,EAAO,MAEThf,EAAQ8Q,MAAM4L,GAAQlH,EAAOkH,GAAQsC,IAkGzC,SAASC,GAAkBjZ,EAAMkZ,GAOjB,SAAVC,EAA2BC,GAC7B,OAAOA,EAPT,IAAIC,EAAgBrZ,EAAKiR,QACrBgC,EAASoG,EAAcpG,OACvB3F,EAAY+L,EAAc/L,UAC1BgM,EAAQ3f,KAAK2f,MACbC,EAAQ5f,KAAK4f,MAMbC,EAAiBF,EAAMhM,EAAU2C,OACjCwJ,EAAcH,EAAMrG,EAAOhD,OAE3ByJ,GAA4D,IAA/C,CAAC,OAAQ,SAAS1S,QAAQhH,EAAK+T,WAC5C4F,GAA+C,IAAjC3Z,EAAK+T,UAAU/M,QAAQ,KAIrC4S,EAAuBV,EAAwBQ,GAAcC,GAH3CH,EAAiB,GAAMC,EAAc,EAGuCH,EAAQC,EAAjEJ,EACrCU,EAAqBX,EAAwBI,EAAVH,EAEvC,MAAO,CACLhI,KAAMyI,EANWJ,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBE,GAAeT,EAAcjG,EAAO9B,KAAO,EAAI8B,EAAO9B,MACjGE,IAAKwI,EAAkB5G,EAAO5B,KAC9BD,OAAQyI,EAAkB5G,EAAO7B,QACjCF,MAAO0I,EAAoB3G,EAAO/B,QAItC,IAAI4I,GAAYjO,IAAa,WAAWtP,KAAKiI,UAAUwH,WA8GvD,SAAS+N,GAAmBvD,EAAWwD,EAAgBC,GACrD,IAAIC,EAAa/D,GAAKK,EAAW,SAAUlC,GAEzC,OADWA,EAAK8C,OACA4C,IAGdG,IAAeD,GAAc1D,EAAUW,KAAK,SAAUxE,GACxD,OAAOA,EAASyE,OAAS6C,GAAiBtH,EAASqE,SAAWrE,EAASrE,MAAQ4L,EAAW5L,QAG5F,IAAK6L,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCnD,QAAQC,KAAKsD,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAOD,EAoIT,IAAIG,GAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,GAAkBD,GAAWxY,MAAM,GAYvC,SAAS0Y,GAAUzG,EAAnB,GACE,IAAI0G,EAA6B,EAAnBxc,UAAUiE,aAA+BkN,IADzD,GAAA,EAGM3J,EAAQ8U,GAAgBvT,QAAQ+M,GAChCqC,EAAMmE,GAAgBzY,MAAM2D,EAAQ,GAAGiV,OAAOH,GAAgBzY,MAAM,EAAG2D,IAC3E,OAAOgV,EAAUrE,EAAIuE,UAAYvE,EAGnC,IAAIwE,GACI,OADJA,GAES,YAFTA,GAGgB,mBAiMpB,SAASC,GAAYC,EAAQjF,EAAeF,EAAkBoF,GAC5D,IAAI9J,EAAU,CAAC,EAAG,GAKd+J,GAA0D,IAA9C,CAAC,QAAS,QAAQhU,QAAQ+T,GAItCE,EAAYH,EAAOhgB,MAAM,WAAWsZ,IAAI,SAAU8G,GACpD,OAAOA,EAAK9gB,SAKV+gB,EAAUF,EAAUjU,QAAQmP,GAAK8E,EAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKE,OAAO,WAGjBH,EAAUE,KAAiD,IAArCF,EAAUE,GAASnU,QAAQ,MACnD8P,QAAQC,KAAK,gFAKf,IAAIsE,EAAa,cACbC,GAAmB,IAAbH,EAAiB,CAACF,EAAUnZ,MAAM,EAAGqZ,GAAST,OAAO,CAACO,EAAUE,GAASrgB,MAAMugB,GAAY,KAAM,CAACJ,EAAUE,GAASrgB,MAAMugB,GAAY,IAAIX,OAAOO,EAAUnZ,MAAMqZ,EAAU,KAAO,CAACF,GAqC9L,OAlCAK,EAAMA,EAAIlH,IAAI,SAAUmH,EAAI9V,GAE1B,IAAIwQ,GAAyB,IAAVxQ,GAAeuV,EAAYA,GAAa,SAAW,QAClEQ,GAAoB,EACxB,OAAOD,EAGNE,OAAO,SAAUhH,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAEvS,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAK8E,QAAQ0N,IAC/CD,EAAEA,EAAEvS,OAAS,GAAKwS,EAClB8G,GAAoB,EACb/G,GACE+G,GACT/G,EAAEA,EAAEvS,OAAS,IAAMwS,EACnB8G,GAAoB,EACb/G,GAEAA,EAAEiG,OAAOhG,IAEjB,IAEFN,IAAI,SAAUsH,GACb,OAxGN,SAAiBA,EAAKzF,EAAaJ,EAAeF,GAEhD,IAAI7a,EAAQ4gB,EAAItf,MAAM,6BAClBH,GAASnB,EAAM,GACfke,EAAOle,EAAM,GAGjB,IAAKmB,EACH,OAAOyf,EAGT,GAA0B,IAAtB1C,EAAKhS,QAAQ,KAcV,MAAa,OAATgS,GAA0B,OAATA,EAYnB/c,GATM,OAAT+c,EACKrf,KAAKmW,IAAIjW,SAAS8C,gBAAgBiV,aAAchQ,OAAO4R,aAAe,GAEtE7Z,KAAKmW,IAAIjW,SAAS8C,gBAAgBgV,YAAa/P,OAAO2R,YAAc,IAE/D,IAAMtX,EArBpB,IAAIjC,OAAU,EACd,OAAQgf,GACN,IAAK,KACHhf,EAAU6b,EACV,MACF,IAAK,IACL,IAAK,KACL,QACE7b,EAAU2b,EAId,OADW3E,GAAchX,GACbic,GAAe,IAAMha,EAgFxB0f,CAAQD,EAAKzF,EAAaJ,EAAeF,QAKhDkB,QAAQ,SAAU0E,EAAI9V,GACxB8V,EAAG1E,QAAQ,SAAUqE,EAAMU,GACrBjD,GAAUuC,KACZjK,EAAQxL,IAAUyV,GAA2B,MAAnBK,EAAGK,EAAS,IAAc,EAAI,QAIvD3K,EA2OT,IAkWI4K,GAAW,CAKb9H,UAAW,SAMX+H,eAAe,EAMfzD,eAAe,EAOf0D,iBAAiB,EAQjBC,SAAU,aAUVC,SAAU,aAOVzF,UAnZc,CASd0F,MAAO,CAEL5N,MAAO,IAEP0I,SAAS,EAET5Z,GA9HJ,SAAe4C,GACb,IAAI+T,EAAY/T,EAAK+T,UACjBgH,EAAgBhH,EAAUjZ,MAAM,KAAK,GACrCqhB,EAAiBpI,EAAUjZ,MAAM,KAAK,GAG1C,GAAIqhB,EAAgB,CAClB,IAAI9C,EAAgBrZ,EAAKiR,QACrB3D,EAAY+L,EAAc/L,UAC1B2F,EAASoG,EAAcpG,OAEvByG,GAA2D,IAA9C,CAAC,SAAU,OAAO1S,QAAQ+T,GACvCqB,EAAO1C,EAAa,OAAS,MAC7BzD,EAAcyD,EAAa,QAAU,SAErC2C,EAAe,CACjB/V,MAAOqK,GAAe,GAAIyL,EAAM9O,EAAU8O,IAC1CzV,IAAKgK,GAAe,GAAIyL,EAAM9O,EAAU8O,GAAQ9O,EAAU2I,GAAehD,EAAOgD,KAGlFjW,EAAKiR,QAAQgC,OAASpC,GAAS,GAAIoC,EAAQoJ,EAAaF,IAG1D,OAAOnc,IAgJP8a,OAAQ,CAENxM,MAAO,IAEP0I,SAAS,EAET5Z,GA7RJ,SAAgB4C,EAAMsU,GACpB,IAAIwG,EAASxG,EAAKwG,OACd/G,EAAY/T,EAAK+T,UACjBsF,EAAgBrZ,EAAKiR,QACrBgC,EAASoG,EAAcpG,OACvB3F,EAAY+L,EAAc/L,UAE1ByN,EAAgBhH,EAAUjZ,MAAM,KAAK,GAErCmW,OAAU,EAsBd,OApBEA,EADE0H,IAAWmC,GACH,EAAEA,EAAQ,GAEVD,GAAYC,EAAQ7H,EAAQ3F,EAAWyN,GAG7B,SAAlBA,GACF9H,EAAO5B,KAAOJ,EAAQ,GACtBgC,EAAO9B,MAAQF,EAAQ,IACI,UAAlB8J,GACT9H,EAAO5B,KAAOJ,EAAQ,GACtBgC,EAAO9B,MAAQF,EAAQ,IACI,QAAlB8J,GACT9H,EAAO9B,MAAQF,EAAQ,GACvBgC,EAAO5B,KAAOJ,EAAQ,IACK,WAAlB8J,IACT9H,EAAO9B,MAAQF,EAAQ,GACvBgC,EAAO5B,KAAOJ,EAAQ,IAGxBjR,EAAKiT,OAASA,EACPjT,GAkQL8a,OAAQ,GAoBVwB,gBAAiB,CAEfhO,MAAO,IAEP0I,SAAS,EAET5Z,GAlRJ,SAAyB4C,EAAM4X,GAC7B,IAAIzE,EAAoByE,EAAQzE,mBAAqBtF,GAAgB7N,EAAKuc,SAAStJ,QAK/EjT,EAAKuc,SAASjP,YAAc6F,IAC9BA,EAAoBtF,GAAgBsF,IAMtC,IAAIqJ,EAAgBnF,GAAyB,aACzCoF,EAAezc,EAAKuc,SAAStJ,OAAOnI,MACpCuG,EAAMoL,EAAapL,IACnBF,EAAOsL,EAAatL,KACpBuL,EAAYD,EAAaD,GAE7BC,EAAapL,IAAM,GACnBoL,EAAatL,KAAO,GACpBsL,EAAaD,GAAiB,GAE9B,IAAIpJ,EAAaJ,GAAchT,EAAKuc,SAAStJ,OAAQjT,EAAKuc,SAASjP,UAAWsK,EAAQ1E,QAASC,EAAmBnT,EAAK8b,eAIvHW,EAAapL,IAAMA,EACnBoL,EAAatL,KAAOA,EACpBsL,EAAaD,GAAiBE,EAE9B9E,EAAQxE,WAAaA,EAErB,IAAI9E,EAAQsJ,EAAQ+E,SAChB1J,EAASjT,EAAKiR,QAAQgC,OAEtBoD,EAAQ,CACVuG,QAAS,SAAiB7I,GACxB,IAAI9X,EAAQgX,EAAOc,GAInB,OAHId,EAAOc,GAAaX,EAAWW,KAAe6D,EAAQiF,sBACxD5gB,EAAQtC,KAAKmW,IAAImD,EAAOc,GAAYX,EAAWW,KAE1CpD,GAAe,GAAIoD,EAAW9X,IAEvC6gB,UAAW,SAAmB/I,GAC5B,IAAIgC,EAAyB,UAAdhC,EAAwB,OAAS,MAC5C9X,EAAQgX,EAAO8C,GAInB,OAHI9C,EAAOc,GAAaX,EAAWW,KAAe6D,EAAQiF,sBACxD5gB,EAAQtC,KAAKojB,IAAI9J,EAAO8C,GAAW3C,EAAWW,IAA4B,UAAdA,EAAwBd,EAAOhD,MAAQgD,EAAOjD,UAErGW,GAAe,GAAIoF,EAAU9Z,KAWxC,OAPAqS,EAAMuI,QAAQ,SAAU9C,GACtB,IAAIqI,GAA+C,IAAxC,CAAC,OAAQ,OAAOpV,QAAQ+M,GAAoB,UAAY,YACnEd,EAASpC,GAAS,GAAIoC,EAAQoD,EAAM+F,GAAMrI,MAG5C/T,EAAKiR,QAAQgC,OAASA,EAEfjT,GA2NL2c,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnCzJ,QAAS,EAMTC,kBAAmB,gBAYrB6J,aAAc,CAEZ1O,MAAO,IAEP0I,SAAS,EAET5Z,GAlgBJ,SAAsB4C,GACpB,IAAIqZ,EAAgBrZ,EAAKiR,QACrBgC,EAASoG,EAAcpG,OACvB3F,EAAY+L,EAAc/L,UAE1ByG,EAAY/T,EAAK+T,UAAUjZ,MAAM,KAAK,GACtCye,EAAQ5f,KAAK4f,MACbG,GAAuD,IAA1C,CAAC,MAAO,UAAU1S,QAAQ+M,GACvCqI,EAAO1C,EAAa,QAAU,SAC9BuD,EAASvD,EAAa,OAAS,MAC/BzD,EAAcyD,EAAa,QAAU,SASzC,OAPIzG,EAAOmJ,GAAQ7C,EAAMjM,EAAU2P,MACjCjd,EAAKiR,QAAQgC,OAAOgK,GAAU1D,EAAMjM,EAAU2P,IAAWhK,EAAOgD,IAE9DhD,EAAOgK,GAAU1D,EAAMjM,EAAU8O,MACnCpc,EAAKiR,QAAQgC,OAAOgK,GAAU1D,EAAMjM,EAAU8O,KAGzCpc,IA4fPkd,MAAO,CAEL5O,MAAO,IAEP0I,SAAS,EAET5Z,GApxBJ,SAAe4C,EAAM4X,GACnB,IAAIuF,EAGJ,IAAKpD,GAAmB/Z,EAAKuc,SAAS/F,UAAW,QAAS,gBACxD,OAAOxW,EAGT,IAAIod,EAAexF,EAAQ5d,QAG3B,GAA4B,iBAAjBojB,GAIT,KAHAA,EAAepd,EAAKuc,SAAStJ,OAAO5Y,cAAc+iB,IAIhD,OAAOpd,OAKT,IAAKA,EAAKuc,SAAStJ,OAAO9R,SAASic,GAEjC,OADAtG,QAAQC,KAAK,iEACN/W,EAIX,IAAI+T,EAAY/T,EAAK+T,UAAUjZ,MAAM,KAAK,GACtCue,EAAgBrZ,EAAKiR,QACrBgC,EAASoG,EAAcpG,OACvB3F,EAAY+L,EAAc/L,UAE1BoM,GAAuD,IAA1C,CAAC,OAAQ,SAAS1S,QAAQ+M,GAEvC9R,EAAMyX,EAAa,SAAW,QAC9B2D,EAAkB3D,EAAa,MAAQ,OACvC0C,EAAOiB,EAAgBhhB,cACvBihB,EAAU5D,EAAa,OAAS,MAChCuD,EAASvD,EAAa,SAAW,QACjC6D,EAAmBtI,GAAcmI,GAAcnb,GAQ/CqL,EAAU2P,GAAUM,EAAmBtK,EAAOmJ,KAChDpc,EAAKiR,QAAQgC,OAAOmJ,IAASnJ,EAAOmJ,IAAS9O,EAAU2P,GAAUM,IAG/DjQ,EAAU8O,GAAQmB,EAAmBtK,EAAOgK,KAC9Cjd,EAAKiR,QAAQgC,OAAOmJ,IAAS9O,EAAU8O,GAAQmB,EAAmBtK,EAAOgK,IAE3Ejd,EAAKiR,QAAQgC,OAASjC,GAAchR,EAAKiR,QAAQgC,QAGjD,IAAIuK,EAASlQ,EAAU8O,GAAQ9O,EAAUrL,GAAO,EAAIsb,EAAmB,EAInE9iB,EAAM+R,GAAyBxM,EAAKuc,SAAStJ,QAC7CwK,EAAmB7iB,WAAWH,EAAI,SAAW4iB,GAAkB,IAC/DK,EAAmB9iB,WAAWH,EAAI,SAAW4iB,EAAkB,SAAU,IACzEM,EAAYH,EAASxd,EAAKiR,QAAQgC,OAAOmJ,GAAQqB,EAAmBC,EAQxE,OALAC,EAAYhkB,KAAKmW,IAAInW,KAAKojB,IAAI9J,EAAOhR,GAAOsb,EAAkBI,GAAY,GAE1E3d,EAAKod,aAAeA,EACpBpd,EAAKiR,QAAQiM,OAAmCvM,GAA1BwM,EAAsB,GAAwCf,EAAMziB,KAAK2f,MAAMqE,IAAahN,GAAewM,EAAqBG,EAAS,IAAKH,GAE7Jnd,GA8sBLhG,QAAS,aAcX4jB,KAAM,CAEJtP,MAAO,IAEP0I,SAAS,EAET5Z,GA5oBJ,SAAc4C,EAAM4X,GAElB,GAAIX,GAAkBjX,EAAKuc,SAAS/F,UAAW,SAC7C,OAAOxW,EAGT,GAAIA,EAAK6d,SAAW7d,EAAK+T,YAAc/T,EAAK8d,kBAE1C,OAAO9d,EAGT,IAAIoT,EAAaJ,GAAchT,EAAKuc,SAAStJ,OAAQjT,EAAKuc,SAASjP,UAAWsK,EAAQ1E,QAAS0E,EAAQzE,kBAAmBnT,EAAK8b,eAE3H/H,EAAY/T,EAAK+T,UAAUjZ,MAAM,KAAK,GACtCijB,EAAoBzI,GAAqBvB,GACzCe,EAAY9U,EAAK+T,UAAUjZ,MAAM,KAAK,IAAM,GAE5CkjB,EAAY,GAEhB,OAAQpG,EAAQqG,UACd,KAAKrD,GACHoD,EAAY,CAACjK,EAAWgK,GACxB,MACF,KAAKnD,GACHoD,EAAYxD,GAAUzG,GACtB,MACF,KAAK6G,GACHoD,EAAYxD,GAAUzG,GAAW,GACjC,MACF,QACEiK,EAAYpG,EAAQqG,SAyDxB,OAtDAD,EAAUnH,QAAQ,SAAUqH,EAAMzY,GAChC,GAAIsO,IAAcmK,GAAQF,EAAU9b,SAAWuD,EAAQ,EACrD,OAAOzF,EAGT+T,EAAY/T,EAAK+T,UAAUjZ,MAAM,KAAK,GACtCijB,EAAoBzI,GAAqBvB,GAEzC,IAAI8B,EAAgB7V,EAAKiR,QAAQgC,OAC7BkL,EAAane,EAAKiR,QAAQ3D,UAG1BiM,EAAQ5f,KAAK4f,MACb6E,EAA4B,SAAdrK,GAAwBwF,EAAM1D,EAAc3E,OAASqI,EAAM4E,EAAWhN,OAAuB,UAAd4C,GAAyBwF,EAAM1D,EAAc1E,MAAQoI,EAAM4E,EAAWjN,QAAwB,QAAd6C,GAAuBwF,EAAM1D,EAAczE,QAAUmI,EAAM4E,EAAW9M,MAAsB,WAAd0C,GAA0BwF,EAAM1D,EAAcxE,KAAOkI,EAAM4E,EAAW/M,QAEjUiN,EAAgB9E,EAAM1D,EAAc1E,MAAQoI,EAAMnG,EAAWjC,MAC7DmN,EAAiB/E,EAAM1D,EAAc3E,OAASqI,EAAMnG,EAAWlC,OAC/DqN,EAAehF,EAAM1D,EAAcxE,KAAOkI,EAAMnG,EAAW/B,KAC3DmN,EAAkBjF,EAAM1D,EAAczE,QAAUmI,EAAMnG,EAAWhC,QAEjEqN,EAAoC,SAAd1K,GAAwBsK,GAA+B,UAAdtK,GAAyBuK,GAAgC,QAAdvK,GAAuBwK,GAA8B,WAAdxK,GAA0ByK,EAG3K9E,GAAuD,IAA1C,CAAC,MAAO,UAAU1S,QAAQ+M,GAGvC2K,IAA0B9G,EAAQ+G,iBAAmBjF,GAA4B,UAAd5E,GAAyBuJ,GAAiB3E,GAA4B,QAAd5E,GAAuBwJ,IAAmB5E,GAA4B,UAAd5E,GAAyByJ,IAAiB7E,GAA4B,QAAd5E,GAAuB0J,GAGlQI,IAA8BhH,EAAQiH,0BAA4BnF,GAA4B,UAAd5E,GAAyBwJ,GAAkB5E,GAA4B,QAAd5E,GAAuBuJ,IAAkB3E,GAA4B,UAAd5E,GAAyB0J,IAAoB9E,GAA4B,QAAd5E,GAAuByJ,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExC9e,EAAK6d,SAAU,GAEXO,GAAeK,KACjB1K,EAAYiK,EAAUvY,EAAQ,IAG5BqZ,IACFhK,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,EAiJWiK,CAAqBjK,IAGnC9U,EAAK+T,UAAYA,GAAae,EAAY,IAAMA,EAAY,IAI5D9U,EAAKiR,QAAQgC,OAASpC,GAAS,GAAI7Q,EAAKiR,QAAQgC,OAAQyC,GAAiB1V,EAAKuc,SAAStJ,OAAQjT,EAAKiR,QAAQ3D,UAAWtN,EAAK+T,YAE5H/T,EAAOuW,GAAavW,EAAKuc,SAAS/F,UAAWxW,EAAM,WAGhDA,GA4jBLie,SAAU,OAKV/K,QAAS,EAOTC,kBAAmB,WAQnBwL,gBAAgB,EAQhBE,yBAAyB,GAU3BG,MAAO,CAEL1Q,MAAO,IAEP0I,SAAS,EAET5Z,GArQJ,SAAe4C,GACb,IAAI+T,EAAY/T,EAAK+T,UACjBgH,EAAgBhH,EAAUjZ,MAAM,KAAK,GACrCue,EAAgBrZ,EAAKiR,QACrBgC,EAASoG,EAAcpG,OACvB3F,EAAY+L,EAAc/L,UAE1BwI,GAAwD,IAA9C,CAAC,OAAQ,SAAS9O,QAAQ+T,GAEpCkE,GAA6D,IAA5C,CAAC,MAAO,QAAQjY,QAAQ+T,GAO7C,OALA9H,EAAO6C,EAAU,OAAS,OAASxI,EAAUyN,IAAkBkE,EAAiBhM,EAAO6C,EAAU,QAAU,UAAY,GAEvH9V,EAAK+T,UAAYuB,GAAqBvB,GACtC/T,EAAKiR,QAAQgC,OAASjC,GAAciC,GAE7BjT,IAkQPsK,KAAM,CAEJgE,MAAO,IAEP0I,SAAS,EAET5Z,GA9TJ,SAAc4C,GACZ,IAAK+Z,GAAmB/Z,EAAKuc,SAAS/F,UAAW,OAAQ,mBACvD,OAAOxW,EAGT,IAAIgU,EAAUhU,EAAKiR,QAAQ3D,UACvB4R,EAAQ/I,GAAKnW,EAAKuc,SAAS/F,UAAW,SAAU7D,GAClD,MAAyB,oBAAlBA,EAASyE,OACfhE,WAEH,GAAIY,EAAQ5C,OAAS8N,EAAM7N,KAAO2C,EAAQ7C,KAAO+N,EAAMhO,OAAS8C,EAAQ3C,IAAM6N,EAAM9N,QAAU4C,EAAQ9C,MAAQgO,EAAM/N,KAAM,CAExH,IAAkB,IAAdnR,EAAKsK,KACP,OAAOtK,EAGTA,EAAKsK,MAAO,EACZtK,EAAKmf,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdnf,EAAKsK,KACP,OAAOtK,EAGTA,EAAKsK,MAAO,EACZtK,EAAKmf,WAAW,wBAAyB,EAG3C,OAAOnf,IAoTPof,aAAc,CAEZ9Q,MAAO,IAEP0I,SAAS,EAET5Z,GAtgCJ,SAAsB4C,EAAM4X,GAC1B,IAAI1C,EAAI0C,EAAQ1C,EACZE,EAAIwC,EAAQxC,EACZnC,EAASjT,EAAKiR,QAAQgC,OAItBoM,EAA8BlJ,GAAKnW,EAAKuc,SAAS/F,UAAW,SAAU7D,GACxE,MAAyB,eAAlBA,EAASyE,OACfkI,qBACiClQ,IAAhCiQ,GACFvI,QAAQC,KAAK,iIAEf,IAAIuI,OAAkDlQ,IAAhCiQ,EAA4CA,EAA8BzH,EAAQ0H,gBAEpGvR,EAAeF,GAAgB7N,EAAKuc,SAAStJ,QAC7CsM,EAAmBrU,GAAsB6C,GAGzCyB,EAAS,CACXgQ,SAAUvM,EAAOuM,UAGfvO,EAAUgI,GAAkBjZ,EAAM4B,OAAO6d,iBAAmB,IAAM3F,IAElEpK,EAAc,WAANwF,EAAiB,MAAQ,SACjCvF,EAAc,UAANyF,EAAgB,OAAS,QAKjCsK,EAAmBrI,GAAyB,aAW5ClG,OAAO,EACPE,OAAM,EAqBV,GAhBIA,EAJU,UAAV3B,EAG4B,SAA1B3B,EAAalB,UACRkB,EAAa6D,aAAeX,EAAQG,QAEpCmO,EAAiBvP,OAASiB,EAAQG,OAGrCH,EAAQI,IAIZF,EAFU,SAAVxB,EAC4B,SAA1B5B,EAAalB,UACPkB,EAAa4D,YAAcV,EAAQC,OAEnCqO,EAAiBtP,MAAQgB,EAAQC,MAGpCD,EAAQE,KAEbmO,GAAmBI,EACrBlQ,EAAOkQ,GAAoB,eAAiBvO,EAAO,OAASE,EAAM,SAClE7B,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAOmQ,WAAa,gBACf,CAEL,IAAIC,EAAsB,UAAVlQ,GAAsB,EAAI,EACtCmQ,EAAuB,SAAVlQ,GAAqB,EAAI,EAC1CH,EAAOE,GAAS2B,EAAMuO,EACtBpQ,EAAOG,GAASwB,EAAO0O,EACvBrQ,EAAOmQ,WAAajQ,EAAQ,KAAOC,EAIrC,IAAIwP,EAAa,CACfW,cAAe9f,EAAK+T,WAQtB,OAJA/T,EAAKmf,WAAatO,GAAS,GAAIsO,EAAYnf,EAAKmf,YAChDnf,EAAKwP,OAASqB,GAAS,GAAIrB,EAAQxP,EAAKwP,QACxCxP,EAAK+f,YAAclP,GAAS,GAAI7Q,EAAKiR,QAAQiM,MAAOld,EAAK+f,aAElD/f,GAo7BLsf,iBAAiB,EAMjBpK,EAAG,SAMHE,EAAG,SAkBL4K,WAAY,CAEV1R,MAAO,IAEP0I,SAAS,EAET5Z,GAzpCJ,SAAoB4C,GAgBlB,OAXA+Y,GAAU/Y,EAAKuc,SAAStJ,OAAQjT,EAAKwP,QAzBvC,SAAuBxV,EAASmlB,GAC9BvjB,OAAOuY,KAAKgL,GAAYtI,QAAQ,SAAUH,IAE1B,IADFyI,EAAWzI,GAErB1c,EAAQwH,aAAakV,EAAMyI,EAAWzI,IAEtC1c,EAAQimB,gBAAgBvJ,KAuB5BwJ,CAAclgB,EAAKuc,SAAStJ,OAAQjT,EAAKmf,YAGrCnf,EAAKod,cAAgBxhB,OAAOuY,KAAKnU,EAAK+f,aAAa7d,QACrD6W,GAAU/Y,EAAKod,aAAcpd,EAAK+f,aAG7B/f,GA2oCLmgB,OA9nCJ,SAA0B7S,EAAW2F,EAAQ2E,EAASwI,EAAiBpL,GAErE,IAAIW,EAAmBZ,GAAoBC,EAAO/B,EAAQ3F,EAAWsK,EAAQkE,eAKzE/H,EAAYD,GAAqB8D,EAAQ7D,UAAW4B,EAAkB1C,EAAQ3F,EAAWsK,EAAQpB,UAAUoH,KAAKzK,kBAAmByE,EAAQpB,UAAUoH,KAAK1K,SAQ9J,OANAD,EAAOzR,aAAa,cAAeuS,GAInCgF,GAAU9F,EAAQ,CAAEuM,SAAU5H,EAAQkE,cAAgB,QAAU,aAEzDlE,GAsnCL0H,qBAAiBlQ,KAuGjBiR,IA+EFnQ,GAAYmQ,GAAQ,CAAC,CACnBzP,IAAK,SACL3U,MAAO,WACL,OA9lDN,WAEE,IAAI/C,KAAK8b,MAAMsL,YAAf,CAIA,IAAItgB,EAAO,CACTuc,SAAUrjB,KACVsW,OAAQ,GACRuQ,YAAa,GACbZ,WAAY,GACZtB,SAAS,EACT5M,QAAS,IAIXjR,EAAKiR,QAAQ3D,UAAYyH,GAAoB7b,KAAK8b,MAAO9b,KAAK+Z,OAAQ/Z,KAAKoU,UAAWpU,KAAK0e,QAAQkE,eAKnG9b,EAAK+T,UAAYD,GAAqB5a,KAAK0e,QAAQ7D,UAAW/T,EAAKiR,QAAQ3D,UAAWpU,KAAK+Z,OAAQ/Z,KAAKoU,UAAWpU,KAAK0e,QAAQpB,UAAUoH,KAAKzK,kBAAmBja,KAAK0e,QAAQpB,UAAUoH,KAAK1K,SAG9LlT,EAAK8d,kBAAoB9d,EAAK+T,UAE9B/T,EAAK8b,cAAgB5iB,KAAK0e,QAAQkE,cAGlC9b,EAAKiR,QAAQgC,OAASyC,GAAiBxc,KAAK+Z,OAAQjT,EAAKiR,QAAQ3D,UAAWtN,EAAK+T,WAEjF/T,EAAKiR,QAAQgC,OAAOuM,SAAWtmB,KAAK0e,QAAQkE,cAAgB,QAAU,WAGtE9b,EAAOuW,GAAard,KAAKsd,UAAWxW,GAI/B9G,KAAK8b,MAAMuL,UAIdrnB,KAAK0e,QAAQqE,SAASjc,IAHtB9G,KAAK8b,MAAMuL,WAAY,EACvBrnB,KAAK0e,QAAQoE,SAAShc,MAsjDNjE,KAAK7C,QAEpB,CACD0X,IAAK,UACL3U,MAAO,WACL,OA7gDN,WAsBE,OArBA/C,KAAK8b,MAAMsL,aAAc,EAGrBrJ,GAAkB/d,KAAKsd,UAAW,gBACpCtd,KAAK+Z,OAAOgN,gBAAgB,eAC5B/mB,KAAK+Z,OAAOnI,MAAM0U,SAAW,GAC7BtmB,KAAK+Z,OAAOnI,MAAMuG,IAAM,GACxBnY,KAAK+Z,OAAOnI,MAAMqG,KAAO,GACzBjY,KAAK+Z,OAAOnI,MAAMoG,MAAQ,GAC1BhY,KAAK+Z,OAAOnI,MAAMsG,OAAS,GAC3BlY,KAAK+Z,OAAOnI,MAAM6U,WAAa,GAC/BzmB,KAAK+Z,OAAOnI,MAAMuM,GAAyB,cAAgB,IAG7Dne,KAAKof,wBAIDpf,KAAK0e,QAAQmE,iBACf7iB,KAAK+Z,OAAOlW,WAAWyjB,YAAYtnB,KAAK+Z,QAEnC/Z,MAu/CY6C,KAAK7C,QAErB,CACD0X,IAAK,uBACL3U,MAAO,WACL,OA18CN,WACO/C,KAAK8b,MAAMqD,gBACdnf,KAAK8b,MAAQ2C,GAAoBze,KAAKoU,UAAWpU,KAAK0e,QAAS1e,KAAK8b,MAAO9b,KAAKsf,kBAw8ClDzc,KAAK7C,QAElC,CACD0X,IAAK,wBACL3U,MAAO,WACL,OAAOqc,GAAsBvc,KAAK7C,UA4B/BmnB,IApHP,SAASA,GAAO/S,EAAW2F,GACzB,IAAIha,EAAQC,KAER0e,EAA6B,EAAnB3Z,UAAUiE,aAA+BkN,IAAjBnR,UAAU,GAAmBA,UAAU,GAAK,IA3jEjE,SAAUse,EAAUlc,GACvC,KAAMkc,aAAoBlc,GACxB,MAAM,IAAInD,UAAU,qCA0jEpBujB,CAAevnB,KAAMmnB,IAErBnnB,KAAKsf,eAAiB,WACpB,OAAOkI,sBAAsBznB,EAAM0nB,SAIrCznB,KAAKynB,OAAS1U,GAAS/S,KAAKynB,OAAOpb,KAAKrM,OAGxCA,KAAK0e,QAAU/G,GAAS,GAAIwP,GAAOxE,SAAUjE,GAG7C1e,KAAK8b,MAAQ,CACXsL,aAAa,EACbC,WAAW,EACXpI,cAAe,IAIjBjf,KAAKoU,UAAYA,GAAaA,EAAUjQ,OAASiQ,EAAU,GAAKA,EAChEpU,KAAK+Z,OAASA,GAAUA,EAAO5V,OAAS4V,EAAO,GAAKA,EAGpD/Z,KAAK0e,QAAQpB,UAAY,GACzB5a,OAAOuY,KAAKtD,GAAS,GAAIwP,GAAOxE,SAASrF,UAAWoB,EAAQpB,YAAYK,QAAQ,SAAUO,GACxFne,EAAM2e,QAAQpB,UAAUY,GAAQvG,GAAS,GAAIwP,GAAOxE,SAASrF,UAAUY,IAAS,GAAIQ,EAAQpB,UAAYoB,EAAQpB,UAAUY,GAAQ,MAIpIle,KAAKsd,UAAY5a,OAAOuY,KAAKjb,KAAK0e,QAAQpB,WAAWpC,IAAI,SAAUgD,GACjE,OAAOvG,GAAS,CACduG,KAAMA,GACLne,EAAM2e,QAAQpB,UAAUY,MAG5B5C,KAAK,SAAUC,EAAGC,GACjB,OAAOD,EAAEnG,MAAQoG,EAAEpG,QAOrBpV,KAAKsd,UAAUK,QAAQ,SAAUuJ,GAC3BA,EAAgBpJ,SAAW1K,GAAW8T,EAAgBD,SACxDC,EAAgBD,OAAOlnB,EAAMqU,UAAWrU,EAAMga,OAAQha,EAAM2e,QAASwI,EAAiBnnB,EAAM+b,SAKhG9b,KAAKynB,SAEL,IAAItI,EAAgBnf,KAAK0e,QAAQS,cAC7BA,GAEFnf,KAAK0nB,uBAGP1nB,KAAK8b,MAAMqD,cAAgBA,EA6E/BgI,GAAOQ,OAA2B,oBAAXjf,OAAyBA,OAASkf,QAAQC,YACjEV,GAAO/F,WAAaA,GACpB+F,GAAOxE,SAAWA,GCniFlB,IAAM3d,GAA2B,WAE3BC,GAA2B,cAC3BC,GAAS,IAAsBD,GAC/BoC,GAA2B,YAC3BlC,GAA2BjF,EAAEgE,GAAGc,IAOhC8iB,GAA2B,IAAI1kB,OAAU2kB,YAEzC3iB,GAAQ,CACZ+K,KAAI,OAAsBjL,GAC1BkL,OAAM,SAAsBlL,GAC5B+K,KAAI,OAAsB/K,GAC1BgL,MAAK,QAAsBhL,GAC3B8iB,MAAK,QAAsB9iB,GAC3BK,eAAc,QAAaL,GAAYmC,GACvC4gB,iBAAgB,UAAa/iB,GAAYmC,GACzC6gB,eAAc,QAAahjB,GAAYmC,IAGnC7B,GACc,WADdA,GAEc,OAFdA,GAGc,SAHdA,GAIc,YAJdA,GAKc,WALdA,GAMc,sBANdA,GAQc,kBAGd8B,GACY,2BADZA,GAEY,iBAFZA,GAGY,iBAHZA,GAIY,cAJZA,GAKY,8DAGZ6gB,GACQ,YADRA,GAEQ,UAFRA,GAGQ,eAHRA,GAIQ,aAJRA,GAKQ,cALRA,GAOQ,aAIRjf,GAAU,CACd0Y,OAAe,EACf8C,MAAe,EACf0D,SAAe,eACfhU,UAAe,SACfiU,QAAe,UACfC,aAAe,MAGX7e,GAAc,CAClBmY,OAAe,2BACf8C,KAAe,UACf0D,SAAe,mBACfhU,UAAe,mBACfiU,QAAe,SACfC,aAAe,iBASXC,cACJ,SAAAA,EAAYznB,EAASyB,GACnBvC,KAAK0F,SAAY5E,EACjBd,KAAKwoB,QAAY,KACjBxoB,KAAKkL,QAAYlL,KAAKmL,WAAW5I,GACjCvC,KAAKyoB,MAAYzoB,KAAK0oB,kBACtB1oB,KAAK2oB,UAAY3oB,KAAK4oB,gBAEtB5oB,KAAK2L,gDAmBPjE,OAAA,WACE,IAAI1H,KAAK0F,SAASmjB,WAAY3oB,EAAEF,KAAK0F,UAAUa,SAASf,IAAxD,CAIA,IAAMsjB,EAAW5oB,EAAEF,KAAKyoB,OAAOliB,SAASf,IAExC+iB,EAASQ,cAELD,GAIJ9oB,KAAKqR,MAAK,OAGZA,KAAA,SAAK2X,GACH,QADsB,IAAnBA,IAAAA,GAAY,KACXhpB,KAAK0F,SAASmjB,UAAY3oB,EAAEF,KAAK0F,UAAUa,SAASf,KAAuBtF,EAAEF,KAAKyoB,OAAOliB,SAASf,KAAtG,CAIA,IAAM6I,EAAgB,CACpBA,cAAerO,KAAK0F,UAEhBujB,EAAY/oB,EAAEkF,MAAMA,GAAM6K,KAAM5B,GAChClI,EAASoiB,EAASW,sBAAsBlpB,KAAK0F,UAInD,GAFAxF,EAAEiG,GAAQpE,QAAQknB,IAEdA,EAAUljB,qBAAd,CAKA,IAAK/F,KAAK2oB,WAAaK,EAAW,CAKhC,GAAsB,oBAAX7B,GACT,MAAM,IAAInjB,UAAU,oEAGtB,IAAImlB,EAAmBnpB,KAAK0F,SAEG,WAA3B1F,KAAKkL,QAAQkJ,UACf+U,EAAmBhjB,EACV/F,EAAK8B,UAAUlC,KAAKkL,QAAQkJ,aACrC+U,EAAmBnpB,KAAKkL,QAAQkJ,UAGa,oBAAlCpU,KAAKkL,QAAQkJ,UAAUjQ,SAChCglB,EAAmBnpB,KAAKkL,QAAQkJ,UAAU,KAOhB,iBAA1BpU,KAAKkL,QAAQkd,UACfloB,EAAEiG,GAAQ4I,SAASvJ,IAErBxF,KAAKwoB,QAAU,IAAIrB,GAAOgC,EAAkBnpB,KAAKyoB,MAAOzoB,KAAKopB,oBAO3D,iBAAkBzoB,SAAS8C,iBACuB,IAAlDvD,EAAEiG,GAAQC,QAAQkB,IAAqB0B,QACzC9I,EAAES,SAASmT,MAAMhF,WAAW5H,GAAG,YAAa,KAAMhH,EAAEmpB,MAGtDrpB,KAAK0F,SAAS0C,QACdpI,KAAK0F,SAAS4C,aAAa,iBAAiB,GAE5CpI,EAAEF,KAAKyoB,OAAOlgB,YAAY/C,IAC1BtF,EAAEiG,GACCoC,YAAY/C,IACZzD,QAAQ7B,EAAEkF,MAAMA,GAAM8K,MAAO7B,SAGlC+C,KAAA,WACE,IAAIpR,KAAK0F,SAASmjB,WAAY3oB,EAAEF,KAAK0F,UAAUa,SAASf,KAAwBtF,EAAEF,KAAKyoB,OAAOliB,SAASf,IAAvG,CAIA,IAAM6I,EAAgB,CACpBA,cAAerO,KAAK0F,UAEhB4jB,EAAYppB,EAAEkF,MAAMA,GAAM+K,KAAM9B,GAChClI,EAASoiB,EAASW,sBAAsBlpB,KAAK0F,UAEnDxF,EAAEiG,GAAQpE,QAAQunB,GAEdA,EAAUvjB,uBAIV/F,KAAKwoB,SACPxoB,KAAKwoB,QAAQe,UAGfrpB,EAAEF,KAAKyoB,OAAOlgB,YAAY/C,IAC1BtF,EAAEiG,GACCoC,YAAY/C,IACZzD,QAAQ7B,EAAEkF,MAAMA,GAAMgL,OAAQ/B,SAGnCpI,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAC5B/E,EAAEF,KAAK0F,UAAUiH,IAAIzH,IACrBlF,KAAK0F,SAAW,MAChB1F,KAAKyoB,MAAQ,QACTzoB,KAAKwoB,UACPxoB,KAAKwoB,QAAQe,UACbvpB,KAAKwoB,QAAU,SAInBf,OAAA,WACEznB,KAAK2oB,UAAY3oB,KAAK4oB,gBACD,OAAjB5oB,KAAKwoB,SACPxoB,KAAKwoB,QAAQlJ,oBAMjB3T,mBAAA,WAAqB,IAAA5L,EAAAC,KACnBE,EAAEF,KAAK0F,UAAUwB,GAAG9B,GAAM4iB,MAAO,SAAC3jB,GAChCA,EAAM4C,iBACN5C,EAAMmlB,kBACNzpB,EAAK2H,cAITyD,WAAA,SAAW5I,GAaT,OAZAA,EAAMqK,EAAA,GACD5M,KAAKypB,YAAYvgB,QADhB,GAEDhJ,EAAEF,KAAK0F,UAAUoB,OAFhB,GAGDvE,GAGLnC,EAAKiC,gBACH2C,GACAzC,EACAvC,KAAKypB,YAAYhgB,aAGZlH,KAGTmmB,gBAAA,WACE,IAAK1oB,KAAKyoB,MAAO,CACf,IAAMtiB,EAASoiB,EAASW,sBAAsBlpB,KAAK0F,UAE/CS,IACFnG,KAAKyoB,MAAQtiB,EAAOhF,cAAcmG,KAGtC,OAAOtH,KAAKyoB,SAGdiB,cAAA,WACE,IAAMC,EAAkBzpB,EAAEF,KAAK0F,SAAS7B,YACpCgX,EAAYsN,GAehB,OAZIwB,EAAgBpjB,SAASf,KAC3BqV,EAAYsN,GACRjoB,EAAEF,KAAKyoB,OAAOliB,SAASf,MACzBqV,EAAYsN,KAELwB,EAAgBpjB,SAASf,IAClCqV,EAAYsN,GACHwB,EAAgBpjB,SAASf,IAClCqV,EAAYsN,GACHjoB,EAAEF,KAAKyoB,OAAOliB,SAASf,MAChCqV,EAAYsN,IAEPtN,KAGT+N,cAAA,WACE,OAAoD,EAA7C1oB,EAAEF,KAAK0F,UAAUU,QAAQ,WAAW4C,UAG7C4gB,WAAA,WAAa,IAAA5c,EAAAhN,KACL4hB,EAAS,GAef,MAbmC,mBAAxB5hB,KAAKkL,QAAQ0W,OACtBA,EAAO1d,GAAK,SAAC4C,GAMX,OALAA,EAAKiR,QAALnL,EAAA,GACK9F,EAAKiR,QADV,GAEK/K,EAAK9B,QAAQ0W,OAAO9a,EAAKiR,QAAS/K,EAAKtH,WAAa,IAGlDoB,GAGT8a,EAAOA,OAAS5hB,KAAKkL,QAAQ0W,OAGxBA,KAGTwH,iBAAA,WACE,IAAMd,EAAe,CACnBzN,UAAW7a,KAAK0pB,gBAChBpM,UAAW,CACTsE,OAAQ5hB,KAAK4pB,aACblF,KAAM,CACJ5G,QAAS9d,KAAKkL,QAAQwZ,MAExBtB,gBAAiB,CACfnJ,kBAAmBja,KAAKkL,QAAQkd,YAYtC,MAN6B,WAAzBpoB,KAAKkL,QAAQmd,UACfC,EAAahL,UAAUwJ,WAAa,CAClChJ,SAAS,IAIblR,EAAA,GACK0b,EADL,GAEKtoB,KAAKkL,QAAQod,iBAMb3hB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,IAQxB,GALK6B,IACHA,EAAO,IAAIyhB,EAASvoB,KAHY,iBAAXuC,EAAsBA,EAAS,MAIpDrC,EAAEF,MAAM8G,KAAK7B,GAAU6B,IAGH,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,WAKJwmB,YAAP,SAAmB1kB,GACjB,IAAIA,GAhWyB,IAgWfA,EAAMwJ,QACH,UAAfxJ,EAAMyD,MApWqB,IAoWDzD,EAAMwJ,OAMlC,IAFA,IAAMgc,EAAU,GAAGjhB,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KAE/CwB,EAAI,EAAGC,EAAM8gB,EAAQ7gB,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAM3C,EAASoiB,EAASW,sBAAsBW,EAAQ/gB,IAChDghB,EAAU5pB,EAAE2pB,EAAQ/gB,IAAIhC,KAAK7B,IAC7BoJ,EAAgB,CACpBA,cAAewb,EAAQ/gB,IAOzB,GAJIzE,GAAwB,UAAfA,EAAMyD,OACjBuG,EAAc0b,WAAa1lB,GAGxBylB,EAAL,CAIA,IAAME,EAAeF,EAAQrB,MAC7B,GAAKvoB,EAAEiG,GAAQI,SAASf,OAIpBnB,IAAyB,UAAfA,EAAMyD,MAChB,kBAAkBzE,KAAKgB,EAAMK,OAAOyD,UAA2B,UAAf9D,EAAMyD,MA/X/B,IA+XmDzD,EAAMwJ,QAChF3N,EAAE+H,SAAS9B,EAAQ9B,EAAMK,SAF7B,CAMA,IAAM4kB,EAAYppB,EAAEkF,MAAMA,GAAM+K,KAAM9B,GACtCnO,EAAEiG,GAAQpE,QAAQunB,GACdA,EAAUvjB,uBAMV,iBAAkBpF,SAAS8C,iBAC7BvD,EAAES,SAASmT,MAAMhF,WAAWnC,IAAI,YAAa,KAAMzM,EAAEmpB,MAGvDQ,EAAQ/gB,GAAGR,aAAa,gBAAiB,SAErCwhB,EAAQtB,SACVsB,EAAQtB,QAAQe,UAGlBrpB,EAAE8pB,GAAc1jB,YAAYd,IAC5BtF,EAAEiG,GACCG,YAAYd,IACZzD,QAAQ7B,EAAEkF,MAAMA,GAAMgL,OAAQ/B,WAI9B6a,sBAAP,SAA6BpoB,GAC3B,IAAIqF,EACEpF,EAAWX,EAAKS,uBAAuBC,GAM7C,OAJIC,IACFoF,EAASxF,SAASQ,cAAcJ,IAG3BoF,GAAUrF,EAAQ+C,cAIpBomB,uBAAP,SAA8B5lB,GAQ5B,IAAI,kBAAkBhB,KAAKgB,EAAMK,OAAOyD,WAlbX,KAmbzB9D,EAAMwJ,OApbmB,KAobQxJ,EAAMwJ,QAhbd,KAib1BxJ,EAAMwJ,OAlboB,KAkbYxJ,EAAMwJ,OAC3C3N,EAAEmE,EAAMK,QAAQ0B,QAAQkB,IAAe0B,SAAW8e,GAAezkB,KAAKgB,EAAMwJ,UAIhFxJ,EAAM4C,iBACN5C,EAAMmlB,mBAEFxpB,KAAK6oB,WAAY3oB,EAAEF,MAAMuG,SAASf,KAAtC,CAIA,IAAMW,EAAWoiB,EAASW,sBAAsBlpB,MAC1C8oB,EAAW5oB,EAAEiG,GAAQI,SAASf,IAEpC,GAAKsjB,GApcwB,KAocZzkB,EAAMwJ,MAIvB,GAAKib,KAAYA,GAxcY,KAwcCzkB,EAAMwJ,OAvcP,KAucmCxJ,EAAMwJ,OAAtE,CAUA,IAAMqc,EAAQ,GAAGthB,MAAM/F,KAAKsD,EAAO0C,iBAAiBvB,KACjDuJ,OAAO,SAACsZ,GAAD,OAAUjqB,EAAEiqB,GAAMxlB,GAAG,cAE/B,GAAqB,IAAjBulB,EAAMlhB,OAAV,CAIA,IAAIuD,EAAQ2d,EAAMpc,QAAQzJ,EAAMK,QAtdH,KAwdzBL,EAAMwJ,OAAsC,EAARtB,GACtCA,IAxd2B,KA2dzBlI,EAAMwJ,OAAgCtB,EAAQ2d,EAAMlhB,OAAS,GAC/DuD,IAGEA,EAAQ,IACVA,EAAQ,GAGV2d,EAAM3d,GAAOnE,aA/Bb,CACE,GAzc2B,KAycvB/D,EAAMwJ,MAA0B,CAClC,IAAMnG,EAASvB,EAAOhF,cAAcmG,IACpCpH,EAAEwH,GAAQ3F,QAAQ,SAGpB7B,EAAEF,MAAM+B,QAAQ,oDAvXlB,MA5F6B,wCAgG7B,OAAOmH,uCAIP,OAAOO,YAkZXvJ,EAAES,UACCuG,GAAG9B,GAAM6iB,iBAAkB3gB,GAAsBihB,GAAS0B,wBAC1D/iB,GAAG9B,GAAM6iB,iBAAkB3gB,GAAeihB,GAAS0B,wBACnD/iB,GAAM9B,GAAMG,eAHf,IAGiCH,GAAM8iB,eAAkBK,GAASQ,aAC/D7hB,GAAG9B,GAAMG,eAAgB+B,GAAsB,SAAUjD,GACxDA,EAAM4C,iBACN5C,EAAMmlB,kBACNjB,GAAS5hB,iBAAiB9D,KAAK3C,EAAEF,MAAO,YAEzCkH,GAAG9B,GAAMG,eAAgB+B,GAAqB,SAACqG,GAC9CA,EAAE6b,oBASNtpB,EAAEgE,GAAGc,IAAQujB,GAAS5hB,iBACtBzG,EAAEgE,GAAGc,IAAMmC,YAAcohB,GACzBroB,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACNojB,GAAS5hB,kBC/gBlB,IAAM3B,GAAqB,QAErBC,GAAqB,WACrBC,GAAS,IAAgBD,GAEzBE,GAAqBjF,EAAEgE,GAAGc,IAG1BkE,GAAU,CACdkhB,UAAW,EACXhhB,UAAW,EACXhB,OAAW,EACXiJ,MAAW,GAGP5H,GAAc,CAClB2gB,SAAW,mBACXhhB,SAAW,UACXhB,MAAW,UACXiJ,KAAW,WAGPjM,GAAQ,CACZ+K,KAAI,OAAuBjL,GAC3BmlB,eAAc,gBAAsBnlB,GACpCkL,OAAM,SAAuBlL,GAC7B+K,KAAI,OAAuB/K,GAC3BgL,MAAK,QAAuBhL,GAC5BolB,QAAO,UAAuBplB,GAC9BqlB,OAAM,SAAuBrlB,GAC7BslB,cAAa,gBAAuBtlB,GACpCulB,gBAAe,kBAAuBvlB,GACtCwlB,gBAAe,kBAAuBxlB,GACtCylB,kBAAiB,oBAAuBzlB,GACxCK,eAAc,QAAcL,GA9BH,aAiCrBM,GACiB,0BADjBA,GAEiB,0BAFjBA,GAGiB,iBAHjBA,GAIiB,aAJjBA,GAKiB,OALjBA,GAMiB,OANjBA,GAOiB,eAGjB8B,GACa,gBADbA,GAEa,cAFbA,GAGa,wBAHbA,GAIa,yBAJbA,GAKa,oDALbA,GAMa,cASbsjB,cACJ,SAAAA,EAAY9pB,EAASyB,GACnBvC,KAAKkL,QAAuBlL,KAAKmL,WAAW5I,GAC5CvC,KAAK0F,SAAuB5E,EAC5Bd,KAAK6qB,QAAuB/pB,EAAQK,cAAcmG,IAClDtH,KAAK8qB,UAAuB,KAC5B9qB,KAAK+qB,UAAuB,EAC5B/qB,KAAKgrB,oBAAuB,EAC5BhrB,KAAKirB,sBAAuB,EAC5BjrB,KAAKuQ,kBAAuB,EAC5BvQ,KAAKkrB,gBAAuB,6BAe9BxjB,OAAA,SAAO2G,GACL,OAAOrO,KAAK+qB,SAAW/qB,KAAKoR,OAASpR,KAAKqR,KAAKhD,MAGjDgD,KAAA,SAAKhD,GAAe,IAAAtO,EAAAC,KAClB,IAAIA,KAAK+qB,WAAY/qB,KAAKuQ,iBAA1B,CAIIrQ,EAAEF,KAAK0F,UAAUa,SAASf,MAC5BxF,KAAKuQ,kBAAmB,GAG1B,IAAM0Y,EAAY/oB,EAAEkF,MAAMA,GAAM6K,KAAM,CACpC5B,cAAAA,IAGFnO,EAAEF,KAAK0F,UAAU3D,QAAQknB,GAErBjpB,KAAK+qB,UAAY9B,EAAUljB,uBAI/B/F,KAAK+qB,UAAW,EAEhB/qB,KAAKmrB,kBACLnrB,KAAKorB,gBAELprB,KAAKqrB,gBAELrrB,KAAKsrB,kBACLtrB,KAAKurB,kBAELrrB,EAAEF,KAAK0F,UAAUwB,GACf9B,GAAMolB,cACNljB,GACA,SAACjD,GAAD,OAAWtE,EAAKqR,KAAK/M,KAGvBnE,EAAEF,KAAK6qB,SAAS3jB,GAAG9B,GAAMulB,kBAAmB,WAC1CzqB,EAAEH,EAAK2F,UAAUvF,IAAIiF,GAAMslB,gBAAiB,SAACrmB,GACvCnE,EAAEmE,EAAMK,QAAQC,GAAG5E,EAAK2F,YAC1B3F,EAAKkrB,sBAAuB,OAKlCjrB,KAAKwrB,cAAc,WAAA,OAAMzrB,EAAK0rB,aAAapd,UAG7C+C,KAAA,SAAK/M,GAAO,IAAA2I,EAAAhN,KAKV,GAJIqE,GACFA,EAAM4C,iBAGHjH,KAAK+qB,WAAY/qB,KAAKuQ,iBAA3B,CAIA,IAAM+Y,EAAYppB,EAAEkF,MAAMA,GAAM+K,MAIhC,GAFAjQ,EAAEF,KAAK0F,UAAU3D,QAAQunB,GAEpBtpB,KAAK+qB,WAAYzB,EAAUvjB,qBAAhC,CAIA/F,KAAK+qB,UAAW,EAChB,IAAMW,EAAaxrB,EAAEF,KAAK0F,UAAUa,SAASf,IAiB7C,GAfIkmB,IACF1rB,KAAKuQ,kBAAmB,GAG1BvQ,KAAKsrB,kBACLtrB,KAAKurB,kBAELrrB,EAAES,UAAUgM,IAAIvH,GAAMklB,SAEtBpqB,EAAEF,KAAK0F,UAAUY,YAAYd,IAE7BtF,EAAEF,KAAK0F,UAAUiH,IAAIvH,GAAMolB,eAC3BtqB,EAAEF,KAAK6qB,SAASle,IAAIvH,GAAMulB,mBAGtBe,EAAY,CACd,IAAMpqB,EAAsBlB,EAAKiB,iCAAiCrB,KAAK0F,UAEvExF,EAAEF,KAAK0F,UACJvF,IAAIC,EAAKR,eAAgB,SAACyE,GAAD,OAAW2I,EAAK2e,WAAWtnB,KACpDD,qBAAqB9C,QAExBtB,KAAK2rB,kBAIT1lB,QAAA,WACE,CAACyC,OAAQ1I,KAAK0F,SAAU1F,KAAK6qB,SAC1BlN,QAAQ,SAACiO,GAAD,OAAiB1rB,EAAE0rB,GAAajf,IAAIzH,MAO/ChF,EAAES,UAAUgM,IAAIvH,GAAMklB,SAEtBpqB,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAE5BjF,KAAKkL,QAAuB,KAC5BlL,KAAK0F,SAAuB,KAC5B1F,KAAK6qB,QAAuB,KAC5B7qB,KAAK8qB,UAAuB,KAC5B9qB,KAAK+qB,SAAuB,KAC5B/qB,KAAKgrB,mBAAuB,KAC5BhrB,KAAKirB,qBAAuB,KAC5BjrB,KAAKuQ,iBAAuB,KAC5BvQ,KAAKkrB,gBAAuB,QAG9BW,aAAA,WACE7rB,KAAKqrB,mBAKPlgB,WAAA,SAAW5I,GAMT,OALAA,EAAMqK,EAAA,GACD1D,GADC,GAED3G,GAELnC,EAAKiC,gBAAgB2C,GAAMzC,EAAQkH,IAC5BlH,KAGTupB,2BAAA,WAA6B,IAAA3e,EAAAnN,KAC3B,GAA8B,WAA1BA,KAAKkL,QAAQkf,SAAuB,CACtC,IAAM2B,EAAqB7rB,EAAEkF,MAAMA,GAAMilB,gBAGzC,GADAnqB,EAAEF,KAAK0F,UAAU3D,QAAQgqB,GACrBA,EAAmBC,iBACrB,OAGFhsB,KAAK0F,SAASsC,UAAUiB,IAAIzD,IAE5B,IAAMymB,EAA0B7rB,EAAKiB,iCAAiCrB,KAAK0F,UAE3ExF,EAAEF,KAAK0F,UAAUvF,IAAIC,EAAKR,eAAgB,WACxCuN,EAAKzH,SAASsC,UAAUtB,OAAOlB,MAE9BpB,qBAAqB6nB,GACxBjsB,KAAK0F,SAAS0C,aAEdpI,KAAKoR,UAITqa,aAAA,SAAapd,GAAe,IAAAa,EAAAlP,KACpB0rB,EAAaxrB,EAAEF,KAAK0F,UAAUa,SAASf,IACvC0mB,EAAYlsB,KAAK6qB,QAAU7qB,KAAK6qB,QAAQ1pB,cAAcmG,IAAuB,KAE9EtH,KAAK0F,SAAS7B,YACf7D,KAAK0F,SAAS7B,WAAWzB,WAAakT,KAAK6W,cAE7CxrB,SAASmT,KAAKsY,YAAYpsB,KAAK0F,UAGjC1F,KAAK0F,SAASkM,MAAMyW,QAAU,QAC9BroB,KAAK0F,SAASqhB,gBAAgB,eAC9B/mB,KAAK0F,SAAS4C,aAAa,cAAc,GAErCpI,EAAEF,KAAK6qB,SAAStkB,SAASf,KAAyB0mB,EACpDA,EAAU7T,UAAY,EAEtBrY,KAAK0F,SAAS2S,UAAY,EAGxBqT,GACFtrB,EAAKyB,OAAO7B,KAAK0F,UAGnBxF,EAAEF,KAAK0F,UAAUqJ,SAASvJ,IAEtBxF,KAAKkL,QAAQ9C,OACfpI,KAAKqsB,gBAOoB,SAArBC,IACApd,EAAKhE,QAAQ9C,OACf8G,EAAKxJ,SAAS0C,QAEhB8G,EAAKqB,kBAAmB,EACxBrQ,EAAEgP,EAAKxJ,UAAU3D,QAAQwqB,GAT3B,IAAMA,EAAarsB,EAAEkF,MAAMA,GAAM8K,MAAO,CACtC7B,cAAAA,IAWF,GAAIqd,EAAY,CACd,IAAMpqB,EAAsBlB,EAAKiB,iCAAiCrB,KAAK6qB,SAEvE3qB,EAAEF,KAAK6qB,SACJ1qB,IAAIC,EAAKR,eAAgB0sB,GACzBloB,qBAAqB9C,QAExBgrB,OAIJD,cAAA,WAAgB,IAAAG,EAAAxsB,KACdE,EAAES,UACCgM,IAAIvH,GAAMklB,SACVpjB,GAAG9B,GAAMklB,QAAS,SAACjmB,GACd1D,WAAa0D,EAAMK,QACnB8nB,EAAK9mB,WAAarB,EAAMK,QACsB,IAA9CxE,EAAEssB,EAAK9mB,UAAU+mB,IAAIpoB,EAAMK,QAAQsE,QACrCwjB,EAAK9mB,SAAS0C,aAKtBkjB,gBAAA,WAAkB,IAAAoB,EAAA1sB,KACZA,KAAK+qB,UAAY/qB,KAAKkL,QAAQ9B,SAChClJ,EAAEF,KAAK0F,UAAUwB,GAAG9B,GAAMqlB,gBAAiB,SAACpmB,GAlTvB,KAmTfA,EAAMwJ,OACR6e,EAAKZ,+BAGC9rB,KAAK+qB,UACf7qB,EAAEF,KAAK0F,UAAUiH,IAAIvH,GAAMqlB,oBAI/Bc,gBAAA,WAAkB,IAAAoB,EAAA3sB,KACZA,KAAK+qB,SACP7qB,EAAEwI,QAAQxB,GAAG9B,GAAMmlB,OAAQ,SAAClmB,GAAD,OAAWsoB,EAAKd,aAAaxnB,KAExDnE,EAAEwI,QAAQiE,IAAIvH,GAAMmlB,WAIxBoB,WAAA,WAAa,IAAAiB,EAAA5sB,KACXA,KAAK0F,SAASkM,MAAMyW,QAAU,OAC9BroB,KAAK0F,SAAS4C,aAAa,eAAe,GAC1CtI,KAAK0F,SAASqhB,gBAAgB,cAC9B/mB,KAAKuQ,kBAAmB,EACxBvQ,KAAKwrB,cAAc,WACjBtrB,EAAES,SAASmT,MAAMxN,YAAYd,IAC7BonB,EAAKC,oBACLD,EAAKE,kBACL5sB,EAAE0sB,EAAKlnB,UAAU3D,QAAQqD,GAAMgL,aAInC2c,gBAAA,WACM/sB,KAAK8qB,YACP5qB,EAAEF,KAAK8qB,WAAWpkB,SAClB1G,KAAK8qB,UAAY,SAIrBU,cAAA,SAAcxM,GAAU,IAAAgO,EAAAhtB,KAChBitB,EAAU/sB,EAAEF,KAAK0F,UAAUa,SAASf,IACtCA,GAAiB,GAErB,GAAIxF,KAAK+qB,UAAY/qB,KAAKkL,QAAQkf,SAAU,CA4B1C,GA3BApqB,KAAK8qB,UAAYnqB,SAASusB,cAAc,OACxCltB,KAAK8qB,UAAUqC,UAAY3nB,GAEvBynB,GACFjtB,KAAK8qB,UAAU9iB,UAAUiB,IAAIgkB,GAG/B/sB,EAAEF,KAAK8qB,WAAWsC,SAASzsB,SAASmT,MAEpC5T,EAAEF,KAAK0F,UAAUwB,GAAG9B,GAAMolB,cAAe,SAACnmB,GACpC2oB,EAAK/B,qBACP+B,EAAK/B,sBAAuB,EAG1B5mB,EAAMK,SAAWL,EAAMkO,eAI3Bya,EAAKlB,+BAGHmB,GACF7sB,EAAKyB,OAAO7B,KAAK8qB,WAGnB5qB,EAAEF,KAAK8qB,WAAW/b,SAASvJ,KAEtBwZ,EACH,OAGF,IAAKiO,EAEH,YADAjO,IAIF,IAAMqO,EAA6BjtB,EAAKiB,iCAAiCrB,KAAK8qB,WAE9E5qB,EAAEF,KAAK8qB,WACJ3qB,IAAIC,EAAKR,eAAgBof,GACzB5a,qBAAqBipB,QACnB,IAAKrtB,KAAK+qB,UAAY/qB,KAAK8qB,UAAW,CAC3C5qB,EAAEF,KAAK8qB,WAAWxkB,YAAYd,IAE9B,IAAM8nB,EAAiB,WACrBN,EAAKD,kBACD/N,GACFA,KAIJ,GAAI9e,EAAEF,KAAK0F,UAAUa,SAASf,IAAiB,CAC7C,IAAM6nB,EAA6BjtB,EAAKiB,iCAAiCrB,KAAK8qB,WAE9E5qB,EAAEF,KAAK8qB,WACJ3qB,IAAIC,EAAKR,eAAgB0tB,GACzBlpB,qBAAqBipB,QAExBC,SAEOtO,GACTA,OASJqM,cAAA,WACE,IAAMkC,EACJvtB,KAAK0F,SAAS8nB,aAAe7sB,SAAS8C,gBAAgBiV,cAEnD1Y,KAAKgrB,oBAAsBuC,IAC9BvtB,KAAK0F,SAASkM,MAAM6b,YAAiBztB,KAAKkrB,gBAA1C,MAGElrB,KAAKgrB,qBAAuBuC,IAC9BvtB,KAAK0F,SAASkM,MAAM8b,aAAkB1tB,KAAKkrB,gBAA3C,SAIJ2B,kBAAA,WACE7sB,KAAK0F,SAASkM,MAAM6b,YAAc,GAClCztB,KAAK0F,SAASkM,MAAM8b,aAAe,MAGrCvC,gBAAA,WACE,IAAM/S,EAAOzX,SAASmT,KAAK9B,wBAC3BhS,KAAKgrB,mBAAqB5S,EAAKH,KAAOG,EAAKJ,MAAQtP,OAAO2R,WAC1Dra,KAAKkrB,gBAAkBlrB,KAAK2tB,wBAG9BvC,cAAA,WAAgB,IAAAwC,EAAA5tB,KACd,GAAIA,KAAKgrB,mBAAoB,CAG3B,IAAM6C,EAAe,GAAGjlB,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KACvDwmB,EAAgB,GAAGllB,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KAG9DpH,EAAE2tB,GAAcjnB,KAAK,SAAC2F,EAAOzL,GAC3B,IAAMitB,EAAgBjtB,EAAQ8Q,MAAM8b,aAC9BM,EAAoB9tB,EAAEY,GAASS,IAAI,iBACzCrB,EAAEY,GACCgG,KAAK,gBAAiBinB,GACtBxsB,IAAI,gBAAoBG,WAAWssB,GAAqBJ,EAAK1C,gBAFhE,QAMFhrB,EAAE4tB,GAAelnB,KAAK,SAAC2F,EAAOzL,GAC5B,IAAMmtB,EAAentB,EAAQ8Q,MAAMuK,YAC7B+R,EAAmBhuB,EAAEY,GAASS,IAAI,gBACxCrB,EAAEY,GACCgG,KAAK,eAAgBmnB,GACrB1sB,IAAI,eAAmBG,WAAWwsB,GAAoBN,EAAK1C,gBAF9D,QAMF,IAAM6C,EAAgBptB,SAASmT,KAAKlC,MAAM8b,aACpCM,EAAoB9tB,EAAES,SAASmT,MAAMvS,IAAI,iBAC/CrB,EAAES,SAASmT,MACRhN,KAAK,gBAAiBinB,GACtBxsB,IAAI,gBAAoBG,WAAWssB,GAAqBhuB,KAAKkrB,gBAFhE,MAKFhrB,EAAES,SAASmT,MAAM/E,SAASvJ,OAG5BsnB,gBAAA,WAEE,IAAMe,EAAe,GAAGjlB,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KAC7DpH,EAAE2tB,GAAcjnB,KAAK,SAAC2F,EAAOzL,GAC3B,IAAMkZ,EAAU9Z,EAAEY,GAASgG,KAAK,iBAChC5G,EAAEY,GAASoF,WAAW,iBACtBpF,EAAQ8Q,MAAM8b,aAAe1T,GAAoB,KAInD,IAAMmU,EAAW,GAAGvlB,MAAM/F,KAAKlC,SAASkI,iBAAT,GAA6BvB,KAC5DpH,EAAEiuB,GAAUvnB,KAAK,SAAC2F,EAAOzL,GACvB,IAAMstB,EAASluB,EAAEY,GAASgG,KAAK,gBACT,oBAAXsnB,GACTluB,EAAEY,GAASS,IAAI,eAAgB6sB,GAAQloB,WAAW,kBAKtD,IAAM8T,EAAU9Z,EAAES,SAASmT,MAAMhN,KAAK,iBACtC5G,EAAES,SAASmT,MAAM5N,WAAW,iBAC5BvF,SAASmT,KAAKlC,MAAM8b,aAAe1T,GAAoB,MAGzD2T,mBAAA,WACE,IAAMU,EAAY1tB,SAASusB,cAAc,OACzCmB,EAAUlB,UAAY3nB,GACtB7E,SAASmT,KAAKsY,YAAYiC,GAC1B,IAAMC,EAAiBD,EAAUrc,wBAAwB+E,MAAQsX,EAAU5V,YAE3E,OADA9X,SAASmT,KAAKwT,YAAY+G,GACnBC,KAKF3nB,iBAAP,SAAwBpE,EAAQ8L,GAC9B,OAAOrO,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,IAClBiG,EAAO0B,EAAA,GACR1D,GADQ,GAERhJ,EAAEF,MAAM8G,OAFA,GAGU,iBAAXvE,GAAuBA,EAASA,EAAS,IAQrD,GALKuE,IACHA,EAAO,IAAI8jB,EAAM5qB,KAAMkL,GACvBhL,EAAEF,MAAM8G,KAAK7B,GAAU6B,IAGH,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,GAAQ8L,QACJnD,EAAQmG,MACjBvK,EAAKuK,KAAKhD,8CA9cd,MA7EuB,wCAiFvB,OAAOnF,YAsdXhJ,EAAES,UAAUuG,GAAG9B,GAAMG,eAAgB+B,GAAsB,SAAUjD,GAAO,IACtEK,EADsE6pB,EAAAvuB,KAEpEe,EAAWX,EAAKS,uBAAuBb,MAEzCe,IACF2D,EAAS/D,SAASQ,cAAcJ,IAGlC,IAAMwB,EAASrC,EAAEwE,GAAQoC,KAAK7B,IAC1B,SADW2H,EAAA,GAER1M,EAAEwE,GAAQoC,OAFF,GAGR5G,EAAEF,MAAM8G,QAGM,MAAjB9G,KAAKmI,SAAoC,SAAjBnI,KAAKmI,SAC/B9D,EAAM4C,iBAGR,IAAMyL,EAAUxS,EAAEwE,GAAQvE,IAAIiF,GAAM6K,KAAM,SAACgZ,GACrCA,EAAUljB,sBAKd2M,EAAQvS,IAAIiF,GAAMgL,OAAQ,WACpBlQ,EAAEquB,GAAM5pB,GAAG,aACb4pB,EAAKnmB,YAKXwiB,GAAMjkB,iBAAiB9D,KAAK3C,EAAEwE,GAASnC,EAAQvC,QASjDE,EAAEgE,GAAGc,IAAQ4lB,GAAMjkB,iBACnBzG,EAAEgE,GAAGc,IAAMmC,YAAcyjB,GACzB1qB,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACNylB,GAAMjkB,kBC7lBf,IAAM6nB,GAAW,CACf,aACA,OACA,OACA,WACA,WACA,SACA,MACA,cAKWC,GAAmB,CAE9BC,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAJP,kBAK7BnT,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BJ,KAAM,GACNK,EAAG,GACHmT,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJxmB,EAAG,GACHymB,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtCC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAQAC,GAAmB,8DAOnBC,GAAmB,sIAyBlB,SAASC,GAAaC,EAAYC,EAAWC,GAClD,GAA0B,IAAtBF,EAAWvnB,OACb,OAAOunB,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GAQpB,IALA,IACMG,GADY,IAAIhoB,OAAOioB,WACKC,gBAAgBL,EAAY,aACxDM,EAAgBnuB,OAAOuY,KAAKuV,GAC5BrC,EAAW,GAAGvlB,MAAM/F,KAAK6tB,EAAgB5c,KAAKjL,iBAAiB,MAZPioB,EAAA,SAcrDhoB,GACP,IAAM+Q,EAAKsU,EAASrlB,GACdioB,EAASlX,EAAGlG,SAASxQ,cAE3B,IAA0D,IAAtD0tB,EAAc/iB,QAAQ+L,EAAGlG,SAASxQ,eAGpC,OAFA0W,EAAGhW,WAAWyjB,YAAYzN,GAE1B,WAGF,IAAMmX,EAAgB,GAAGpoB,MAAM/F,KAAKgX,EAAGoM,YACjCgL,EAAwB,GAAGzP,OAAOgP,EAAU,MAAQ,GAAIA,EAAUO,IAAW,IAEnFC,EAAcrT,QAAQ,SAAC9L,IAlD3B,SAA0BA,EAAMqf,GAC9B,IAAMC,EAAWtf,EAAK8B,SAASxQ,cAE/B,IAAgD,IAA5C+tB,EAAqBpjB,QAAQqjB,GAC/B,OAAoC,IAAhC3C,GAAS1gB,QAAQqjB,IACZlvB,QAAQ4P,EAAKuf,UAAUluB,MAAMktB,KAAqBve,EAAKuf,UAAUluB,MAAMmtB,KASlF,IAHA,IAAMgB,EAASH,EAAqBrgB,OAAO,SAACygB,GAAD,OAAeA,aAAqBluB,SAGtE0F,EAAI,EAAGyoB,EAAIF,EAAOroB,OAAQF,EAAIyoB,EAAGzoB,IACxC,GAAIqoB,EAASjuB,MAAMmuB,EAAOvoB,IACxB,OAAO,EAIX,OAAO,EA+BE0oB,CAAiB3f,EAAMof,IAC1BpX,EAAGkN,gBAAgBlV,EAAK8B,aAfrB7K,EAAI,EAAGC,EAAMolB,EAASnlB,OAAQF,EAAIC,EAAKD,IAAKgoB,EAA5ChoB,GAoBT,OAAO4nB,EAAgB5c,KAAK2d,UCxG9B,IAAMzsB,GAAwB,UAExBC,GAAwB,aACxBC,GAAS,IAAmBD,GAC5BE,GAAwBjF,EAAEgE,GAAGc,IAC7B0sB,GAAwB,aACxBC,GAAwB,IAAIvuB,OAAJ,UAAqBsuB,GAArB,OAAyC,KACjEE,GAAwB,CAAC,WAAY,YAAa,cAElDnoB,GAAc,CAClBooB,UAAoB,UACpBC,SAAoB,SACpBC,MAAoB,4BACpBhwB,QAAoB,SACpBiwB,MAAoB,kBACpB7b,KAAoB,UACpBpV,SAAoB,mBACpB8Z,UAAoB,oBACpB+G,OAAoB,2BACpBqQ,UAAoB,2BACpBC,kBAAoB,iBACpB9J,SAAoB,mBACpB+J,SAAoB,UACpB1B,WAAoB,kBACpBD,UAAoB,SACpBlI,aAAoB,iBAGhBH,GAAgB,CACpBiK,KAAS,OACTC,IAAS,MACTC,MAAS,QACTC,OAAS,SACTC,KAAS,QAGLtpB,GAAU,CACd2oB,WAAoB,EACpBC,SAAoB,uGAGpB/vB,QAAoB,cACpBgwB,MAAoB,GACpBC,MAAoB,EACpB7b,MAAoB,EACpBpV,UAAoB,EACpB8Z,UAAoB,MACpB+G,OAAoB,EACpBqQ,WAAoB,EACpBC,kBAAoB,OACpB9J,SAAoB,eACpB+J,UAAoB,EACpB1B,WAAoB,KACpBD,UAAoB/B,GACpBnG,aAAoB,MAGhBmK,GACG,OADHA,GAEG,MAGHrtB,GAAQ,CACZ+K,KAAI,OAAgBjL,GACpBkL,OAAM,SAAgBlL,GACtB+K,KAAI,OAAgB/K,GACpBgL,MAAK,QAAgBhL,GACrBwtB,SAAQ,WAAgBxtB,GACxB8iB,MAAK,QAAgB9iB,GACrBolB,QAAO,UAAgBplB,GACvBytB,SAAQ,WAAgBztB,GACxB4E,WAAU,aAAgB5E,GAC1B6E,WAAU,aAAgB7E,IAGtBM,GACG,OADHA,GAEG,OAGH8B,GAEY,iBAFZA,GAGY,SAGZsrB,GACK,QADLA,GAEK,QAFLA,GAGK,QAHLA,GAIK,SAULC,cACJ,SAAAA,EAAY/xB,EAASyB,GACnB,GAAsB,oBAAX4kB,GACT,MAAM,IAAInjB,UAAU,mEAItBhE,KAAK8yB,YAAiB,EACtB9yB,KAAK+yB,SAAiB,EACtB/yB,KAAKgzB,YAAiB,GACtBhzB,KAAKizB,eAAiB,GACtBjzB,KAAKwoB,QAAiB,KAGtBxoB,KAAKc,QAAUA,EACfd,KAAKuC,OAAUvC,KAAKmL,WAAW5I,GAC/BvC,KAAKkzB,IAAU,KAEflzB,KAAKmzB,2CAmCPC,OAAA,WACEpzB,KAAK8yB,YAAa,KAGpBO,QAAA,WACErzB,KAAK8yB,YAAa,KAGpBQ,cAAA,WACEtzB,KAAK8yB,YAAc9yB,KAAK8yB,cAG1BprB,OAAA,SAAOrD,GACL,GAAKrE,KAAK8yB,WAIV,GAAIzuB,EAAO,CACT,IAAMkvB,EAAUvzB,KAAKypB,YAAYxkB,SAC7B6kB,EAAU5pB,EAAEmE,EAAMkO,eAAezL,KAAKysB,GAErCzJ,IACHA,EAAU,IAAI9pB,KAAKypB,YACjBplB,EAAMkO,cACNvS,KAAKwzB,sBAEPtzB,EAAEmE,EAAMkO,eAAezL,KAAKysB,EAASzJ,IAGvCA,EAAQmJ,eAAeQ,OAAS3J,EAAQmJ,eAAeQ,MAEnD3J,EAAQ4J,uBACV5J,EAAQ6J,OAAO,KAAM7J,GAErBA,EAAQ8J,OAAO,KAAM9J,OAElB,CACL,GAAI5pB,EAAEF,KAAK6zB,iBAAiBttB,SAASf,IAEnC,YADAxF,KAAK4zB,OAAO,KAAM5zB,MAIpBA,KAAK2zB,OAAO,KAAM3zB,UAItBiG,QAAA,WACEyH,aAAa1N,KAAK+yB,UAElB7yB,EAAEgG,WAAWlG,KAAKc,QAASd,KAAKypB,YAAYxkB,UAE5C/E,EAAEF,KAAKc,SAAS6L,IAAI3M,KAAKypB,YAAYvkB,WACrChF,EAAEF,KAAKc,SAASsF,QAAQ,UAAUuG,IAAI,gBAAiB3M,KAAK8zB,mBAExD9zB,KAAKkzB,KACPhzB,EAAEF,KAAKkzB,KAAKxsB,SAGd1G,KAAK8yB,WAAiB,KACtB9yB,KAAK+yB,SAAiB,KACtB/yB,KAAKgzB,YAAiB,KACtBhzB,KAAKizB,eAAiB,KAClBjzB,KAAKwoB,SACPxoB,KAAKwoB,QAAQe,UAGfvpB,KAAKwoB,QAAU,KACfxoB,KAAKc,QAAU,KACfd,KAAKuC,OAAU,KACfvC,KAAKkzB,IAAU,QAGjB7hB,KAAA,WAAO,IAAAtR,EAAAC,KACL,GAAuC,SAAnCE,EAAEF,KAAKc,SAASS,IAAI,WACtB,MAAM,IAAI+B,MAAM,uCAGlB,IAAM2lB,EAAY/oB,EAAEkF,MAAMpF,KAAKypB,YAAYrkB,MAAM6K,MACjD,GAAIjQ,KAAK+zB,iBAAmB/zB,KAAK8yB,WAAY,CAC3C5yB,EAAEF,KAAKc,SAASiB,QAAQknB,GAExB,IAAM+K,EAAa5zB,EAAKoD,eAAexD,KAAKc,SACtCmzB,EAAa/zB,EAAE+H,SACJ,OAAf+rB,EAAsBA,EAAah0B,KAAKc,QAAQyS,cAAc9P,gBAC9DzD,KAAKc,SAGP,GAAImoB,EAAUljB,uBAAyBkuB,EACrC,OAGF,IAAMf,EAAQlzB,KAAK6zB,gBACbK,EAAQ9zB,EAAKG,OAAOP,KAAKypB,YAAYzkB,MAE3CkuB,EAAI5qB,aAAa,KAAM4rB,GACvBl0B,KAAKc,QAAQwH,aAAa,mBAAoB4rB,GAE9Cl0B,KAAKm0B,aAEDn0B,KAAKuC,OAAOsvB,WACd3xB,EAAEgzB,GAAKnkB,SAASvJ,IAGlB,IAAMqV,EAA8C,mBAA1B7a,KAAKuC,OAAOsY,UAClC7a,KAAKuC,OAAOsY,UAAUhY,KAAK7C,KAAMkzB,EAAKlzB,KAAKc,SAC3Cd,KAAKuC,OAAOsY,UAEVuZ,EAAap0B,KAAKq0B,eAAexZ,GACvC7a,KAAKs0B,mBAAmBF,GAExB,IAAMnC,EAAYjyB,KAAKu0B,gBACvBr0B,EAAEgzB,GAAKpsB,KAAK9G,KAAKypB,YAAYxkB,SAAUjF,MAElCE,EAAE+H,SAASjI,KAAKc,QAAQyS,cAAc9P,gBAAiBzD,KAAKkzB,MAC/DhzB,EAAEgzB,GAAK9F,SAAS6E,GAGlB/xB,EAAEF,KAAKc,SAASiB,QAAQ/B,KAAKypB,YAAYrkB,MAAMstB,UAE/C1yB,KAAKwoB,QAAU,IAAIrB,GAAOnnB,KAAKc,QAASoyB,EAAKlzB,KAAKopB,iBAAiBgL,IAEnEl0B,EAAEgzB,GAAKnkB,SAASvJ,IAMZ,iBAAkB7E,SAAS8C,iBAC7BvD,EAAES,SAASmT,MAAMhF,WAAW5H,GAAG,YAAa,KAAMhH,EAAEmpB,MAGtD,IAAMmL,EAAW,WACXz0B,EAAKwC,OAAOsvB,WACd9xB,EAAK00B,iBAEP,IAAMC,EAAiB30B,EAAKizB,YAC5BjzB,EAAKizB,YAAkB,KAEvB9yB,EAAEH,EAAKe,SAASiB,QAAQhC,EAAK0pB,YAAYrkB,MAAM8K,OAE3CwkB,IAAmBjC,IACrB1yB,EAAK6zB,OAAO,KAAM7zB,IAItB,GAAIG,EAAEF,KAAKkzB,KAAK3sB,SAASf,IAAiB,CACxC,IAAMlE,EAAqBlB,EAAKiB,iCAAiCrB,KAAKkzB,KAEtEhzB,EAAEF,KAAKkzB,KACJ/yB,IAAIC,EAAKR,eAAgB40B,GACzBpwB,qBAAqB9C,QAExBkzB,QAKNpjB,KAAA,SAAK4N,GAGc,SAAXwV,IACAxnB,EAAKgmB,cAAgBP,IAAmBS,EAAIrvB,YAC9CqvB,EAAIrvB,WAAWyjB,YAAY4L,GAG7BlmB,EAAK2nB,iBACL3nB,EAAKlM,QAAQimB,gBAAgB,oBAC7B7mB,EAAE8M,EAAKlM,SAASiB,QAAQiL,EAAKyc,YAAYrkB,MAAMgL,QAC1B,OAAjBpD,EAAKwb,SACPxb,EAAKwb,QAAQe,UAGXvK,GACFA,IAhBS,IAAAhS,EAAAhN,KACPkzB,EAAYlzB,KAAK6zB,gBACjBvK,EAAYppB,EAAEkF,MAAMpF,KAAKypB,YAAYrkB,MAAM+K,MAoBjD,GAFAjQ,EAAEF,KAAKc,SAASiB,QAAQunB,IAEpBA,EAAUvjB,qBAAd,CAgBA,GAZA7F,EAAEgzB,GAAK5sB,YAAYd,IAIf,iBAAkB7E,SAAS8C,iBAC7BvD,EAAES,SAASmT,MAAMhF,WAAWnC,IAAI,YAAa,KAAMzM,EAAEmpB,MAGvDrpB,KAAKizB,eAAeL,KAAiB,EACrC5yB,KAAKizB,eAAeL,KAAiB,EACrC5yB,KAAKizB,eAAeL,KAAiB,EAEjC1yB,EAAEF,KAAKkzB,KAAK3sB,SAASf,IAAiB,CACxC,IAAMlE,EAAqBlB,EAAKiB,iCAAiC6xB,GAEjEhzB,EAAEgzB,GACC/yB,IAAIC,EAAKR,eAAgB40B,GACzBpwB,qBAAqB9C,QAExBkzB,IAGFx0B,KAAKgzB,YAAc,OAGrBvL,OAAA,WACuB,OAAjBznB,KAAKwoB,SACPxoB,KAAKwoB,QAAQlJ,oBAMjByU,cAAA,WACE,OAAO9xB,QAAQjC,KAAK40B,eAGtBN,mBAAA,SAAmBF,GACjBl0B,EAAEF,KAAK6zB,iBAAiB9kB,SAAY2iB,GAApC,IAAoD0C,MAGtDP,cAAA,WAEE,OADA7zB,KAAKkzB,IAAMlzB,KAAKkzB,KAAOhzB,EAAEF,KAAKuC,OAAOuvB,UAAU,GACxC9xB,KAAKkzB,OAGdiB,WAAA,WACE,IAAMjB,EAAMlzB,KAAK6zB,gBACjB7zB,KAAK60B,kBAAkB30B,EAAEgzB,EAAIrqB,iBAAiBvB,KAA0BtH,KAAK40B,YAC7E10B,EAAEgzB,GAAK5sB,YAAed,GAAtB,IAAwCA,OAG1CqvB,kBAAA,SAAkBhuB,EAAUiuB,GACH,iBAAZA,IAAyBA,EAAQ1yB,WAAY0yB,EAAQ3wB,OAa5DnE,KAAKuC,OAAO4T,MACVnW,KAAKuC,OAAO4vB,WACd2C,EAAUxE,GAAawE,EAAS90B,KAAKuC,OAAOiuB,UAAWxwB,KAAKuC,OAAOkuB,aAGrE5pB,EAASsP,KAAK2e,IAEdjuB,EAASkuB,KAAKD,GAlBV90B,KAAKuC,OAAO4T,KACTjW,EAAE40B,GAAS3uB,SAASxB,GAAGkC,IAC1BA,EAASmuB,QAAQC,OAAOH,GAG1BjuB,EAASkuB,KAAK70B,EAAE40B,GAASC,WAiB/BH,SAAA,WACE,IAAI7C,EAAQ/xB,KAAKc,QAAQE,aAAa,uBAQtC,OALE+wB,EADGA,IACkC,mBAAtB/xB,KAAKuC,OAAOwvB,MACvB/xB,KAAKuC,OAAOwvB,MAAMlvB,KAAK7C,KAAKc,SAC5Bd,KAAKuC,OAAOwvB,UAQpB3I,iBAAA,SAAiBgL,GAAY,IAAAjnB,EAAAnN,KAuB3B,OAAA4M,EAAA,GAtBwB,CACtBiO,UAAWuZ,EACX9W,UAAW,CACTsE,OAAQ5hB,KAAK4pB,aACblF,KAAM,CACJK,SAAU/kB,KAAKuC,OAAO2vB,mBAExBlO,MAAO,CACLljB,QAASwG,IAEX8b,gBAAiB,CACfnJ,kBAAmBja,KAAKuC,OAAO6lB,WAGnCtF,SAAU,SAAChc,GACLA,EAAK8d,oBAAsB9d,EAAK+T,WAClC1N,EAAK+nB,6BAA6BpuB,IAGtCic,SAAU,SAACjc,GAAD,OAAUqG,EAAK+nB,6BAA6BpuB,KAGxD,GAEK9G,KAAKuC,OAAO+lB,iBAInBsB,WAAA,WAAa,IAAA1a,EAAAlP,KACL4hB,EAAS,GAef,MAbkC,mBAAvB5hB,KAAKuC,OAAOqf,OACrBA,EAAO1d,GAAK,SAAC4C,GAMX,OALAA,EAAKiR,QAALnL,EAAA,GACK9F,EAAKiR,QADV,GAEK7I,EAAK3M,OAAOqf,OAAO9a,EAAKiR,QAAS7I,EAAKpO,UAAY,IAGhDgG,GAGT8a,EAAOA,OAAS5hB,KAAKuC,OAAOqf,OAGvBA,KAGT2S,cAAA,WACE,OAA8B,IAA1Bv0B,KAAKuC,OAAO0vB,UACPtxB,SAASmT,KAGd1T,EAAK8B,UAAUlC,KAAKuC,OAAO0vB,WACtB/xB,EAAEF,KAAKuC,OAAO0vB,WAGhB/xB,EAAES,UAAUsc,KAAKjd,KAAKuC,OAAO0vB,cAGtCoC,eAAA,SAAexZ,GACb,OAAOsN,GAActN,EAAUtX,kBAGjC4vB,cAAA,WAAgB,IAAA3G,EAAAxsB,KACGA,KAAKuC,OAAOR,QAAQH,MAAM,KAElC+b,QAAQ,SAAC5b,GAChB,GAAgB,UAAZA,EACF7B,EAAEssB,EAAK1rB,SAASoG,GACdslB,EAAK/C,YAAYrkB,MAAM4iB,MACvBwE,EAAKjqB,OAAOxB,SACZ,SAACsD,GAAD,OAAWmoB,EAAK9kB,OAAOrD,UAEpB,GAAItC,IAAY6wB,GAAgB,CACrC,IAAMuC,EAAUpzB,IAAY6wB,GACxBpG,EAAK/C,YAAYrkB,MAAM0E,WACvB0iB,EAAK/C,YAAYrkB,MAAMklB,QACrB8K,EAAWrzB,IAAY6wB,GACzBpG,EAAK/C,YAAYrkB,MAAM2E,WACvByiB,EAAK/C,YAAYrkB,MAAMutB,SAE3BzyB,EAAEssB,EAAK1rB,SACJoG,GACCiuB,EACA3I,EAAKjqB,OAAOxB,SACZ,SAACsD,GAAD,OAAWmoB,EAAKmH,OAAOtvB,KAExB6C,GACCkuB,EACA5I,EAAKjqB,OAAOxB,SACZ,SAACsD,GAAD,OAAWmoB,EAAKoH,OAAOvvB,QAK/BrE,KAAK8zB,kBAAoB,WACnBtH,EAAK1rB,SACP0rB,EAAKpb,QAITlR,EAAEF,KAAKc,SAASsF,QAAQ,UAAUc,GAChC,gBACAlH,KAAK8zB,mBAGH9zB,KAAKuC,OAAOxB,SACdf,KAAKuC,OAALqK,EAAA,GACK5M,KAAKuC,OADV,CAEER,QAAS,SACThB,SAAU,KAGZf,KAAKq1B,eAITA,UAAA,WACE,IAAMC,SAAmBt1B,KAAKc,QAAQE,aAAa,wBAE/ChB,KAAKc,QAAQE,aAAa,UAA0B,UAAds0B,IACxCt1B,KAAKc,QAAQwH,aACX,sBACAtI,KAAKc,QAAQE,aAAa,UAAY,IAGxChB,KAAKc,QAAQwH,aAAa,QAAS,QAIvCqrB,OAAA,SAAOtvB,EAAOylB,GACZ,IAAMyJ,EAAUvzB,KAAKypB,YAAYxkB,UACjC6kB,EAAUA,GAAW5pB,EAAEmE,EAAMkO,eAAezL,KAAKysB,MAG/CzJ,EAAU,IAAI9pB,KAAKypB,YACjBplB,EAAMkO,cACNvS,KAAKwzB,sBAEPtzB,EAAEmE,EAAMkO,eAAezL,KAAKysB,EAASzJ,IAGnCzlB,IACFylB,EAAQmJ,eACS,YAAf5uB,EAAMyD,KAAqB8qB,GAAgBA,KACzC,GAGF1yB,EAAE4pB,EAAQ+J,iBAAiBttB,SAASf,KAAmBskB,EAAQkJ,cAAgBP,GACjF3I,EAAQkJ,YAAcP,IAIxB/kB,aAAaoc,EAAQiJ,UAErBjJ,EAAQkJ,YAAcP,GAEjB3I,EAAQvnB,OAAOyvB,OAAUlI,EAAQvnB,OAAOyvB,MAAM3gB,KAKnDyY,EAAQiJ,SAAW1yB,WAAW,WACxBypB,EAAQkJ,cAAgBP,IAC1B3I,EAAQzY,QAETyY,EAAQvnB,OAAOyvB,MAAM3gB,MARtByY,EAAQzY,WAWZuiB,OAAA,SAAOvvB,EAAOylB,GACZ,IAAMyJ,EAAUvzB,KAAKypB,YAAYxkB,UACjC6kB,EAAUA,GAAW5pB,EAAEmE,EAAMkO,eAAezL,KAAKysB,MAG/CzJ,EAAU,IAAI9pB,KAAKypB,YACjBplB,EAAMkO,cACNvS,KAAKwzB,sBAEPtzB,EAAEmE,EAAMkO,eAAezL,KAAKysB,EAASzJ,IAGnCzlB,IACFylB,EAAQmJ,eACS,aAAf5uB,EAAMyD,KAAsB8qB,GAAgBA,KAC1C,GAGF9I,EAAQ4J,yBAIZhmB,aAAaoc,EAAQiJ,UAErBjJ,EAAQkJ,YAAcP,GAEjB3I,EAAQvnB,OAAOyvB,OAAUlI,EAAQvnB,OAAOyvB,MAAM5gB,KAKnD0Y,EAAQiJ,SAAW1yB,WAAW,WACxBypB,EAAQkJ,cAAgBP,IAC1B3I,EAAQ1Y,QAET0Y,EAAQvnB,OAAOyvB,MAAM5gB,MARtB0Y,EAAQ1Y,WAWZsiB,qBAAA,WACE,IAAK,IAAM3xB,KAAW/B,KAAKizB,eACzB,GAAIjzB,KAAKizB,eAAelxB,GACtB,OAAO,EAIX,OAAO,KAGToJ,WAAA,SAAW5I,GACT,IAAMgzB,EAAiBr1B,EAAEF,KAAKc,SAASgG,OAwCvC,OAtCApE,OAAOuY,KAAKsa,GACT5X,QAAQ,SAAC6X,IACyC,IAA7C5D,GAAsB9jB,QAAQ0nB,WACzBD,EAAeC,KAUA,iBAN5BjzB,EAAMqK,EAAA,GACD5M,KAAKypB,YAAYvgB,QADhB,GAEDqsB,EAFC,GAGiB,iBAAXhzB,GAAuBA,EAASA,EAAS,KAGnCyvB,QAChBzvB,EAAOyvB,MAAQ,CACb3gB,KAAM9O,EAAOyvB,MACb5gB,KAAM7O,EAAOyvB,QAIW,iBAAjBzvB,EAAOwvB,QAChBxvB,EAAOwvB,MAAQxvB,EAAOwvB,MAAM9uB,YAGA,iBAAnBV,EAAOuyB,UAChBvyB,EAAOuyB,QAAUvyB,EAAOuyB,QAAQ7xB,YAGlC7C,EAAKiC,gBACH2C,GACAzC,EACAvC,KAAKypB,YAAYhgB,aAGflH,EAAO4vB,WACT5vB,EAAOuvB,SAAWxB,GAAa/tB,EAAOuvB,SAAUvvB,EAAOiuB,UAAWjuB,EAAOkuB,aAGpEluB,KAGTixB,mBAAA,WACE,IAAMjxB,EAAS,GAEf,GAAIvC,KAAKuC,OACP,IAAK,IAAMmV,KAAO1X,KAAKuC,OACjBvC,KAAKypB,YAAYvgB,QAAQwO,KAAS1X,KAAKuC,OAAOmV,KAChDnV,EAAOmV,GAAO1X,KAAKuC,OAAOmV,IAKhC,OAAOnV,KAGToyB,eAAA,WACE,IAAMc,EAAOv1B,EAAEF,KAAK6zB,iBACd6B,EAAWD,EAAK5jB,KAAK,SAAS3O,MAAMyuB,IACzB,OAAb+D,GAAqBA,EAAS1sB,QAChCysB,EAAKnvB,YAAYovB,EAASC,KAAK,QAInCT,6BAAA,SAA6BU,GAC3B,IAAMC,EAAiBD,EAAWvS,SAClCrjB,KAAKkzB,IAAM2C,EAAe9b,OAC1B/Z,KAAK20B,iBACL30B,KAAKs0B,mBAAmBt0B,KAAKq0B,eAAeuB,EAAW/a,eAGzD4Z,eAAA,WACE,IAAMvB,EAAMlzB,KAAK6zB,gBACXiC,EAAsB91B,KAAKuC,OAAOsvB,UAEA,OAApCqB,EAAIlyB,aAAa,iBAIrBd,EAAEgzB,GAAK5sB,YAAYd,IACnBxF,KAAKuC,OAAOsvB,WAAY,EACxB7xB,KAAKoR,OACLpR,KAAKqR,OACLrR,KAAKuC,OAAOsvB,UAAYiE,MAKnBnvB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,IAClBiG,EAA4B,iBAAX3I,GAAuBA,EAE9C,IAAKuE,IAAQ,eAAezD,KAAKd,MAI5BuE,IACHA,EAAO,IAAI+rB,EAAQ7yB,KAAMkL,GACzBhL,EAAEF,MAAM8G,KAAK7B,GAAU6B,IAGH,iBAAXvE,GAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,iDArnBT,MA3H0B,wCA+H1B,OAAO2G,gCAIP,OAAOlE,oCAIP,OAAOC,iCAIP,OAAOG,qCAIP,OAAOF,uCAIP,OAAOuE,YAymBXvJ,EAAEgE,GAAGc,IAAQ6tB,GAAQlsB,iBACrBzG,EAAEgE,GAAGc,IAAMmC,YAAc0rB,GACzB3yB,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACN0tB,GAAQlsB,kBCtwBjB,IAAM3B,GAAsB,UAEtBC,GAAsB,aACtBC,GAAS,IAAiBD,GAC1BE,GAAsBjF,EAAEgE,GAAGc,IAC3B0sB,GAAsB,aACtBC,GAAsB,IAAIvuB,OAAJ,UAAqBsuB,GAArB,OAAyC,KAE/DxoB,GAAO0D,EAAA,GACRimB,GAAQ3pB,QADA,CAEX2R,UAAY,QACZ9Y,QAAY,QACZ+yB,QAAY,GACZhD,SAAY,wIAMRroB,GAAWmD,EAAA,GACZimB,GAAQppB,YADI,CAEfqrB,QAAU,8BAGNtvB,GACG,OADHA,GAEG,OAGH8B,GACM,kBADNA,GAEM,gBAGNlC,GAAQ,CACZ+K,KAAI,OAAgBjL,GACpBkL,OAAM,SAAgBlL,GACtB+K,KAAI,OAAgB/K,GACpBgL,MAAK,QAAgBhL,GACrBwtB,SAAQ,WAAgBxtB,GACxB8iB,MAAK,QAAgB9iB,GACrBolB,QAAO,UAAgBplB,GACvBytB,SAAQ,WAAgBztB,GACxB4E,WAAU,aAAgB5E,GAC1B6E,WAAU,aAAgB7E,IAStB6wB,gMAiCJhC,cAAA,WACE,OAAO/zB,KAAK40B,YAAc50B,KAAKg2B,iBAGjC1B,mBAAA,SAAmBF,GACjBl0B,EAAEF,KAAK6zB,iBAAiB9kB,SAAY2iB,GAApC,IAAoD0C,MAGtDP,cAAA,WAEE,OADA7zB,KAAKkzB,IAAMlzB,KAAKkzB,KAAOhzB,EAAEF,KAAKuC,OAAOuvB,UAAU,GACxC9xB,KAAKkzB,OAGdiB,WAAA,WACE,IAAMsB,EAAOv1B,EAAEF,KAAK6zB,iBAGpB7zB,KAAK60B,kBAAkBY,EAAKxY,KAAK3V,IAAiBtH,KAAK40B,YACvD,IAAIE,EAAU90B,KAAKg2B,cACI,mBAAZlB,IACTA,EAAUA,EAAQjyB,KAAK7C,KAAKc,UAE9Bd,KAAK60B,kBAAkBY,EAAKxY,KAAK3V,IAAmBwtB,GAEpDW,EAAKnvB,YAAed,GAApB,IAAsCA,OAKxCwwB,YAAA,WACE,OAAOh2B,KAAKc,QAAQE,aAAa,iBAC/BhB,KAAKuC,OAAOuyB,WAGhBH,eAAA,WACE,IAAMc,EAAOv1B,EAAEF,KAAK6zB,iBACd6B,EAAWD,EAAK5jB,KAAK,SAAS3O,MAAMyuB,IACzB,OAAb+D,GAAuC,EAAlBA,EAAS1sB,QAChCysB,EAAKnvB,YAAYovB,EAASC,KAAK,QAM5BhvB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,IAClBiG,EAA4B,iBAAX3I,EAAsBA,EAAS,KAEtD,IAAKuE,IAAQ,eAAezD,KAAKd,MAI5BuE,IACHA,EAAO,IAAIivB,EAAQ/1B,KAAMkL,GACzBhL,EAAEF,MAAM8G,KAAK7B,GAAU6B,IAGH,iBAAXvE,GAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,iDA3FT,MAxDwB,wCA4DxB,OAAO2G,gCAIP,OAAOlE,oCAIP,OAAOC,iCAIP,OAAOG,qCAIP,OAAOF,uCAIP,OAAOuE,UA5BWopB,IA2GtB3yB,EAAEgE,GAAGc,IAAQ+wB,GAAQpvB,iBACrBzG,EAAEgE,GAAGc,IAAMmC,YAAc4uB,GACzB71B,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACN4wB,GAAQpvB,kBCpKjB,IAAM3B,GAAqB,YAErBC,GAAqB,eACrBC,GAAS,IAAgBD,GAEzBE,GAAqBjF,EAAEgE,GAAGc,IAE1BkE,GAAU,CACd0Y,OAAS,GACTqU,OAAS,OACTvxB,OAAS,IAGL+E,GAAc,CAClBmY,OAAS,SACTqU,OAAS,SACTvxB,OAAS,oBAGLU,GAAQ,CACZ8wB,SAAQ,WAAmBhxB,GAC3BixB,OAAM,SAAmBjxB,GACzBsC,cAAa,OAAUtC,GAlBE,aAqBrBM,GACY,gBADZA,GAGY,SAGZ8B,GACc,sBADdA,GAGc,oBAHdA,GAIc,YAJdA,GAKc,YALdA,GAMc,mBANdA,GAOc,YAPdA,GAQc,iBARdA,GASc,mBAGd8uB,GACO,SADPA,GAEO,WASPC,cACJ,SAAAA,EAAYv1B,EAASyB,GAAQ,IAAAxC,EAAAC,KAC3BA,KAAK0F,SAAiB5E,EACtBd,KAAKs2B,eAAqC,SAApBx1B,EAAQqH,QAAqBO,OAAS5H,EAC5Dd,KAAKkL,QAAiBlL,KAAKmL,WAAW5I,GACtCvC,KAAK+Q,UAAoB/Q,KAAKkL,QAAQxG,OAAhB,IAA0B4C,GAA1B,IACGtH,KAAKkL,QAAQxG,OADhB,IAC0B4C,GAD1B,IAEGtH,KAAKkL,QAAQxG,OAFhB,IAE0B4C,GAChDtH,KAAKu2B,SAAiB,GACtBv2B,KAAKw2B,SAAiB,GACtBx2B,KAAKy2B,cAAiB,KACtBz2B,KAAK02B,cAAiB,EAEtBx2B,EAAEF,KAAKs2B,gBAAgBpvB,GAAG9B,GAAM+wB,OAAQ,SAAC9xB,GAAD,OAAWtE,EAAK42B,SAAStyB,KAEjErE,KAAK42B,UACL52B,KAAK22B,sCAePC,QAAA,WAAU,IAAA5pB,EAAAhN,KACF62B,EAAa72B,KAAKs2B,iBAAmBt2B,KAAKs2B,eAAe5tB,OAC3D0tB,GAAsBA,GAEpBU,EAAuC,SAAxB92B,KAAKkL,QAAQ+qB,OAC9BY,EAAa72B,KAAKkL,QAAQ+qB,OAExBc,EAAaD,IAAiBV,GAChCp2B,KAAKg3B,gBAAkB,EAE3Bh3B,KAAKu2B,SAAW,GAChBv2B,KAAKw2B,SAAW,GAEhBx2B,KAAK02B,cAAgB12B,KAAKi3B,mBAEV,GAAGruB,MAAM/F,KAAKlC,SAASkI,iBAAiB7I,KAAK+Q,YAG1DmK,IAAI,SAACpa,GACJ,IAAI4D,EACEwyB,EAAiB92B,EAAKS,uBAAuBC,GAMnD,GAJIo2B,IACFxyB,EAAS/D,SAASQ,cAAc+1B,IAG9BxyB,EAAQ,CACV,IAAMyyB,EAAYzyB,EAAOsN,wBACzB,GAAImlB,EAAUpgB,OAASogB,EAAUrgB,OAE/B,MAAO,CACL5W,EAAEwE,GAAQoyB,KAAgB3e,IAAM4e,EAChCG,GAIN,OAAO,OAERrmB,OAAO,SAACsZ,GAAD,OAAUA,IACjB7O,KAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAKC,EAAE,KACxBmC,QAAQ,SAACwM,GACRnd,EAAKupB,SAASvlB,KAAKmZ,EAAK,IACxBnd,EAAKwpB,SAASxlB,KAAKmZ,EAAK,SAI9BlkB,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAC5B/E,EAAEF,KAAKs2B,gBAAgB3pB,IAAIzH,IAE3BlF,KAAK0F,SAAiB,KACtB1F,KAAKs2B,eAAiB,KACtBt2B,KAAKkL,QAAiB,KACtBlL,KAAK+Q,UAAiB,KACtB/Q,KAAKu2B,SAAiB,KACtBv2B,KAAKw2B,SAAiB,KACtBx2B,KAAKy2B,cAAiB,KACtBz2B,KAAK02B,cAAiB,QAKxBvrB,WAAA,SAAW5I,GAMT,GAA6B,iBAL7BA,EAAMqK,EAAA,GACD1D,GADC,GAEiB,iBAAX3G,GAAuBA,EAASA,EAAS,KAGnCmC,OAAqB,CACrC,IAAI+L,EAAKvQ,EAAEqC,EAAOmC,QAAQmN,KAAK,MAC1BpB,IACHA,EAAKrQ,EAAKG,OAAOyE,IACjB9E,EAAEqC,EAAOmC,QAAQmN,KAAK,KAAMpB,IAE9BlO,EAAOmC,OAAP,IAAoB+L,EAKtB,OAFArQ,EAAKiC,gBAAgB2C,GAAMzC,EAAQkH,IAE5BlH,KAGTy0B,cAAA,WACE,OAAOh3B,KAAKs2B,iBAAmB5tB,OAC3B1I,KAAKs2B,eAAec,YAAcp3B,KAAKs2B,eAAeje,aAG5D4e,iBAAA,WACE,OAAOj3B,KAAKs2B,eAAe9I,cAAgB/sB,KAAKmW,IAC9CjW,SAASmT,KAAK0Z,aACd7sB,SAAS8C,gBAAgB+pB,iBAI7B6J,iBAAA,WACE,OAAOr3B,KAAKs2B,iBAAmB5tB,OAC3BA,OAAO4R,YAActa,KAAKs2B,eAAetkB,wBAAwB8E,UAGvE6f,SAAA,WACE,IAAMte,EAAerY,KAAKg3B,gBAAkBh3B,KAAKkL,QAAQ0W,OACnD4L,EAAextB,KAAKi3B,mBACpBK,EAAet3B,KAAKkL,QAAQ0W,OAChC4L,EACAxtB,KAAKq3B,mBAMP,GAJIr3B,KAAK02B,gBAAkBlJ,GACzBxtB,KAAK42B,UAGUU,GAAbjf,EAAJ,CACE,IAAM3T,EAAS1E,KAAKw2B,SAASx2B,KAAKw2B,SAASxtB,OAAS,GAEhDhJ,KAAKy2B,gBAAkB/xB,GACzB1E,KAAKu3B,UAAU7yB,OAJnB,CASA,GAAI1E,KAAKy2B,eAAiBpe,EAAYrY,KAAKu2B,SAAS,IAAyB,EAAnBv2B,KAAKu2B,SAAS,GAGtE,OAFAv2B,KAAKy2B,cAAgB,UACrBz2B,KAAKw3B,SAKP,IADA,IACS1uB,EADY9I,KAAKu2B,SAASvtB,OACRF,KAAM,CACR9I,KAAKy2B,gBAAkBz2B,KAAKw2B,SAAS1tB,IACxDuP,GAAarY,KAAKu2B,SAASztB,KACM,oBAAzB9I,KAAKu2B,SAASztB,EAAI,IACtBuP,EAAYrY,KAAKu2B,SAASztB,EAAI,KAGpC9I,KAAKu3B,UAAUv3B,KAAKw2B,SAAS1tB,SAKnCyuB,UAAA,SAAU7yB,GACR1E,KAAKy2B,cAAgB/xB,EAErB1E,KAAKw3B,SAEL,IAAMC,EAAUz3B,KAAK+Q,UAClBnP,MAAM,KACNsZ,IAAI,SAACna,GAAD,OAAiBA,EAAjB,iBAA0C2D,EAA1C,MAAsD3D,EAAtD,UAAwE2D,EAAxE,OAEDgzB,EAAQx3B,EAAE,GAAG0I,MAAM/F,KAAKlC,SAASkI,iBAAiB4uB,EAAQ9B,KAAK,QAEjE+B,EAAMnxB,SAASf,KACjBkyB,EAAMtxB,QAAQkB,IAAmB2V,KAAK3V,IAA0ByH,SAASvJ,IACzEkyB,EAAM3oB,SAASvJ,MAGfkyB,EAAM3oB,SAASvJ,IAGfkyB,EAAMC,QAAQrwB,IAAyB0E,KAAQ1E,GAA/C,KAAsEA,IAAuByH,SAASvJ,IAEtGkyB,EAAMC,QAAQrwB,IAAyB0E,KAAK1E,IAAoBwH,SAASxH,IAAoByH,SAASvJ,KAGxGtF,EAAEF,KAAKs2B,gBAAgBv0B,QAAQqD,GAAM8wB,SAAU,CAC7C7nB,cAAe3J,OAInB8yB,OAAA,WACE,GAAG5uB,MAAM/F,KAAKlC,SAASkI,iBAAiB7I,KAAK+Q,YAC1CF,OAAO,SAACmE,GAAD,OAAUA,EAAKhN,UAAUC,SAASzC,MACzCmY,QAAQ,SAAC3I,GAAD,OAAUA,EAAKhN,UAAUtB,OAAOlB,SAKtCmB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAIE,EAAO5G,EAAEF,MAAM8G,KAAK7B,IAQxB,GALK6B,IACHA,EAAO,IAAIuvB,EAAUr2B,KAHW,iBAAXuC,GAAuBA,GAI5CrC,EAAEF,MAAM8G,KAAK7B,GAAU6B,IAGH,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,iDAtMT,MA3EuB,wCA+EvB,OAAO2G,YA8MXhJ,EAAEwI,QAAQxB,GAAG9B,GAAMoC,cAAe,WAIhC,IAHA,IAAMowB,EAAa,GAAGhvB,MAAM/F,KAAKlC,SAASkI,iBAAiBvB,KAGlDwB,EAFgB8uB,EAAW5uB,OAELF,KAAM,CACnC,IAAM+uB,EAAO33B,EAAE03B,EAAW9uB,IAC1ButB,GAAU1vB,iBAAiB9D,KAAKg1B,EAAMA,EAAK/wB,WAU/C5G,EAAEgE,GAAGc,IAAQqxB,GAAU1vB,iBACvBzG,EAAEgE,GAAGc,IAAMmC,YAAckvB,GACzBn2B,EAAEgE,GAAGc,IAAMoC,WAAa,WAEtB,OADAlH,EAAEgE,GAAGc,IAAQG,GACNkxB,GAAU1vB,kBClTnB,IAEM1B,GAAqB,SACrBC,GAAS,IAAgBD,GAEzBE,GAAqBjF,EAAEgE,GAAF,IAErBkB,GAAQ,CACZ+K,KAAI,OAAoBjL,GACxBkL,OAAM,SAAoBlL,GAC1B+K,KAAI,OAAoB/K,GACxBgL,MAAK,QAAoBhL,GACzBK,eAAc,QAAWL,GARA,aAWrBM,GACY,gBADZA,GAEY,SAFZA,GAGY,WAHZA,GAIY,OAJZA,GAKY,OAGZ8B,GACoB,YADpBA,GAEoB,oBAFpBA,GAGoB,UAHpBA,GAIoB,iBAJpBA,GAKoB,kEALpBA,GAMoB,mBANpBA,GAOoB,2BASpBwwB,cACJ,SAAAA,EAAYh3B,GACVd,KAAK0F,SAAW5E,6BAWlBuQ,KAAA,WAAO,IAAAtR,EAAAC,KACL,KAAIA,KAAK0F,SAAS7B,YACd7D,KAAK0F,SAAS7B,WAAWzB,WAAakT,KAAK6W,cAC3CjsB,EAAEF,KAAK0F,UAAUa,SAASf,KAC1BtF,EAAEF,KAAK0F,UAAUa,SAASf,KAH9B,CAOA,IAAId,EACAqzB,EACEC,EAAc93B,EAAEF,KAAK0F,UAAUU,QAAQkB,IAAyB,GAChEvG,EAAWX,EAAKS,uBAAuBb,KAAK0F,UAElD,GAAIsyB,EAAa,CACf,IAAMC,EAAwC,OAAzBD,EAAYrkB,UAA8C,OAAzBqkB,EAAYrkB,SAAoBrM,GAAqBA,GAE3GywB,GADAA,EAAW73B,EAAEg4B,UAAUh4B,EAAE83B,GAAa/a,KAAKgb,KACvBF,EAAS/uB,OAAS,GAGxC,IAAMsgB,EAAYppB,EAAEkF,MAAMA,GAAM+K,KAAM,CACpC9B,cAAerO,KAAK0F,WAGhBujB,EAAY/oB,EAAEkF,MAAMA,GAAM6K,KAAM,CACpC5B,cAAe0pB,IASjB,GANIA,GACF73B,EAAE63B,GAAUh2B,QAAQunB,GAGtBppB,EAAEF,KAAK0F,UAAU3D,QAAQknB,IAErBA,EAAUljB,uBACVujB,EAAUvjB,qBADd,CAKIhF,IACF2D,EAAS/D,SAASQ,cAAcJ,IAGlCf,KAAKu3B,UACHv3B,KAAK0F,SACLsyB,GAGF,IAAMxD,EAAW,WACf,IAAM2D,EAAcj4B,EAAEkF,MAAMA,GAAMgL,OAAQ,CACxC/B,cAAetO,EAAK2F,WAGhB6mB,EAAarsB,EAAEkF,MAAMA,GAAM8K,MAAO,CACtC7B,cAAe0pB,IAGjB73B,EAAE63B,GAAUh2B,QAAQo2B,GACpBj4B,EAAEH,EAAK2F,UAAU3D,QAAQwqB,IAGvB7nB,EACF1E,KAAKu3B,UAAU7yB,EAAQA,EAAOb,WAAY2wB,GAE1CA,SAIJvuB,QAAA,WACE/F,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAC5BjF,KAAK0F,SAAW,QAKlB6xB,UAAA,SAAUz2B,EAASmxB,EAAWjT,GAOX,SAAXwV,IAAW,OAAMxnB,EAAKorB,oBAC1Bt3B,EACAu3B,EACArZ,GAVoC,IAAAhS,EAAAhN,KAKhCq4B,IAJiBpG,GAAqC,OAAvBA,EAAUte,UAA4C,OAAvBse,EAAUte,SAE1EzT,EAAE+xB,GAAWnjB,SAASxH,IADtBpH,EAAE+xB,GAAWhV,KAAK3V,KAGQ,GACxB4K,EAAkB8M,GAAaqZ,GAAUn4B,EAAEm4B,GAAQ9xB,SAASf,IAOlE,GAAI6yB,GAAUnmB,EAAiB,CAC7B,IAAM5Q,EAAqBlB,EAAKiB,iCAAiCg3B,GAEjEn4B,EAAEm4B,GACC/xB,YAAYd,IACZrF,IAAIC,EAAKR,eAAgB40B,GACzBpwB,qBAAqB9C,QAExBkzB,OAIJ4D,oBAAA,SAAoBt3B,EAASu3B,EAAQrZ,GACnC,GAAIqZ,EAAQ,CACVn4B,EAAEm4B,GAAQ/xB,YAAYd,IAEtB,IAAM8yB,EAAgBp4B,EAAEm4B,EAAOx0B,YAAYoZ,KACzC3V,IACA,GAEEgxB,GACFp4B,EAAEo4B,GAAehyB,YAAYd,IAGK,QAAhC6yB,EAAOr3B,aAAa,SACtBq3B,EAAO/vB,aAAa,iBAAiB,GAezC,GAXApI,EAAEY,GAASiO,SAASvJ,IACiB,QAAjC1E,EAAQE,aAAa,SACvBF,EAAQwH,aAAa,iBAAiB,GAGxClI,EAAKyB,OAAOf,GAERA,EAAQkH,UAAUC,SAASzC,KAC7B1E,EAAQkH,UAAUiB,IAAIzD,IAGpB1E,EAAQ+C,YAAc3D,EAAEY,EAAQ+C,YAAY0C,SAASf,IAA0B,CACjF,IAAM+yB,EAAkBr4B,EAAEY,GAASsF,QAAQkB,IAAmB,GAE9D,GAAIixB,EAAiB,CACnB,IAAMC,EAAqB,GAAG5vB,MAAM/F,KAAK01B,EAAgB1vB,iBAAiBvB,KAE1EpH,EAAEs4B,GAAoBzpB,SAASvJ,IAGjC1E,EAAQwH,aAAa,iBAAiB,GAGpC0W,GACFA,OAMGrY,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAM0L,EAAQpS,EAAEF,MACZ8G,EAAOwL,EAAMxL,KAAK7B,IAOtB,GALK6B,IACHA,EAAO,IAAIgxB,EAAI93B,MACfsS,EAAMxL,KAAK7B,GAAU6B,IAGD,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAERuE,EAAKvE,iDArKT,MA9CuB,iBA+N3BrC,EAAES,UACCuG,GAAG9B,GAAMG,eAAgB+B,GAAsB,SAAUjD,GACxDA,EAAM4C,iBACN6wB,GAAInxB,iBAAiB9D,KAAK3C,EAAEF,MAAO,UASvCE,EAAEgE,GAAF,IAAa4zB,GAAInxB,iBACjBzG,EAAEgE,GAAF,IAAWiD,YAAc2wB,GACzB53B,EAAEgE,GAAF,IAAWkD,WAAa,WAEtB,OADAlH,EAAEgE,GAAF,IAAaiB,GACN2yB,GAAInxB,kBChPb,IAAM3B,GAAqB,QAErBC,GAAqB,WACrBC,GAAS,IAAgBD,GACzBE,GAAqBjF,EAAEgE,GAAGc,IAE1BI,GAAQ,CACZolB,cAAa,gBAAmBtlB,GAChCiL,KAAI,OAAmBjL,GACvBkL,OAAM,SAAmBlL,GACzB+K,KAAI,OAAmB/K,GACvBgL,MAAK,QAAmBhL,IAGpBM,GACM,OADNA,GAEM,OAFNA,GAGM,OAHNA,GAIM,UAGNiE,GAAc,CAClBooB,UAAY,UACZ4G,SAAY,UACZzG,MAAY,UAGR9oB,GAAU,CACd2oB,WAAY,EACZ4G,UAAY,EACZzG,MAAY,KAGR1qB,GACW,yBASXoxB,cACJ,SAAAA,EAAY53B,EAASyB,GACnBvC,KAAK0F,SAAW5E,EAChBd,KAAKkL,QAAWlL,KAAKmL,WAAW5I,GAChCvC,KAAK+yB,SAAW,KAChB/yB,KAAKmzB,2CAmBP9hB,KAAA,WAAO,IAAAtR,EAAAC,KACCipB,EAAY/oB,EAAEkF,MAAMA,GAAM6K,MAGhC,GADA/P,EAAEF,KAAK0F,UAAU3D,QAAQknB,IACrBA,EAAUljB,qBAAd,CAII/F,KAAKkL,QAAQ2mB,WACf7xB,KAAK0F,SAASsC,UAAUiB,IAAIzD,IAG9B,IAAMgvB,EAAW,WACfz0B,EAAK2F,SAASsC,UAAUtB,OAAOlB,IAC/BzF,EAAK2F,SAASsC,UAAUiB,IAAIzD,IAE5BtF,EAAEH,EAAK2F,UAAU3D,QAAQqD,GAAM8K,OAE3BnQ,EAAKmL,QAAQutB,WACf14B,EAAKgzB,SAAW1yB,WAAW,WACzBN,EAAKqR,QACJrR,EAAKmL,QAAQ8mB,SAOpB,GAHAhyB,KAAK0F,SAASsC,UAAUtB,OAAOlB,IAC/BpF,EAAKyB,OAAO7B,KAAK0F,UACjB1F,KAAK0F,SAASsC,UAAUiB,IAAIzD,IACxBxF,KAAKkL,QAAQ2mB,UAAW,CAC1B,IAAMvwB,EAAqBlB,EAAKiB,iCAAiCrB,KAAK0F,UAEtExF,EAAEF,KAAK0F,UACJvF,IAAIC,EAAKR,eAAgB40B,GACzBpwB,qBAAqB9C,QAExBkzB,QAIJpjB,KAAA,WACE,GAAKpR,KAAK0F,SAASsC,UAAUC,SAASzC,IAAtC,CAIA,IAAM8jB,EAAYppB,EAAEkF,MAAMA,GAAM+K,MAEhCjQ,EAAEF,KAAK0F,UAAU3D,QAAQunB,GACrBA,EAAUvjB,sBAId/F,KAAK24B,aAGP1yB,QAAA,WACEyH,aAAa1N,KAAK+yB,UAClB/yB,KAAK+yB,SAAW,KAEZ/yB,KAAK0F,SAASsC,UAAUC,SAASzC,KACnCxF,KAAK0F,SAASsC,UAAUtB,OAAOlB,IAGjCtF,EAAEF,KAAK0F,UAAUiH,IAAIvH,GAAMolB,eAE3BtqB,EAAEgG,WAAWlG,KAAK0F,SAAUT,IAC5BjF,KAAK0F,SAAW,KAChB1F,KAAKkL,QAAW,QAKlBC,WAAA,SAAW5I,GAaT,OAZAA,EAAMqK,EAAA,GACD1D,GADC,GAEDhJ,EAAEF,KAAK0F,UAAUoB,OAFhB,GAGiB,iBAAXvE,GAAuBA,EAASA,EAAS,IAGrDnC,EAAKiC,gBACH2C,GACAzC,EACAvC,KAAKypB,YAAYhgB,aAGZlH,KAGT4wB,cAAA,WAAgB,IAAAnmB,EAAAhN,KACdE,EAAEF,KAAK0F,UAAUwB,GACf9B,GAAMolB,cACNljB,GACA,WAAA,OAAM0F,EAAKoE,YAIfunB,OAAA,WACmB,SAAXnE,IACJrnB,EAAKzH,SAASsC,UAAUiB,IAAIzD,IAC5BtF,EAAEiN,EAAKzH,UAAU3D,QAAQqD,GAAMgL,QAH1B,IAAAjD,EAAAnN,KAOP,GADAA,KAAK0F,SAASsC,UAAUtB,OAAOlB,IAC3BxF,KAAKkL,QAAQ2mB,UAAW,CAC1B,IAAMvwB,EAAqBlB,EAAKiB,iCAAiCrB,KAAK0F,UAEtExF,EAAEF,KAAK0F,UACJvF,IAAIC,EAAKR,eAAgB40B,GACzBpwB,qBAAqB9C,QAExBkzB,OAMG7tB,iBAAP,SAAwBpE,GACtB,OAAOvC,KAAK4G,KAAK,WACf,IAAMC,EAAW3G,EAAEF,MACf8G,EAAaD,EAASC,KAAK7B,IAQ/B,GALK6B,IACHA,EAAO,IAAI4xB,EAAM14B,KAHgB,iBAAXuC,GAAuBA,GAI7CsE,EAASC,KAAK7B,GAAU6B,IAGJ,iBAAXvE,EAAqB,CAC9B,GAA4B,oBAAjBuE,EAAKvE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRuE,EAAKvE,GAAQvC,kDAhJjB,MArDuB,4CAyDvB,OAAOyJ,mCAIP,OAAOP,YAoJXhJ,EAAEgE,GAAGc,IAAoB0zB,GAAM/xB,iBAC/BzG,EAAEgE,GAAGc,IAAMmC,YAAcuxB,GACzBx4B,EAAEgE,GAAGc,IAAMoC,WAAc,WAEvB,OADAlH,EAAEgE,GAAGc,IAAQG,GACNuzB,GAAM/xB","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLES : '[data-toggle=\"buttons\"]',\n DATA_TOGGLE : '[data-toggle=\"button\"]',\n DATA_TOGGLES_BUTTONS : '[data-toggle=\"buttons\"] .btn',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLES\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n } else if (input.type === 'checkbox') {\n if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n }\n } else {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n triggerChangeEvent = false\n }\n\n if (triggerChangeEvent) {\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(Selector.INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n }\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(Event.LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(Selector.INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic',\n popperConfig : null\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string',\n popperConfig : '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n .filter((item) => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDE_PREVENTED : `hidePrevented${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show',\n STATIC : 'modal-static'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEventPrevented = $.Event(Event.HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.defaultPrevented) {\n return\n }\n\n this._element.classList.add(ClassName.STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(ClassName.STATIC)\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n this._hideModalHandler\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n HIDE : 'hide',\n SHOW : 'show',\n SHOWING : 'showing'\n}\n\nconst DefaultType = {\n animation : 'boolean',\n autohide : 'boolean',\n delay : 'number'\n}\n\nconst Default = {\n animation : true,\n autohide : true,\n delay : 500\n}\n\nconst Selector = {\n DATA_DISMISS : '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n const showEvent = $.Event(Event.SHOW)\n\n $(this._element).trigger(showEvent)\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n $(this._element).trigger(Event.SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n Util.reflow(this._element)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._close()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n $(this._element).off(Event.CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide()\n )\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n $(this._element).trigger(Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../js/src/dom/selector-engine.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["SelectorEngine","find","selector","element","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","nodeType","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","getUID","prefix","Math","floor","random","getElementById","getSelector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","classList","contains","disabled","hasAttribute","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","VERSION","Error","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_destroyElement","each","data","getOrCreateInstance","alertInstance","handleDismiss","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","tagName","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","style","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","selected","triggerArray","isOpen","triggerData","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","styles","assign","effect","_ref2","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","width","height","x","y","getLayoutRect","clientRect","offsetWidth","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","userAgent","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","round","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","computeStyles$1","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","_element$ownerDocumen","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","DEFAULT_OPTIONS","modifiers","areValidElements","_len","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","map","visited","result","modifier","dep","depModifier","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","Popper","_getPopperConfig","isDisplayStatic","focus","_completeHide","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","items","dropdownInterface","toggles","context","composedPath","isMenuTarget","clickEvent","isActive","stopPropagation","getToggleButton","clearMenus","click","dataApiKeydownHandler","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","styleProp","scrollbarWidth","_applyManipulationCallback","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","className","appendChild","Modal","_dialog","_backdrop","_initializeBackDrop","_isShown","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_enforceFocus","_triggerBackdropTransition","_resetAdjustments","currentTarget","isModalOverflowing","isBodyOverflowing","paddingLeft","paddingRight","showEvent","Offcanvas","visibility","_enforceFocusOnElement","blur","allReadyOpen","el","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","spy","Tab","listElement","itemSelector","hideEvent","complete","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.2'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(element), element, isAnimated)\n }\n\n _destroyElement(element) {\n element.remove()\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n parent = getElement(parent)\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Collapse.getInstance(element)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Collapse.getInstance(element)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n isDisabled,\n isElement,\n isVisible,\n isRTL,\n noop,\n getNextActiveElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (isDisabled(this._element)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n if (isActive) {\n this.hide()\n return\n }\n\n this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n const data = Dropdown.getOrCreateInstance(element, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus()\n Dropdown.clearMenus()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n getToggleButton().click()\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event && ['A', 'AREA'].includes(event.target.tagName)) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n this._enforceFocusOnElement(this._element)\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n super.dispose()\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.remove()\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this._config.title === 'function' ?\n this._config.title.call(this._element) :\n this._config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this._config) {\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n this.tip = super.getTipElement()\n\n if (!this.getTitle()) {\n SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove()\n }\n\n if (!this._getContent()) {\n SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove()\n }\n\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this._config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"]}
\ No newline at end of file
diff --git a/site/docs/3.5.0/js/vendor/docsearch.min.js b/site/docs/3.5.0/js/vendor/docsearch.min.js
new file mode 100644
index 0000000..efb45b8
--- /dev/null
+++ b/site/docs/3.5.0/js/vendor/docsearch.min.js
@@ -0,0 +1,2 @@
+/*! docsearch 2.6.3 | © Algolia | github.com/algolia/docsearch */
+(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define([],factory);else if(typeof exports==="object")exports["docsearch"]=factory();else root["docsearch"]=factory()})(typeof self!=="undefined"?self:this,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=22)}([function(module,exports,__webpack_require__){"use strict";var DOM=__webpack_require__(1);function escapeRegExp(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}module.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(agentString){if(agentString===undefined){agentString=navigator.userAgent}if(/(msie|trident)/i.test(agentString)){var match=agentString.match(/(msie |rv:)(\d+(.\d+)?)/i);if(match){return match[2]}}return false},escapeRegExChars:function(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(obj){return typeof obj==="number"},toStr:function toStr(s){return s===undefined||s===null?"":s+""},cloneDeep:function cloneDeep(obj){var clone=this.mixin({},obj);var self=this;this.each(clone,function(value,key){if(value){if(self.isArray(value)){clone[key]=[].concat(value)}else if(self.isObject(value)){clone[key]=self.cloneDeep(value)}}});return clone},error:function(msg){throw new Error(msg)},every:function(obj,test){var result=true;if(!obj){return result}this.each(obj,function(val,key){if(result){result=test.call(null,val,key,obj)&&result}});return!!result},any:function(obj,test){var found=false;if(!obj){return found}this.each(obj,function(val,key){if(test.call(null,val,key,obj)){found=true;return false}});return found},getUniqueId:function(){var counter=0;return function(){return counter++}}(),templatify:function templatify(obj){if(this.isFunction(obj)){return obj}var $template=DOM.element(obj);if($template.prop("tagName")==="SCRIPT"){return function template(){return $template.text()}}return function template(){return String(obj)}},defer:function(fn){setTimeout(fn,0)},noop:function(){},formatPrefix:function(prefix,noPrefix){return noPrefix?"":prefix+"-"},className:function(prefix,clazz,skipDot){return(skipDot?"":".")+prefix+clazz},escapeHighlightedString:function(str,highlightPreTag,highlightPostTag){highlightPreTag=highlightPreTag||"<em>";var pre=document.createElement("div");pre.appendChild(document.createTextNode(highlightPreTag));highlightPostTag=highlightPostTag||"</em>";var post=document.createElement("div");post.appendChild(document.createTextNode(highlightPostTag));var div=document.createElement("div");div.appendChild(document.createTextNode(str));return div.innerHTML.replace(RegExp(escapeRegExp(pre.innerHTML),"g"),highlightPreTag).replace(RegExp(escapeRegExp(post.innerHTML),"g"),highlightPostTag)}}},function(module,exports,__webpack_require__){"use strict";module.exports={element:null}},function(module,exports){var hasOwn=Object.prototype.hasOwnProperty;var toString=Object.prototype.toString;module.exports=function forEach(obj,fn,ctx){if(toString.call(fn)!=="[object Function]"){throw new TypeError("iterator must be a function")}var l=obj.length;if(l===+l){for(var i=0;i<l;i++){fn.call(ctx,obj[i],i,obj)}}else{for(var k in obj){if(hasOwn.call(obj,k)){fn.call(ctx,obj[k],k,obj)}}}}},function(module,exports){module.exports=function clone(obj){return JSON.parse(JSON.stringify(obj))}},function(module,exports){var g;g=function(){return this}();try{g=g||Function("return this")()||(1,eval)("this")}catch(e){if(typeof window==="object")g=window}module.exports=g},function(module,exports,__webpack_require__){"use strict";var inherits=__webpack_require__(12);function AlgoliaSearchError(message,extraProperties){var forEach=__webpack_require__(2);var error=this;if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,this.constructor)}else{error.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old"}this.name="AlgoliaSearchError";this.message=message||"Unknown error";if(extraProperties){forEach(extraProperties,function addToErrorObject(value,key){error[key]=value})}}inherits(AlgoliaSearchError,Error);function createCustomError(name,message){function AlgoliaSearchCustomError(){var args=Array.prototype.slice.call(arguments,0);if(typeof args[0]!=="string"){args.unshift(message)}AlgoliaSearchError.apply(this,args);this.name="AlgoliaSearch"+name+"Error"}inherits(AlgoliaSearchCustomError,AlgoliaSearchError);return AlgoliaSearchCustomError}module.exports={AlgoliaSearchError:AlgoliaSearchError,UnparsableJSON:createCustomError("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:createCustomError("RequestTimeout","Request timedout before getting a response"),Network:createCustomError("Network","Network issue, see err.more for details"),JSONPScriptFail:createCustomError("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:createCustomError("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:createCustomError("Unknown","Unknown error occured")}},function(module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},function(module,exports,__webpack_require__){var foreach=__webpack_require__(2);module.exports=function map(arr,fn){var newArr=[];foreach(arr,function(item,itemIndex){newArr.push(fn(item,itemIndex,arr))});return newArr}},function(module,exports,__webpack_require__){(function(process){exports=module.exports=__webpack_require__(39);exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:localstorage();exports.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function useColors(){if(typeof window!=="undefined"&&window.process&&window.process.type==="renderer"){return true}return typeof document!=="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!=="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}exports.formatters.j=function(v){try{return JSON.stringify(v)}catch(err){return"[UnexpectedJSONParseError]: "+err.message}};function formatArgs(args){var useColors=this.useColors;args[0]=(useColors?"%c":"")+this.namespace+(useColors?" %c":" ")+args[0]+(useColors?"%c ":" ")+"+"+exports.humanize(this.diff);if(!useColors)return;var c="color: "+this.color;args.splice(1,0,c,"color: inherit");var index=0;var lastC=0;args[0].replace(/%[a-zA-Z%]/g,function(match){if("%%"===match)return;index++;if("%c"===match){lastC=index}});args.splice(lastC,0,c)}function log(){return"object"===typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function save(namespaces){try{if(null==namespaces){exports.storage.removeItem("debug")}else{exports.storage.debug=namespaces}}catch(e){}}function load(){var r;try{r=exports.storage.debug}catch(e){}if(!r&&typeof process!=="undefined"&&"env"in process){r=Object({NODE_ENV:"production"}).DEBUG}return r}exports.enable(load());function localstorage(){try{return window.localStorage}catch(e){}}}).call(exports,__webpack_require__(9))},function(module,exports){var process=module.exports={};var cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function"){cachedSetTimeout=setTimeout}else{cachedSetTimeout=defaultSetTimout}}catch(e){cachedSetTimeout=defaultSetTimout}try{if(typeof clearTimeout==="function"){cachedClearTimeout=clearTimeout}else{cachedClearTimeout=defaultClearTimeout}}catch(e){cachedClearTimeout=defaultClearTimeout}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTimeout(fun,0)}if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0)}try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){return clearTimeout(marker)}if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker)}try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;runClearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[]};process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},function(module,exports,__webpack_require__){"use strict";var immediate=__webpack_require__(53);var splitter=/\s+/;module.exports={onSync:onSync,onAsync:onAsync,off:off,trigger:trigger};function on(method,types,cb,context){var type;if(!cb){return this}types=types.split(splitter);cb=context?bindContext(cb,context):cb;this._callbacks=this._callbacks||{};while(type=types.shift()){this._callbacks[type]=this._callbacks[type]||{sync:[],async:[]};this._callbacks[type][method].push(cb)}return this}function onAsync(types,cb,context){return on.call(this,"async",types,cb,context)}function onSync(types,cb,context){return on.call(this,"sync",types,cb,context)}function off(types){var type;if(!this._callbacks){return this}types=types.split(splitter);while(type=types.shift()){delete this._callbacks[type]}return this}function trigger(types){var type;var callbacks;var args;var syncFlush;var asyncFlush;if(!this._callbacks){return this}types=types.split(splitter);args=[].slice.call(arguments,1);while((type=types.shift())&&(callbacks=this._callbacks[type])){syncFlush=getFlush(callbacks.sync,this,[type].concat(args));asyncFlush=getFlush(callbacks.async,this,[type].concat(args));if(syncFlush()){immediate(asyncFlush)}}return this}function getFlush(callbacks,context,args){return flush;function flush(){var cancelled;for(var i=0,len=callbacks.length;!cancelled&&i<len;i+=1){cancelled=callbacks[i].apply(context,args)===false}return!cancelled}}function bindContext(fn,context){return fn.bind?fn.bind(context):function(){fn.apply(context,[].slice.call(arguments,0))}}},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(0);var css={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:false,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"}}};if(_.isMsie()){_.mixin(css.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"})}if(_.isMsie()&&_.isMsie()<=7){_.mixin(css.input,{marginTop:"-1px"})}module.exports=css},function(module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},function(module,exports,__webpack_require__){module.exports=buildSearchMethod;var errors=__webpack_require__(5);function buildSearchMethod(queryParam,url){return function search(query,args,callback){if(typeof query==="function"&&typeof args==="object"||typeof callback==="object"){throw new errors.AlgoliaSearchError("index.search usage is index.search(query, params, cb)")}if(arguments.length===0||typeof query==="function"){callback=query;query=""}else if(arguments.length===1||typeof args==="function"){callback=args;args=undefined}if(typeof query==="object"&&query!==null){args=query;query=undefined}else if(query===undefined||query===null){query=""}var params="";if(query!==undefined){params+=queryParam+"="+encodeURIComponent(query)}var additionalUA;if(args!==undefined){if(args.additionalUA){additionalUA=args.additionalUA;delete args.additionalUA}params=this.as._getSearchParams(args,params)}return this._search(params,url,callback,additionalUA)}}},function(module,exports,__webpack_require__){module.exports=function omit(obj,test){var keys=__webpack_require__(36);var foreach=__webpack_require__(2);var filtered={};foreach(keys(obj),function doFilter(keyName){if(test(keyName)!==true){filtered[keyName]=obj[keyName]}});return filtered}},function(module,exports){(function(global,factory){module.exports=factory(global)})(window,function(window){var Zepto=function(){var undefined,key,$,classList,emptyArray=[],concat=emptyArray.concat,filter=emptyArray.filter,slice=emptyArray.slice,document=window.document,elementDisplay={},classCache={},cssNumber={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},fragmentRE=/^\s*<(\w+|!)[^>]*>/,singleTagRE=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,tagExpanderRE=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rootNodeRE=/^(?:body|html)$/i,capitalRE=/([A-Z])/g,methodAttributes=["val","css","html","text","data","width","height","offset"],adjacencyOperators=["after","prepend","before","append"],table=document.createElement("table"),tableRow=document.createElement("tr"),containers={tr:document.createElement("tbody"),tbody:table,thead:table,tfoot:table,td:tableRow,th:tableRow,"*":document.createElement("div")},readyRE=/complete|loaded|interactive/,simpleSelectorRE=/^[\w-]*$/,class2type={},toString=class2type.toString,zepto={},camelize,uniq,tempParent=document.createElement("div"),propMap={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},isArray=Array.isArray||function(object){return object instanceof Array};zepto.matches=function(element,selector){if(!selector||!element||element.nodeType!==1)return false;var matchesSelector=element.matches||element.webkitMatchesSelector||element.mozMatchesSelector||element.oMatchesSelector||element.matchesSelector;if(matchesSelector)return matchesSelector.call(element,selector);var match,parent=element.parentNode,temp=!parent;if(temp)(parent=tempParent).appendChild(element);match=~zepto.qsa(parent,selector).indexOf(element);temp&&tempParent.removeChild(element);return match};function type(obj){return obj==null?String(obj):class2type[toString.call(obj)]||"object"}function isFunction(value){return type(value)=="function"}function isWindow(obj){return obj!=null&&obj==obj.window}function isDocument(obj){return obj!=null&&obj.nodeType==obj.DOCUMENT_NODE}function isObject(obj){return type(obj)=="object"}function isPlainObject(obj){return isObject(obj)&&!isWindow(obj)&&Object.getPrototypeOf(obj)==Object.prototype}function likeArray(obj){var length=!!obj&&"length"in obj&&obj.length,type=$.type(obj);return"function"!=type&&!isWindow(obj)&&("array"==type||length===0||typeof length=="number"&&length>0&&length-1 in obj)}function compact(array){return filter.call(array,function(item){return item!=null})}function flatten(array){return array.length>0?$.fn.concat.apply([],array):array}camelize=function(str){return str.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})};function dasherize(str){return str.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}uniq=function(array){return filter.call(array,function(item,idx){return array.indexOf(item)==idx})};function classRE(name){return name in classCache?classCache[name]:classCache[name]=new RegExp("(^|\\s)"+name+"(\\s|$)")}function maybeAddPx(name,value){return typeof value=="number"&&!cssNumber[dasherize(name)]?value+"px":value}function defaultDisplay(nodeName){var element,display;if(!elementDisplay[nodeName]){element=document.createElement(nodeName);document.body.appendChild(element);display=getComputedStyle(element,"").getPropertyValue("display");element.parentNode.removeChild(element);display=="none"&&(display="block");elementDisplay[nodeName]=display}return elementDisplay[nodeName]}function children(element){return"children"in element?slice.call(element.children):$.map(element.childNodes,function(node){if(node.nodeType==1)return node})}function Z(dom,selector){var i,len=dom?dom.length:0;for(i=0;i<len;i++)this[i]=dom[i];this.length=len;this.selector=selector||""}zepto.fragment=function(html,name,properties){var dom,nodes,container;if(singleTagRE.test(html))dom=$(document.createElement(RegExp.$1));if(!dom){if(html.replace)html=html.replace(tagExpanderRE,"<$1></$2>");if(name===undefined)name=fragmentRE.test(html)&&RegExp.$1;if(!(name in containers))name="*";container=containers[name];container.innerHTML=""+html;dom=$.each(slice.call(container.childNodes),function(){container.removeChild(this)})}if(isPlainObject(properties)){nodes=$(dom);$.each(properties,function(key,value){if(methodAttributes.indexOf(key)>-1)nodes[key](value);else nodes.attr(key,value)})}return dom};zepto.Z=function(dom,selector){return new Z(dom,selector)};zepto.isZ=function(object){return object instanceof zepto.Z};zepto.init=function(selector,context){var dom;if(!selector)return zepto.Z();else if(typeof selector=="string"){selector=selector.trim();if(selector[0]=="<"&&fragmentRE.test(selector))dom=zepto.fragment(selector,RegExp.$1,context),selector=null;else if(context!==undefined)return $(context).find(selector);else dom=zepto.qsa(document,selector)}else if(isFunction(selector))return $(document).ready(selector);else if(zepto.isZ(selector))return selector;else{if(isArray(selector))dom=compact(selector);else if(isObject(selector))dom=[selector],selector=null;else if(fragmentRE.test(selector))dom=zepto.fragment(selector.trim(),RegExp.$1,context),selector=null;else if(context!==undefined)return $(context).find(selector);else dom=zepto.qsa(document,selector)}return zepto.Z(dom,selector)};$=function(selector,context){return zepto.init(selector,context)};function extend(target,source,deep){for(key in source)if(deep&&(isPlainObject(source[key])||isArray(source[key]))){if(isPlainObject(source[key])&&!isPlainObject(target[key]))target[key]={};if(isArray(source[key])&&!isArray(target[key]))target[key]=[];extend(target[key],source[key],deep)}else if(source[key]!==undefined)target[key]=source[key]}$.extend=function(target){var deep,args=slice.call(arguments,1);if(typeof target=="boolean"){deep=target;target=args.shift()}args.forEach(function(arg){extend(target,arg,deep)});return target};zepto.qsa=function(element,selector){var found,maybeID=selector[0]=="#",maybeClass=!maybeID&&selector[0]==".",nameOnly=maybeID||maybeClass?selector.slice(1):selector,isSimple=simpleSelectorRE.test(nameOnly);return element.getElementById&&isSimple&&maybeID?(found=element.getElementById(nameOnly))?[found]:[]:element.nodeType!==1&&element.nodeType!==9&&element.nodeType!==11?[]:slice.call(isSimple&&!maybeID&&element.getElementsByClassName?maybeClass?element.getElementsByClassName(nameOnly):element.getElementsByTagName(selector):element.querySelectorAll(selector))};function filtered(nodes,selector){return selector==null?$(nodes):$(nodes).filter(selector)}$.contains=document.documentElement.contains?function(parent,node){return parent!==node&&parent.contains(node)}:function(parent,node){while(node&&(node=node.parentNode))if(node===parent)return true;return false};function funcArg(context,arg,idx,payload){return isFunction(arg)?arg.call(context,idx,payload):arg}function setAttribute(node,name,value){value==null?node.removeAttribute(name):node.setAttribute(name,value)}function className(node,value){var klass=node.className||"",svg=klass&&klass.baseVal!==undefined;if(value===undefined)return svg?klass.baseVal:klass;svg?klass.baseVal=value:node.className=value}function deserializeValue(value){try{return value?value=="true"||(value=="false"?false:value=="null"?null:+value+""==value?+value:/^[\[\{]/.test(value)?$.parseJSON(value):value):value}catch(e){return value}}$.type=type;$.isFunction=isFunction;$.isWindow=isWindow;$.isArray=isArray;$.isPlainObject=isPlainObject;$.isEmptyObject=function(obj){var name;for(name in obj)return false;return true};$.isNumeric=function(val){var num=Number(val),type=typeof val;return val!=null&&type!="boolean"&&(type!="string"||val.length)&&!isNaN(num)&&isFinite(num)||false};$.inArray=function(elem,array,i){return emptyArray.indexOf.call(array,elem,i)};$.camelCase=camelize;$.trim=function(str){return str==null?"":String.prototype.trim.call(str)};$.uuid=0;$.support={};$.expr={};$.noop=function(){};$.map=function(elements,callback){var value,values=[],i,key;if(likeArray(elements))for(i=0;i<elements.length;i++){value=callback(elements[i],i);if(value!=null)values.push(value)}else for(key in elements){value=callback(elements[key],key);if(value!=null)values.push(value)}return flatten(values)};$.each=function(elements,callback){var i,key;if(likeArray(elements)){for(i=0;i<elements.length;i++)if(callback.call(elements[i],i,elements[i])===false)return elements}else{for(key in elements)if(callback.call(elements[key],key,elements[key])===false)return elements}return elements};$.grep=function(elements,callback){return filter.call(elements,callback)};if(window.JSON)$.parseJSON=JSON.parse;$.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});$.fn={constructor:zepto.Z,length:0,forEach:emptyArray.forEach,reduce:emptyArray.reduce,push:emptyArray.push,sort:emptyArray.sort,splice:emptyArray.splice,indexOf:emptyArray.indexOf,concat:function(){var i,value,args=[];for(i=0;i<arguments.length;i++){value=arguments[i];args[i]=zepto.isZ(value)?value.toArray():value}return concat.apply(zepto.isZ(this)?this.toArray():this,args)},map:function(fn){return $($.map(this,function(el,i){return fn.call(el,i,el)}))},slice:function(){return $(slice.apply(this,arguments))},ready:function(callback){if(readyRE.test(document.readyState)&&document.body)callback($);else document.addEventListener("DOMContentLoaded",function(){callback($)},false);return this},get:function(idx){return idx===undefined?slice.call(this):this[idx>=0?idx:idx+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){if(this.parentNode!=null)this.parentNode.removeChild(this)})},each:function(callback){emptyArray.every.call(this,function(el,idx){return callback.call(el,idx,el)!==false});return this},filter:function(selector){if(isFunction(selector))return this.not(this.not(selector));return $(filter.call(this,function(element){return zepto.matches(element,selector)}))},add:function(selector,context){return $(uniq(this.concat($(selector,context))))},is:function(selector){return this.length>0&&zepto.matches(this[0],selector)},not:function(selector){var nodes=[];if(isFunction(selector)&&selector.call!==undefined)this.each(function(idx){if(!selector.call(this,idx))nodes.push(this)});else{var excludes=typeof selector=="string"?this.filter(selector):likeArray(selector)&&isFunction(selector.item)?slice.call(selector):$(selector);this.forEach(function(el){if(excludes.indexOf(el)<0)nodes.push(el)})}return $(nodes)},has:function(selector){return this.filter(function(){return isObject(selector)?$.contains(this,selector):$(this).find(selector).size()})},eq:function(idx){return idx===-1?this.slice(idx):this.slice(idx,+idx+1)},first:function(){var el=this[0];return el&&!isObject(el)?el:$(el)},last:function(){var el=this[this.length-1];return el&&!isObject(el)?el:$(el)},find:function(selector){var result,$this=this;if(!selector)result=$();else if(typeof selector=="object")result=$(selector).filter(function(){var node=this;return emptyArray.some.call($this,function(parent){return $.contains(parent,node)})});else if(this.length==1)result=$(zepto.qsa(this[0],selector));else result=this.map(function(){return zepto.qsa(this,selector)});return result},closest:function(selector,context){var nodes=[],collection=typeof selector=="object"&&$(selector);this.each(function(_,node){while(node&&!(collection?collection.indexOf(node)>=0:zepto.matches(node,selector)))node=node!==context&&!isDocument(node)&&node.parentNode;if(node&&nodes.indexOf(node)<0)nodes.push(node)});return $(nodes)},parents:function(selector){var ancestors=[],nodes=this;while(nodes.length>0)nodes=$.map(nodes,function(node){if((node=node.parentNode)&&!isDocument(node)&&ancestors.indexOf(node)<0){ancestors.push(node);return node}});return filtered(ancestors,selector)},parent:function(selector){return filtered(uniq(this.pluck("parentNode")),selector)},children:function(selector){return filtered(this.map(function(){return children(this)}),selector)},contents:function(){return this.map(function(){return this.contentDocument||slice.call(this.childNodes)})},siblings:function(selector){return filtered(this.map(function(i,el){return filter.call(children(el.parentNode),function(child){return child!==el})}),selector)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(property){return $.map(this,function(el){return el[property]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display="");if(getComputedStyle(this,"").getPropertyValue("display")=="none")this.style.display=defaultDisplay(this.nodeName)})},replaceWith:function(newContent){return this.before(newContent).remove()},wrap:function(structure){var func=isFunction(structure);if(this[0]&&!func)var dom=$(structure).get(0),clone=dom.parentNode||this.length>1;return this.each(function(index){$(this).wrapAll(func?structure.call(this,index):clone?dom.cloneNode(true):dom)})},wrapAll:function(structure){if(this[0]){$(this[0]).before(structure=$(structure));var children;while((children=structure.children()).length)structure=children.first();$(structure).append(this)}return this},wrapInner:function(structure){var func=isFunction(structure);return this.each(function(index){var self=$(this),contents=self.contents(),dom=func?structure.call(this,index):structure;contents.length?contents.wrapAll(dom):self.append(dom)})},unwrap:function(){this.parent().each(function(){$(this).replaceWith($(this).children())});return this},clone:function(){return this.map(function(){return this.cloneNode(true)})},hide:function(){return this.css("display","none")},toggle:function(setting){return this.each(function(){var el=$(this);(setting===undefined?el.css("display")=="none":setting)?el.show():el.hide()})},prev:function(selector){return $(this.pluck("previousElementSibling")).filter(selector||"*")},next:function(selector){return $(this.pluck("nextElementSibling")).filter(selector||"*")},html:function(html){return 0 in arguments?this.each(function(idx){var originHtml=this.innerHTML;$(this).empty().append(funcArg(this,html,idx,originHtml))}):0 in this?this[0].innerHTML:null},text:function(text){return 0 in arguments?this.each(function(idx){var newText=funcArg(this,text,idx,this.textContent);this.textContent=newText==null?"":""+newText}):0 in this?this.pluck("textContent").join(""):null},attr:function(name,value){var result;return typeof name=="string"&&!(1 in arguments)?0 in this&&this[0].nodeType==1&&(result=this[0].getAttribute(name))!=null?result:undefined:this.each(function(idx){if(this.nodeType!==1)return;if(isObject(name))for(key in name)setAttribute(this,key,name[key]);else setAttribute(this,name,funcArg(this,value,idx,this.getAttribute(name)))})},removeAttr:function(name){return this.each(function(){this.nodeType===1&&name.split(" ").forEach(function(attribute){setAttribute(this,attribute)},this)})},prop:function(name,value){name=propMap[name]||name;return 1 in arguments?this.each(function(idx){this[name]=funcArg(this,value,idx,this[name])}):this[0]&&this[0][name]},removeProp:function(name){name=propMap[name]||name;return this.each(function(){delete this[name]})},data:function(name,value){var attrName="data-"+name.replace(capitalRE,"-$1").toLowerCase();var data=1 in arguments?this.attr(attrName,value):this.attr(attrName);return data!==null?deserializeValue(data):undefined},val:function(value){if(0 in arguments){if(value==null)value="";return this.each(function(idx){this.value=funcArg(this,value,idx,this.value)})}else{return this[0]&&(this[0].multiple?$(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)}},offset:function(coordinates){if(coordinates)return this.each(function(index){var $this=$(this),coords=funcArg(this,coordinates,index,$this.offset()),parentOffset=$this.offsetParent().offset(),props={top:coords.top-parentOffset.top,left:coords.left-parentOffset.left};if($this.css("position")=="static")props["position"]="relative";$this.css(props)});if(!this.length)return null;if(document.documentElement!==this[0]&&!$.contains(document.documentElement,this[0]))return{top:0,left:0};var obj=this[0].getBoundingClientRect();return{left:obj.left+window.pageXOffset,top:obj.top+window.pageYOffset,width:Math.round(obj.width),height:Math.round(obj.height)}},css:function(property,value){if(arguments.length<2){var element=this[0];if(typeof property=="string"){if(!element)return;return element.style[camelize(property)]||getComputedStyle(element,"").getPropertyValue(property)}else if(isArray(property)){if(!element)return;var props={};var computedStyle=getComputedStyle(element,"");$.each(property,function(_,prop){props[prop]=element.style[camelize(prop)]||computedStyle.getPropertyValue(prop)});return props}}var css="";if(type(property)=="string"){if(!value&&value!==0)this.each(function(){this.style.removeProperty(dasherize(property))});else css=dasherize(property)+":"+maybeAddPx(property,value)}else{for(key in property)if(!property[key]&&property[key]!==0)this.each(function(){this.style.removeProperty(dasherize(key))});else css+=dasherize(key)+":"+maybeAddPx(key,property[key])+";"}return this.each(function(){this.style.cssText+=";"+css})},index:function(element){return element?this.indexOf($(element)[0]):this.parent().children().indexOf(this[0])},hasClass:function(name){if(!name)return false;return emptyArray.some.call(this,function(el){return this.test(className(el))},classRE(name))},addClass:function(name){if(!name)return this;return this.each(function(idx){if(!("className"in this))return;classList=[];var cls=className(this),newName=funcArg(this,name,idx,cls);newName.split(/\s+/g).forEach(function(klass){if(!$(this).hasClass(klass))classList.push(klass)},this);classList.length&&className(this,cls+(cls?" ":"")+classList.join(" "))})},removeClass:function(name){return this.each(function(idx){if(!("className"in this))return;if(name===undefined)return className(this,"");classList=className(this);funcArg(this,name,idx,classList).split(/\s+/g).forEach(function(klass){classList=classList.replace(classRE(klass)," ")});className(this,classList.trim())})},toggleClass:function(name,when){if(!name)return this;return this.each(function(idx){var $this=$(this),names=funcArg(this,name,idx,className(this));names.split(/\s+/g).forEach(function(klass){(when===undefined?!$this.hasClass(klass):when)?$this.addClass(klass):$this.removeClass(klass)})})},scrollTop:function(value){if(!this.length)return;var hasScrollTop="scrollTop"in this[0];if(value===undefined)return hasScrollTop?this[0].scrollTop:this[0].pageYOffset;return this.each(hasScrollTop?function(){this.scrollTop=value}:function(){this.scrollTo(this.scrollX,value)})},scrollLeft:function(value){if(!this.length)return;var hasScrollLeft="scrollLeft"in this[0];if(value===undefined)return hasScrollLeft?this[0].scrollLeft:this[0].pageXOffset;return this.each(hasScrollLeft?function(){this.scrollLeft=value}:function(){this.scrollTo(value,this.scrollY)})},position:function(){if(!this.length)return;var elem=this[0],offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=rootNodeRE.test(offsetParent[0].nodeName)?{top:0,left:0}:offsetParent.offset();offset.top-=parseFloat($(elem).css("margin-top"))||0;offset.left-=parseFloat($(elem).css("margin-left"))||0;parentOffset.top+=parseFloat($(offsetParent[0]).css("border-top-width"))||0;parentOffset.left+=parseFloat($(offsetParent[0]).css("border-left-width"))||0;return{top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}},offsetParent:function(){return this.map(function(){var parent=this.offsetParent||document.body;while(parent&&!rootNodeRE.test(parent.nodeName)&&$(parent).css("position")=="static")parent=parent.offsetParent;return parent})}};$.fn.detach=$.fn.remove;["width","height"].forEach(function(dimension){var dimensionProperty=dimension.replace(/./,function(m){return m[0].toUpperCase()});$.fn[dimension]=function(value){var offset,el=this[0];if(value===undefined)return isWindow(el)?el["inner"+dimensionProperty]:isDocument(el)?el.documentElement["scroll"+dimensionProperty]:(offset=this.offset())&&offset[dimension];else return this.each(function(idx){el=$(this);el.css(dimension,funcArg(this,value,idx,el[dimension]()))})}});function traverseNode(node,fun){fun(node);for(var i=0,len=node.childNodes.length;i<len;i++)traverseNode(node.childNodes[i],fun)}adjacencyOperators.forEach(function(operator,operatorIndex){var inside=operatorIndex%2;$.fn[operator]=function(){var argType,nodes=$.map(arguments,function(arg){var arr=[];argType=type(arg);if(argType=="array"){arg.forEach(function(el){if(el.nodeType!==undefined)return arr.push(el);else if($.zepto.isZ(el))return arr=arr.concat(el.get());arr=arr.concat(zepto.fragment(el))});return arr}return argType=="object"||arg==null?arg:zepto.fragment(arg)}),parent,copyByClone=this.length>1;if(nodes.length<1)return this;return this.each(function(_,target){parent=inside?target:target.parentNode;target=operatorIndex==0?target.nextSibling:operatorIndex==1?target.firstChild:operatorIndex==2?target:null;var parentInDocument=$.contains(document.documentElement,parent);nodes.forEach(function(node){if(copyByClone)node=node.cloneNode(true);else if(!parent)return $(node).remove();parent.insertBefore(node,target);if(parentInDocument)traverseNode(node,function(el){if(el.nodeName!=null&&el.nodeName.toUpperCase()==="SCRIPT"&&(!el.type||el.type==="text/javascript")&&!el.src){var target=el.ownerDocument?el.ownerDocument.defaultView:window;target["eval"].call(target,el.innerHTML)}})})})};$.fn[inside?operator+"To":"insert"+(operatorIndex?"Before":"After")]=function(html){$(html)[operator](this);return this}});zepto.Z.prototype=Z.prototype=$.fn;zepto.uniq=uniq;zepto.deserializeValue=deserializeValue;$.zepto=zepto;return $}();(function($){var _zid=1,undefined,slice=Array.prototype.slice,isFunction=$.isFunction,isString=function(obj){return typeof obj=="string"},handlers={},specialEvents={},focusinSupported="onfocusin"in window,focus={focus:"focusin",blur:"focusout"},hover={mouseenter:"mouseover",mouseleave:"mouseout"};specialEvents.click=specialEvents.mousedown=specialEvents.mouseup=specialEvents.mousemove="MouseEvents";function zid(element){return element._zid||(element._zid=_zid++)}function findHandlers(element,event,fn,selector){event=parse(event);if(event.ns)var matcher=matcherFor(event.ns);return(handlers[zid(element)]||[]).filter(function(handler){return handler&&(!event.e||handler.e==event.e)&&(!event.ns||matcher.test(handler.ns))&&(!fn||zid(handler.fn)===zid(fn))&&(!selector||handler.sel==selector)})}function parse(event){var parts=(""+event).split(".");return{e:parts[0],ns:parts.slice(1).sort().join(" ")}}function matcherFor(ns){return new RegExp("(?:^| )"+ns.replace(" "," .* ?")+"(?: |$)")}function eventCapture(handler,captureSetting){return handler.del&&(!focusinSupported&&handler.e in focus)||!!captureSetting}function realEvent(type){return hover[type]||focusinSupported&&focus[type]||type}function add(element,events,fn,data,selector,delegator,capture){var id=zid(element),set=handlers[id]||(handlers[id]=[]);events.split(/\s/).forEach(function(event){if(event=="ready")return $(document).ready(fn);var handler=parse(event);handler.fn=fn;handler.sel=selector;if(handler.e in hover)fn=function(e){var related=e.relatedTarget;if(!related||related!==this&&!$.contains(this,related))return handler.fn.apply(this,arguments)};handler.del=delegator;var callback=delegator||fn;handler.proxy=function(e){e=compatible(e);if(e.isImmediatePropagationStopped())return;try{var dataPropDescriptor=Object.getOwnPropertyDescriptor(e,"data");if(!dataPropDescriptor||dataPropDescriptor.writable)e.data=data}catch(e){}var result=callback.apply(element,e._args==undefined?[e]:[e].concat(e._args));if(result===false)e.preventDefault(),e.stopPropagation();return result};handler.i=set.length;set.push(handler);if("addEventListener"in element)element.addEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})}function remove(element,events,fn,selector,capture){var id=zid(element);(events||"").split(/\s/).forEach(function(event){findHandlers(element,event,fn,selector).forEach(function(handler){delete handlers[id][handler.i];if("removeEventListener"in element)element.removeEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})})}$.event={add:add,remove:remove};$.proxy=function(fn,context){var args=2 in arguments&&slice.call(arguments,2);if(isFunction(fn)){var proxyFn=function(){return fn.apply(context,args?args.concat(slice.call(arguments)):arguments)};proxyFn._zid=zid(fn);return proxyFn}else if(isString(context)){if(args){args.unshift(fn[context],fn);return $.proxy.apply(null,args)}else{return $.proxy(fn[context],fn)}}else{throw new TypeError("expected function")}};$.fn.bind=function(event,data,callback){return this.on(event,data,callback)};$.fn.unbind=function(event,callback){return this.off(event,callback)};$.fn.one=function(event,selector,data,callback){return this.on(event,selector,data,callback,1)};var returnTrue=function(){return true},returnFalse=function(){return false},ignoreProperties=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,eventMethods={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function compatible(event,source){if(source||!event.isDefaultPrevented){source||(source=event);$.each(eventMethods,function(name,predicate){var sourceMethod=source[name];event[name]=function(){this[predicate]=returnTrue;return sourceMethod&&sourceMethod.apply(source,arguments)};event[predicate]=returnFalse});event.timeStamp||(event.timeStamp=Date.now());if(source.defaultPrevented!==undefined?source.defaultPrevented:"returnValue"in source?source.returnValue===false:source.getPreventDefault&&source.getPreventDefault())event.isDefaultPrevented=returnTrue}return event}function createProxy(event){var key,proxy={originalEvent:event};for(key in event)if(!ignoreProperties.test(key)&&event[key]!==undefined)proxy[key]=event[key];return compatible(proxy,event)}$.fn.delegate=function(selector,event,callback){return this.on(event,selector,callback)};$.fn.undelegate=function(selector,event,callback){return this.off(event,selector,callback)};$.fn.live=function(event,callback){$(document.body).delegate(this.selector,event,callback);return this};$.fn.die=function(event,callback){$(document.body).undelegate(this.selector,event,callback);return this};$.fn.on=function(event,selector,data,callback,one){var autoRemove,delegator,$this=this;if(event&&!isString(event)){$.each(event,function(type,fn){$this.on(type,selector,data,fn,one)});return $this}if(!isString(selector)&&!isFunction(callback)&&callback!==false)callback=data,data=selector,selector=undefined;if(callback===undefined||data===false)callback=data,data=undefined;if(callback===false)callback=returnFalse;return $this.each(function(_,element){if(one)autoRemove=function(e){remove(element,e.type,callback);return callback.apply(this,arguments)};if(selector)delegator=function(e){var evt,match=$(e.target).closest(selector,element).get(0);if(match&&match!==element){evt=$.extend(createProxy(e),{currentTarget:match,liveFired:element});return(autoRemove||callback).apply(match,[evt].concat(slice.call(arguments,1)))}};add(element,event,callback,data,selector,delegator||autoRemove)})};$.fn.off=function(event,selector,callback){var $this=this;if(event&&!isString(event)){$.each(event,function(type,fn){$this.off(type,selector,fn)});return $this}if(!isString(selector)&&!isFunction(callback)&&callback!==false)callback=selector,selector=undefined;if(callback===false)callback=returnFalse;return $this.each(function(){remove(this,event,callback,selector)})};$.fn.trigger=function(event,args){event=isString(event)||$.isPlainObject(event)?$.Event(event):compatible(event);event._args=args;return this.each(function(){if(event.type in focus&&typeof this[event.type]=="function")this[event.type]();else if("dispatchEvent"in this)this.dispatchEvent(event);else $(this).triggerHandler(event,args)})};$.fn.triggerHandler=function(event,args){var e,result;this.each(function(i,element){e=createProxy(isString(event)?$.Event(event):event);e._args=args;e.target=element;$.each(findHandlers(element,event.type||event),function(i,handler){result=handler.proxy(e);if(e.isImmediatePropagationStopped())return false})});return result};("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(event){$.fn[event]=function(callback){return 0 in arguments?this.bind(event,callback):this.trigger(event)}});$.Event=function(type,props){if(!isString(type))props=type,type=props.type;var event=document.createEvent(specialEvents[type]||"Events"),bubbles=true;if(props)for(var name in props)name=="bubbles"?bubbles=!!props[name]:event[name]=props[name];event.initEvent(type,bubbles,true);return compatible(event)}})(Zepto);(function($){var cache=[],timeout;$.fn.remove=function(){return this.each(function(){if(this.parentNode){if(this.tagName==="IMG"){cache.push(this);this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";if(timeout)clearTimeout(timeout);timeout=setTimeout(function(){cache=[]},6e4)}this.parentNode.removeChild(this)}})}})(Zepto);(function($){var data={},dataAttr=$.fn.data,camelize=$.camelCase,exp=$.expando="Zepto"+ +new Date,emptyArray=[];function getData(node,name){var id=node[exp],store=id&&data[id];if(name===undefined)return store||setData(node);else{if(store){if(name in store)return store[name];var camelName=camelize(name);if(camelName in store)return store[camelName]}return dataAttr.call($(node),name)}}function setData(node,name,value){var id=node[exp]||(node[exp]=++$.uuid),store=data[id]||(data[id]=attributeData(node));if(name!==undefined)store[camelize(name)]=value;return store}function attributeData(node){var store={};$.each(node.attributes||emptyArray,function(i,attr){if(attr.name.indexOf("data-")==0)store[camelize(attr.name.replace("data-",""))]=$.zepto.deserializeValue(attr.value)});return store}$.fn.data=function(name,value){return value===undefined?$.isPlainObject(name)?this.each(function(i,node){$.each(name,function(key,value){setData(node,key,value)})}):0 in this?getData(this[0],name):undefined:this.each(function(){setData(this,name,value)})};$.data=function(elem,name,value){return $(elem).data(name,value)};$.hasData=function(elem){var id=elem[exp],store=id&&data[id];return store?!$.isEmptyObject(store):false};$.fn.removeData=function(names){if(typeof names=="string")names=names.split(/\s+/);return this.each(function(){var id=this[exp],store=id&&data[id];if(store)$.each(names||store,function(key){delete store[names?camelize(this):key]})})};["remove","empty"].forEach(function(methodName){var origFn=$.fn[methodName];$.fn[methodName]=function(){var elements=this.find("*");if(methodName==="remove")elements=elements.add(this);elements.removeData();return origFn.call(this)}})})(Zepto);return Zepto})},function(module,exports,__webpack_require__){"use strict";var namespace="autocomplete:";var _=__webpack_require__(0);var DOM=__webpack_require__(1);function EventBus(o){if(!o||!o.el){_.error("EventBus initialized without el")}this.$el=DOM.element(o.el)}_.mixin(EventBus.prototype,{trigger:function(type,suggestion,dataset,context){var event=_.Event(namespace+type);this.$el.trigger(event,[suggestion,dataset,context]);return event}});module.exports=EventBus},function(module,exports,__webpack_require__){"use strict";module.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},function(module,exports){module.exports="0.36.0"},function(module,exports,__webpack_require__){"use strict";module.exports=function parseAlgoliaClientVersion(agent){var parsed=agent.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(parsed)return[parsed[1],parsed[2],parsed[3]];return undefined}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _zepto=__webpack_require__(15);var _zepto2=_interopRequireDefault(_zepto);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=_zepto2.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default="2.6.3"},function(module,exports,__webpack_require__){"use strict";var _main=__webpack_require__(23);var _main2=_interopRequireDefault(_main);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}module.exports=_main2.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _toFactory=__webpack_require__(24);var _toFactory2=_interopRequireDefault(_toFactory);var _DocSearch=__webpack_require__(25);var _DocSearch2=_interopRequireDefault(_DocSearch);var _version=__webpack_require__(21);var _version2=_interopRequireDefault(_version);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var docsearch=(0,_toFactory2.default)(_DocSearch2.default);docsearch.version=_version2.default;exports.default=docsearch},function(module,exports,__webpack_require__){"use strict";var _bind=Function.prototype.bind;function toFactory(Class){var Factory=function Factory(){for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return new(_bind.apply(Class,[null].concat(args)))};Factory.__proto__=Class;Factory.prototype=Class.prototype;return Factory}module.exports=toFactory},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _hogan=__webpack_require__(26);var _hogan2=_interopRequireDefault(_hogan);var _lite=__webpack_require__(29);var _lite2=_interopRequireDefault(_lite);var _autocomplete=__webpack_require__(49);var _autocomplete2=_interopRequireDefault(_autocomplete);var _templates=__webpack_require__(64);var _templates2=_interopRequireDefault(_templates);var _utils=__webpack_require__(65);var _utils2=_interopRequireDefault(_utils);var _version=__webpack_require__(21);var _version2=_interopRequireDefault(_version);var _zepto=__webpack_require__(20);var _zepto2=_interopRequireDefault(_zepto);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var usage="Usage:\n documentationSearch({\n apiKey,\n indexName,\n inputSelector,\n [ appId ],\n [ algoliaOptions.{hitsPerPage} ]\n [ autocompleteOptions.{hint,debug} ]\n})";var DocSearch=function(){function DocSearch(_ref){var apiKey=_ref.apiKey,indexName=_ref.indexName,inputSelector=_ref.inputSelector,_ref$appId=_ref.appId,appId=_ref$appId===undefined?"BH4D9OD16A":_ref$appId,_ref$debug=_ref.debug,debug=_ref$debug===undefined?false:_ref$debug,_ref$algoliaOptions=_ref.algoliaOptions,algoliaOptions=_ref$algoliaOptions===undefined?{}:_ref$algoliaOptions,_ref$queryDataCallbac=_ref.queryDataCallback,queryDataCallback=_ref$queryDataCallbac===undefined?null:_ref$queryDataCallbac,_ref$autocompleteOpti=_ref.autocompleteOptions,autocompleteOptions=_ref$autocompleteOpti===undefined?{debug:false,hint:false,autoselect:true}:_ref$autocompleteOpti,_ref$transformData=_ref.transformData,transformData=_ref$transformData===undefined?false:_ref$transformData,_ref$queryHook=_ref.queryHook,queryHook=_ref$queryHook===undefined?false:_ref$queryHook,_ref$handleSelected=_ref.handleSelected,handleSelected=_ref$handleSelected===undefined?false:_ref$handleSelected,_ref$enhancedSearchIn=_ref.enhancedSearchInput,enhancedSearchInput=_ref$enhancedSearchIn===undefined?false:_ref$enhancedSearchIn,_ref$layout=_ref.layout,layout=_ref$layout===undefined?"collumns":_ref$layout;_classCallCheck(this,DocSearch);DocSearch.checkArguments({apiKey:apiKey,indexName:indexName,inputSelector:inputSelector,debug:debug,algoliaOptions:algoliaOptions,queryDataCallback:queryDataCallback,autocompleteOptions:autocompleteOptions,transformData:transformData,queryHook:queryHook,handleSelected:handleSelected,enhancedSearchInput:enhancedSearchInput,layout:layout});this.apiKey=apiKey;this.appId=appId;this.indexName=indexName;this.input=DocSearch.getInputFromSelector(inputSelector);this.algoliaOptions=_extends({hitsPerPage:5},algoliaOptions);this.queryDataCallback=queryDataCallback||null;var autocompleteOptionsDebug=autocompleteOptions&&autocompleteOptions.debug?autocompleteOptions.debug:false;autocompleteOptions.debug=debug||autocompleteOptionsDebug;this.autocompleteOptions=autocompleteOptions;this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{};this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";var inputAriaLabel=this.input&&typeof this.input.attr==="function"&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||inputAriaLabel||"search input";this.isSimpleLayout=layout==="simple";this.client=(0,_lite2.default)(this.appId,this.apiKey);this.client.addAlgoliaAgent("docsearch.js "+_version2.default);if(enhancedSearchInput){this.input=DocSearch.injectSearchBox(this.input)}this.autocomplete=(0,_autocomplete2.default)(this.input,autocompleteOptions,[{source:this.getAutocompleteSource(transformData,queryHook),templates:{suggestion:DocSearch.getSuggestionTemplate(this.isSimpleLayout),footer:_templates2.default.footer,empty:DocSearch.getEmptyTemplate()}}]);var customHandleSelected=handleSelected;this.handleSelected=customHandleSelected||this.handleSelected;if(customHandleSelected){(0,_zepto2.default)(".algolia-autocomplete").on("click",".ds-suggestions a",function(event){event.preventDefault()})}this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete));this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input));if(enhancedSearchInput){DocSearch.bindSearchBoxEvent()}}_createClass(DocSearch,[{key:"getAutocompleteSource",value:function getAutocompleteSource(transformData,queryHook){var _this=this;return function(query,callback){if(queryHook){query=queryHook(query)||query}_this.client.search([{indexName:_this.indexName,query:query,params:_this.algoliaOptions}]).then(function(data){if(_this.queryDataCallback&&typeof _this.queryDataCallback=="function"){_this.queryDataCallback(data)}var hits=data.results[0].hits;if(transformData){hits=transformData(hits)||hits}callback(DocSearch.formatHits(hits))})}}},{key:"handleSelected",value:function handleSelected(input,event,suggestion,datasetNumber){var context=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};if(context.selectionMethod==="click"){return}input.setVal("");window.location.assign(suggestion.url)}},{key:"handleShown",value:function handleShown(input){var middleOfInput=input.offset().left+input.width()/2;var middleOfWindow=(0,_zepto2.default)(document).width()/2;if(isNaN(middleOfWindow)){middleOfWindow=900}var alignClass=middleOfInput-middleOfWindow>=0?"algolia-autocomplete-right":"algolia-autocomplete-left";var otherAlignClass=middleOfInput-middleOfWindow<0?"algolia-autocomplete-right":"algolia-autocomplete-left";var autocompleteWrapper=(0,_zepto2.default)(".algolia-autocomplete");if(!autocompleteWrapper.hasClass(alignClass)){autocompleteWrapper.addClass(alignClass)}if(autocompleteWrapper.hasClass(otherAlignClass)){autocompleteWrapper.removeClass(otherAlignClass)}}}],[{key:"checkArguments",value:function checkArguments(args){if(!args.apiKey||!args.indexName){throw new Error(usage)}if(typeof args.inputSelector!=="string"){throw new Error("Error: inputSelector:"+args.inputSelector+" must be a string. Each selector must match only one element and separated by ','")}if(!DocSearch.getInputFromSelector(args.inputSelector)){throw new Error("Error: No input element in the page matches "+args.inputSelector)}}},{key:"injectSearchBox",value:function injectSearchBox(input){input.before(_templates2.default.searchBox);var newInput=input.prev().prev().find("input");input.remove();return newInput}},{key:"bindSearchBoxEvent",value:function bindSearchBoxEvent(){(0,_zepto2.default)('.searchbox [type="reset"]').on("click",function(){(0,_zepto2.default)("input#docsearch").focus();(0,_zepto2.default)(this).addClass("hide");_autocomplete2.default.autocomplete.setVal("")});(0,_zepto2.default)("input#docsearch").on("keyup",function(){var searchbox=document.querySelector("input#docsearch");var reset=document.querySelector('.searchbox [type="reset"]');reset.className="searchbox__reset";if(searchbox.value.length===0){reset.className+=" hide"}})}},{key:"getInputFromSelector",value:function getInputFromSelector(selector){var input=(0,_zepto2.default)(selector).filter("input");return input.length?(0,_zepto2.default)(input[0]):null}},{key:"formatHits",value:function formatHits(receivedHits){var clonedHits=_utils2.default.deepClone(receivedHits);var hits=clonedHits.map(function(hit){if(hit._highlightResult){hit._highlightResult=_utils2.default.mergeKeyWithParent(hit._highlightResult,"hierarchy")}return _utils2.default.mergeKeyWithParent(hit,"hierarchy")});var groupedHits=_utils2.default.groupBy(hits,"lvl0");_zepto2.default.each(groupedHits,function(level,collection){var groupedHitsByLvl1=_utils2.default.groupBy(collection,"lvl1");var flattenedHits=_utils2.default.flattenAndFlagFirst(groupedHitsByLvl1,"isSubCategoryHeader");groupedHits[level]=flattenedHits});groupedHits=_utils2.default.flattenAndFlagFirst(groupedHits,"isCategoryHeader");return groupedHits.map(function(hit){var url=DocSearch.formatURL(hit);var category=_utils2.default.getHighlightedValue(hit,"lvl0");var subcategory=_utils2.default.getHighlightedValue(hit,"lvl1")||category;var displayTitle=_utils2.default.compact([_utils2.default.getHighlightedValue(hit,"lvl2")||subcategory,_utils2.default.getHighlightedValue(hit,"lvl3"),_utils2.default.getHighlightedValue(hit,"lvl4"),_utils2.default.getHighlightedValue(hit,"lvl5"),_utils2.default.getHighlightedValue(hit,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>');var text=_utils2.default.getSnippetedValue(hit,"content");var isTextOrSubcategoryNonEmpty=subcategory&&subcategory!==""||displayTitle&&displayTitle!=="";var isLvl1EmptyOrDuplicate=!subcategory||subcategory===""||subcategory===category;var isLvl2=displayTitle&&displayTitle!==""&&displayTitle!==subcategory;var isLvl1=!isLvl2&&subcategory&&subcategory!==""&&subcategory!==category;var isLvl0=!isLvl1&&!isLvl2;return{isLvl0:isLvl0,isLvl1:isLvl1,isLvl2:isLvl2,isLvl1EmptyOrDuplicate:isLvl1EmptyOrDuplicate,isCategoryHeader:hit.isCategoryHeader,isSubCategoryHeader:hit.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:isTextOrSubcategoryNonEmpty,category:category,subcategory:subcategory,title:displayTitle,text:text,url:url}})}},{key:"formatURL",value:function formatURL(hit){var url=hit.url,anchor=hit.anchor;if(url){var containsAnchor=url.indexOf("#")!==-1;if(containsAnchor)return url;else if(anchor)return hit.url+"#"+hit.anchor;return url}else if(anchor)return"#"+hit.anchor;console.warn("no anchor nor url for : ",JSON.stringify(hit));return null}},{key:"getEmptyTemplate",value:function getEmptyTemplate(){return function(args){return _hogan2.default.compile(_templates2.default.empty).render(args)}}},{key:"getSuggestionTemplate",value:function getSuggestionTemplate(isSimpleLayout){var stringTemplate=isSimpleLayout?_templates2.default.suggestionSimple:_templates2.default.suggestion;var template=_hogan2.default.compile(stringTemplate);return function(suggestion){return template.render(suggestion)}}}]);return DocSearch}();exports.default=DocSearch},function(module,exports,__webpack_require__){var Hogan=__webpack_require__(27);Hogan.Template=__webpack_require__(28).Template;Hogan.template=Hogan.Template;module.exports=Hogan},function(module,exports,__webpack_require__){(function(Hogan){var rIsWhitespace=/\S/,rQuot=/\"/g,rNewline=/\n/g,rCr=/\r/g,rSlash=/\\/g,rLineSep=/\u2028/,rParagraphSep=/\u2029/;Hogan.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12};Hogan.scan=function scan(text,delimiters){var len=text.length,IN_TEXT=0,IN_TAG_TYPE=1,IN_TAG=2,state=IN_TEXT,tagType=null,tag=null,buf="",tokens=[],seenTag=false,i=0,lineStart=0,otag="{{",ctag="}}";function addBuf(){if(buf.length>0){tokens.push({tag:"_t",text:new String(buf)});buf=""}}function lineIsWhitespace(){var isAllWhitespace=true;for(var j=lineStart;j<tokens.length;j++){isAllWhitespace=Hogan.tags[tokens[j].tag]<Hogan.tags["_v"]||tokens[j].tag=="_t"&&tokens[j].text.match(rIsWhitespace)===null;if(!isAllWhitespace){return false}}return isAllWhitespace}function filterLine(haveSeenTag,noNewLine){addBuf();if(haveSeenTag&&lineIsWhitespace()){for(var j=lineStart,next;j<tokens.length;j++){if(tokens[j].text){if((next=tokens[j+1])&&next.tag==">"){next.indent=tokens[j].text.toString()}tokens.splice(j,1)}}}else if(!noNewLine){tokens.push({tag:"\n"})}seenTag=false;lineStart=tokens.length}function changeDelimiters(text,index){var close="="+ctag,closeIndex=text.indexOf(close,index),delimiters=trim(text.substring(text.indexOf("=",index)+1,closeIndex)).split(" ");otag=delimiters[0];ctag=delimiters[delimiters.length-1];return closeIndex+close.length-1}if(delimiters){delimiters=delimiters.split(" ");otag=delimiters[0];ctag=delimiters[1]}for(i=0;i<len;i++){if(state==IN_TEXT){if(tagChange(otag,text,i)){--i;addBuf();state=IN_TAG_TYPE}else{if(text.charAt(i)=="\n"){filterLine(seenTag)}else{buf+=text.charAt(i)}}}else if(state==IN_TAG_TYPE){i+=otag.length-1;tag=Hogan.tags[text.charAt(i+1)];tagType=tag?text.charAt(i+1):"_v";if(tagType=="="){i=changeDelimiters(text,i);state=IN_TEXT}else{if(tag){i++}state=IN_TAG}seenTag=i}else{if(tagChange(ctag,text,i)){tokens.push({tag:tagType,n:trim(buf),otag:otag,ctag:ctag,i:tagType=="/"?seenTag-otag.length:i+ctag.length});buf="";i+=ctag.length-1;state=IN_TEXT;if(tagType=="{"){if(ctag=="}}"){i++}else{cleanTripleStache(tokens[tokens.length-1])}}}else{buf+=text.charAt(i)}}}filterLine(seenTag,true);return tokens};function cleanTripleStache(token){if(token.n.substr(token.n.length-1)==="}"){token.n=token.n.substring(0,token.n.length-1)}}function trim(s){if(s.trim){return s.trim()}return s.replace(/^\s*|\s*$/g,"")}function tagChange(tag,text,index){if(text.charAt(index)!=tag.charAt(0)){return false}for(var i=1,l=tag.length;i<l;i++){if(text.charAt(index+i)!=tag.charAt(i)){return false}}return true}var allowedInSuper={_t:true,"\n":true,$:true,"/":true};function buildTree(tokens,kind,stack,customTags){var instructions=[],opener=null,tail=null,token=null;tail=stack[stack.length-1];while(tokens.length>0){token=tokens.shift();if(tail&&tail.tag=="<"&&!(token.tag in allowedInSuper)){throw new Error("Illegal content in < super tag.")}if(Hogan.tags[token.tag]<=Hogan.tags["$"]||isOpener(token,customTags)){stack.push(token);token.nodes=buildTree(tokens,token.tag,stack,customTags)}else if(token.tag=="/"){if(stack.length===0){throw new Error("Closing tag without opener: /"+token.n)}opener=stack.pop();if(token.n!=opener.n&&!isCloser(token.n,opener.n,customTags)){throw new Error("Nesting error: "+opener.n+" vs. "+token.n)}opener.end=token.i;return instructions}else if(token.tag=="\n"){token.last=tokens.length==0||tokens[0].tag=="\n"}instructions.push(token)}if(stack.length>0){throw new Error("missing closing tag: "+stack.pop().n)}return instructions}function isOpener(token,tags){for(var i=0,l=tags.length;i<l;i++){if(tags[i].o==token.n){token.tag="#";return true}}}function isCloser(close,open,tags){for(var i=0,l=tags.length;i<l;i++){if(tags[i].c==close&&tags[i].o==open){return true}}}function stringifySubstitutions(obj){var items=[];for(var key in obj){items.push('"'+esc(key)+'": function(c,p,t,i) {'+obj[key]+"}")}return"{ "+items.join(",")+" }"}function stringifyPartials(codeObj){var partials=[];for(var key in codeObj.partials){partials.push('"'+esc(key)+'":{name:"'+esc(codeObj.partials[key].name)+'", '+stringifyPartials(codeObj.partials[key])+"}")}return"partials: {"+partials.join(",")+"}, subs: "+stringifySubstitutions(codeObj.subs)}Hogan.stringify=function(codeObj,text,options){return"{code: function (c,p,i) { "+Hogan.wrapMain(codeObj.code)+" },"+stringifyPartials(codeObj)+"}"};var serialNo=0;Hogan.generate=function(tree,text,options){serialNo=0;var context={code:"",subs:{},partials:{}};Hogan.walk(tree,context);if(options.asString){return this.stringify(context,text,options)}return this.makeTemplate(context,text,options)};Hogan.wrapMain=function(code){return'var t=this;t.b(i=i||"");'+code+"return t.fl();"};Hogan.template=Hogan.Template;Hogan.makeTemplate=function(codeObj,text,options){var template=this.makePartials(codeObj);template.code=new Function("c","p","i",this.wrapMain(codeObj.code));return new this.template(template,text,this,options)};Hogan.makePartials=function(codeObj){var key,template={subs:{},partials:codeObj.partials,name:codeObj.name};for(key in template.partials){template.partials[key]=this.makePartials(template.partials[key])}for(key in codeObj.subs){template.subs[key]=new Function("c","p","t","i",codeObj.subs[key])}return template};function esc(s){return s.replace(rSlash,"\\\\").replace(rQuot,'\\"').replace(rNewline,"\\n").replace(rCr,"\\r").replace(rLineSep,"\\u2028").replace(rParagraphSep,"\\u2029")}function chooseMethod(s){return~s.indexOf(".")?"d":"f"}function createPartial(node,context){var prefix="<"+(context.prefix||"");var sym=prefix+node.n+serialNo++;context.partials[sym]={name:node.n,partials:{}};context.code+='t.b(t.rp("'+esc(sym)+'",c,p,"'+(node.indent||"")+'"));';return sym}Hogan.codegen={"#":function(node,context){context.code+="if(t.s(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,1),'+"c,p,0,"+node.i+","+node.end+',"'+node.otag+" "+node.ctag+'")){'+"t.rs(c,p,"+"function(c,p,t){";Hogan.walk(node.nodes,context);context.code+="});c.pop();}"},"^":function(node,context){context.code+="if(!t.s(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,1),c,p,1,0,0,"")){';Hogan.walk(node.nodes,context);context.code+="};"},">":createPartial,"<":function(node,context){var ctx={partials:{},code:"",subs:{},inPartial:true};Hogan.walk(node.nodes,ctx);var template=context.partials[createPartial(node,context)];template.subs=ctx.subs;template.partials=ctx.partials},$:function(node,context){var ctx={subs:{},code:"",partials:context.partials,prefix:node.n};Hogan.walk(node.nodes,ctx);context.subs[node.n]=ctx.code;if(!context.inPartial){context.code+='t.sub("'+esc(node.n)+'",c,p,i);'}},"\n":function(node,context){context.code+=write('"\\n"'+(node.last?"":" + i"))},_v:function(node,context){context.code+="t.b(t.v(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,0)));'},_t:function(node,context){context.code+=write('"'+esc(node.text)+'"')},"{":tripleStache,"&":tripleStache};function tripleStache(node,context){context.code+="t.b(t.t(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,0)));'}function write(s){return"t.b("+s+");"}Hogan.walk=function(nodelist,context){var func;for(var i=0,l=nodelist.length;i<l;i++){func=Hogan.codegen[nodelist[i].tag];func&&func(nodelist[i],context)}return context};Hogan.parse=function(tokens,text,options){options=options||{};return buildTree(tokens,"",[],options.sectionTags||[])};Hogan.cache={};Hogan.cacheKey=function(text,options){return[text,!!options.asString,!!options.disableLambda,options.delimiters,!!options.modelGet].join("||")};Hogan.compile=function(text,options){options=options||{};var key=Hogan.cacheKey(text,options);var template=this.cache[key];if(template){var partials=template.partials;for(var name in partials){delete partials[name].instance}return template}template=this.generate(this.parse(this.scan(text,options.delimiters),text,options),text,options);return this.cache[key]=template}})(true?exports:Hogan)},function(module,exports,__webpack_require__){var Hogan={};(function(Hogan){Hogan.Template=function(codeObj,text,compiler,options){codeObj=codeObj||{};this.r=codeObj.code||this.r;this.c=compiler;this.options=options||{};this.text=text||"";this.partials=codeObj.partials||{};this.subs=codeObj.subs||{};this.buf=""};Hogan.Template.prototype={r:function(context,partials,indent){return""},v:hoganEscape,t:coerceToString,render:function render(context,partials,indent){return this.ri([context],partials||{},indent)},ri:function(context,partials,indent){return this.r(context,partials,indent)},ep:function(symbol,partials){var partial=this.partials[symbol];var template=partials[partial.name];if(partial.instance&&partial.base==template){return partial.instance}if(typeof template=="string"){if(!this.c){throw new Error("No compiler available.")}template=this.c.compile(template,this.options)}if(!template){return null}this.partials[symbol].base=template;if(partial.subs){if(!partials.stackText)partials.stackText={};for(key in partial.subs){if(!partials.stackText[key]){partials.stackText[key]=this.activeSub!==undefined&&partials.stackText[this.activeSub]?partials.stackText[this.activeSub]:this.text}}template=createSpecializedPartial(template,partial.subs,partial.partials,this.stackSubs,this.stackPartials,partials.stackText)}this.partials[symbol].instance=template;return template},rp:function(symbol,context,partials,indent){var partial=this.ep(symbol,partials);if(!partial){return""}return partial.ri(context,partials,indent)},rs:function(context,partials,section){var tail=context[context.length-1];if(!isArray(tail)){section(context,partials,this);return}for(var i=0;i<tail.length;i++){context.push(tail[i]);section(context,partials,this);context.pop()}},s:function(val,ctx,partials,inverted,start,end,tags){var pass;if(isArray(val)&&val.length===0){return false}if(typeof val=="function"){val=this.ms(val,ctx,partials,inverted,start,end,tags)}pass=!!val;if(!inverted&&pass&&ctx){ctx.push(typeof val=="object"?val:ctx[ctx.length-1])}return pass},d:function(key,ctx,partials,returnFound){var found,names=key.split("."),val=this.f(names[0],ctx,partials,returnFound),doModelGet=this.options.modelGet,cx=null;if(key==="."&&isArray(ctx[ctx.length-2])){val=ctx[ctx.length-1]}else{for(var i=1;i<names.length;i++){found=findInScope(names[i],val,doModelGet);if(found!==undefined){cx=val;val=found}else{val=""}}}if(returnFound&&!val){return false}if(!returnFound&&typeof val=="function"){ctx.push(cx);val=this.mv(val,ctx,partials);ctx.pop()}return val},f:function(key,ctx,partials,returnFound){var val=false,v=null,found=false,doModelGet=this.options.modelGet;for(var i=ctx.length-1;i>=0;i--){v=ctx[i];val=findInScope(key,v,doModelGet);if(val!==undefined){found=true;break}}if(!found){return returnFound?false:""}if(!returnFound&&typeof val=="function"){val=this.mv(val,ctx,partials)}return val},ls:function(func,cx,partials,text,tags){var oldTags=this.options.delimiters;this.options.delimiters=tags;this.b(this.ct(coerceToString(func.call(cx,text)),cx,partials));this.options.delimiters=oldTags;return false},ct:function(text,cx,partials){if(this.options.disableLambda){throw new Error("Lambda features disabled.")}return this.c.compile(text,this.options).render(cx,partials)},b:function(s){this.buf+=s},fl:function(){var r=this.buf;this.buf="";return r},ms:function(func,ctx,partials,inverted,start,end,tags){var textSource,cx=ctx[ctx.length-1],result=func.call(cx);if(typeof result=="function"){if(inverted){return true}else{textSource=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text;return this.ls(result,cx,partials,textSource.substring(start,end),tags)}}return result},mv:function(func,ctx,partials){var cx=ctx[ctx.length-1];var result=func.call(cx);if(typeof result=="function"){return this.ct(coerceToString(result.call(cx)),cx,partials)}return result},sub:function(name,context,partials,indent){var f=this.subs[name];if(f){this.activeSub=name;f(context,partials,this,indent);this.activeSub=false}}};function findInScope(key,scope,doModelGet){var val;if(scope&&typeof scope=="object"){if(scope[key]!==undefined){val=scope[key]}else if(doModelGet&&scope.get&&typeof scope.get=="function"){val=scope.get(key)}}return val}function createSpecializedPartial(instance,subs,partials,stackSubs,stackPartials,stackText){function PartialTemplate(){}PartialTemplate.prototype=instance;function Substitutions(){}Substitutions.prototype=instance.subs;var key;var partial=new PartialTemplate;partial.subs=new Substitutions;partial.subsText={};partial.buf="";stackSubs=stackSubs||{};partial.stackSubs=stackSubs;partial.subsText=stackText;for(key in subs){if(!stackSubs[key])stackSubs[key]=subs[key]}for(key in stackSubs){partial.subs[key]=stackSubs[key]}stackPartials=stackPartials||{};partial.stackPartials=stackPartials;for(key in partials){if(!stackPartials[key])stackPartials[key]=partials[key]}for(key in stackPartials){partial.partials[key]=stackPartials[key]}return partial}var rAmp=/&/g,rLt=/</g,rGt=/>/g,rApos=/\'/g,rQuot=/\"/g,hChars=/[&<>\"\']/;function coerceToString(val){return String(val===null||val===undefined?"":val)}function hoganEscape(str){str=coerceToString(str);return hChars.test(str)?str.replace(rAmp,"&").replace(rLt,"<").replace(rGt,">").replace(rApos,"'").replace(rQuot,"""):str}var isArray=Array.isArray||function(a){return Object.prototype.toString.call(a)==="[object Array]"}})(true?exports:Hogan)},function(module,exports,__webpack_require__){"use strict";var AlgoliaSearchCore=__webpack_require__(30);var createAlgoliasearch=__webpack_require__(41);module.exports=createAlgoliasearch(AlgoliaSearchCore,"(lite) ")},function(module,exports,__webpack_require__){module.exports=AlgoliaSearchCore;var errors=__webpack_require__(5);var exitPromise=__webpack_require__(31);var IndexCore=__webpack_require__(32);var store=__webpack_require__(38);var MAX_API_KEY_LENGTH=500;var RESET_APP_DATA_TIMER=Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER&&parseInt(Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER,10)||60*2*1e3;function AlgoliaSearchCore(applicationID,apiKey,opts){var debug=__webpack_require__(8)("algoliasearch");var clone=__webpack_require__(3);var isArray=__webpack_require__(6);var map=__webpack_require__(7);var usage="Usage: algoliasearch(applicationID, apiKey, opts)";if(opts._allowEmptyCredentials!==true&&!applicationID){throw new errors.AlgoliaSearchError("Please provide an application ID. "+usage)}if(opts._allowEmptyCredentials!==true&&!apiKey){throw new errors.AlgoliaSearchError("Please provide an API key. "+usage)}this.applicationID=applicationID;this.apiKey=apiKey;this.hosts={read:[],write:[]};opts=opts||{};this._timeouts=opts.timeouts||{connect:1*1e3,read:2*1e3,write:30*1e3};if(opts.timeout){this._timeouts.connect=this._timeouts.read=this._timeouts.write=opts.timeout}var protocol=opts.protocol||"https:";if(!/:$/.test(protocol)){protocol=protocol+":"}if(protocol!=="http:"&&protocol!=="https:"){throw new errors.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+opts.protocol+"`)")}this._checkAppIdData();if(!opts.hosts){var defaultHosts=map(this._shuffleResult,function(hostNumber){return applicationID+"-"+hostNumber+".algolianet.com"});var mainSuffix=(opts.dsn===false?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+mainSuffix].concat(defaultHosts);this.hosts.write=[this.applicationID+".algolia.net"].concat(defaultHosts)}else if(isArray(opts.hosts)){this.hosts.read=clone(opts.hosts);this.hosts.write=clone(opts.hosts)}else{this.hosts.read=clone(opts.hosts.read);this.hosts.write=clone(opts.hosts.write)}this.hosts.read=map(this.hosts.read,prepareHost(protocol));this.hosts.write=map(this.hosts.write,prepareHost(protocol));this.extraHeaders={};this.cache=opts._cache||{};this._ua=opts._ua;this._useCache=opts._useCache===undefined||opts._cache?true:opts._useCache;this._useRequestCache=this._useCache&&opts._useRequestCache;this._useFallback=opts.useFallback===undefined?true:opts.useFallback;this._setTimeout=opts._setTimeout;debug("init done, %j",this)}AlgoliaSearchCore.prototype.initIndex=function(indexName){return new IndexCore(this,indexName)};AlgoliaSearchCore.prototype.setExtraHeader=function(name,value){this.extraHeaders[name.toLowerCase()]=value};AlgoliaSearchCore.prototype.getExtraHeader=function(name){return this.extraHeaders[name.toLowerCase()]};AlgoliaSearchCore.prototype.unsetExtraHeader=function(name){delete this.extraHeaders[name.toLowerCase()]};AlgoliaSearchCore.prototype.addAlgoliaAgent=function(algoliaAgent){if(this._ua.indexOf(";"+algoliaAgent)===-1){this._ua+=";"+algoliaAgent}};AlgoliaSearchCore.prototype._jsonRequest=function(initialOpts){this._checkAppIdData();var requestDebug=__webpack_require__(8)("algoliasearch:"+initialOpts.url);var body;var cacheID;var additionalUA=initialOpts.additionalUA||"";var cache=initialOpts.cache;var client=this;var tries=0;var usingFallback=false;var hasFallback=client._useFallback&&client._request.fallback&&initialOpts.fallback;var headers;if(this.apiKey.length>MAX_API_KEY_LENGTH&&initialOpts.body!==undefined&&(initialOpts.body.params!==undefined||initialOpts.body.requests!==undefined)){initialOpts.body.apiKey=this.apiKey;headers=this._computeRequestHeaders({additionalUA:additionalUA,withApiKey:false,headers:initialOpts.headers})}else{headers=this._computeRequestHeaders({additionalUA:additionalUA,headers:initialOpts.headers})}if(initialOpts.body!==undefined){body=safeJSONStringify(initialOpts.body)}requestDebug("request start");var debugData=[];function doRequest(requester,reqOpts){client._checkAppIdData();var startTime=new Date;if(client._useCache&&!client._useRequestCache){cacheID=initialOpts.url}if(client._useCache&&!client._useRequestCache&&body){cacheID+="_body_"+reqOpts.body}if(isCacheValidWithCurrentID(!client._useRequestCache,cache,cacheID)){requestDebug("serving response from cache");var responseText=cache[cacheID];return client._promise.resolve({body:JSON.parse(responseText),responseText:responseText})}if(tries>=client.hosts[initialOpts.hostType].length){if(!hasFallback||usingFallback){requestDebug("could not get any response");return client._promise.reject(new errors.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API."+" Send an email to support@algolia.com to report and resolve the issue."+" Application id was: "+client.applicationID,{debugData:debugData}))}requestDebug("switching to fallback");tries=0;reqOpts.method=initialOpts.fallback.method;reqOpts.url=initialOpts.fallback.url;reqOpts.jsonBody=initialOpts.fallback.body;if(reqOpts.jsonBody){reqOpts.body=safeJSONStringify(reqOpts.jsonBody)}headers=client._computeRequestHeaders({additionalUA:additionalUA,headers:initialOpts.headers});reqOpts.timeouts=client._getTimeoutsForRequest(initialOpts.hostType);client._setHostIndexByType(0,initialOpts.hostType);usingFallback=true;return doRequest(client._request.fallback,reqOpts)}var currentHost=client._getHostByType(initialOpts.hostType);var url=currentHost+reqOpts.url;var options={body:reqOpts.body,jsonBody:reqOpts.jsonBody,method:reqOpts.method,headers:headers,timeouts:reqOpts.timeouts,debug:requestDebug,forceAuthHeaders:reqOpts.forceAuthHeaders};requestDebug("method: %s, url: %s, headers: %j, timeouts: %d",options.method,url,options.headers,options.timeouts);if(requester===client._request.fallback){requestDebug("using fallback")}return requester.call(client,url,options).then(success,tryFallback);function success(httpResponse){var status=httpResponse&&httpResponse.body&&httpResponse.body.message&&httpResponse.body.status||httpResponse.statusCode||httpResponse&&httpResponse.body&&200;requestDebug("received response: statusCode: %s, computed statusCode: %d, headers: %j",httpResponse.statusCode,status,httpResponse.headers);var httpResponseOk=Math.floor(status/100)===2;var endTime=new Date;debugData.push({currentHost:currentHost,headers:removeCredentials(headers),content:body||null,contentLength:body!==undefined?body.length:null,method:reqOpts.method,timeouts:reqOpts.timeouts,url:reqOpts.url,startTime:startTime,endTime:endTime,duration:endTime-startTime,statusCode:status});if(httpResponseOk){if(client._useCache&&!client._useRequestCache&&cache){cache[cacheID]=httpResponse.responseText}return{responseText:httpResponse.responseText,body:httpResponse.body}}var shouldRetry=Math.floor(status/100)!==4;if(shouldRetry){tries+=1;return retryRequest()}requestDebug("unrecoverable error");var unrecoverableError=new errors.AlgoliaSearchError(httpResponse.body&&httpResponse.body.message,{debugData:debugData,statusCode:status});return client._promise.reject(unrecoverableError)}function tryFallback(err){requestDebug("error: %s, stack: %s",err.message,err.stack);var endTime=new Date;debugData.push({currentHost:currentHost,headers:removeCredentials(headers),content:body||null,contentLength:body!==undefined?body.length:null,method:reqOpts.method,timeouts:reqOpts.timeouts,url:reqOpts.url,startTime:startTime,endTime:endTime,duration:endTime-startTime});if(!(err instanceof errors.AlgoliaSearchError)){err=new errors.Unknown(err&&err.message,err)}tries+=1;if(err instanceof errors.Unknown||err instanceof errors.UnparsableJSON||tries>=client.hosts[initialOpts.hostType].length&&(usingFallback||!hasFallback)){err.debugData=debugData;return client._promise.reject(err)}if(err instanceof errors.RequestTimeout){return retryRequestWithHigherTimeout()}return retryRequest()}function retryRequest(){requestDebug("retrying request");client._incrementHostIndex(initialOpts.hostType);return doRequest(requester,reqOpts)}function retryRequestWithHigherTimeout(){requestDebug("retrying request with higher timeout");client._incrementHostIndex(initialOpts.hostType);client._incrementTimeoutMultipler();reqOpts.timeouts=client._getTimeoutsForRequest(initialOpts.hostType);return doRequest(requester,reqOpts)}}function isCacheValidWithCurrentID(useRequestCache,currentCache,currentCacheID){return client._useCache&&useRequestCache&¤tCache&¤tCache[currentCacheID]!==undefined}function interopCallbackReturn(request,callback){if(isCacheValidWithCurrentID(client._useRequestCache,cache,cacheID)){request.catch(function(){delete cache[cacheID]})}if(typeof initialOpts.callback==="function"){request.then(function okCb(content){exitPromise(function(){initialOpts.callback(null,callback(content))},client._setTimeout||setTimeout)},function nookCb(err){exitPromise(function(){initialOpts.callback(err)},client._setTimeout||setTimeout)})}else{return request.then(callback)}}if(client._useCache&&client._useRequestCache){cacheID=initialOpts.url}if(client._useCache&&client._useRequestCache&&body){cacheID+="_body_"+body}if(isCacheValidWithCurrentID(client._useRequestCache,cache,cacheID)){requestDebug("serving request from cache");var maybePromiseForCache=cache[cacheID];var promiseForCache=typeof maybePromiseForCache.then!=="function"?client._promise.resolve({responseText:maybePromiseForCache}):maybePromiseForCache;return interopCallbackReturn(promiseForCache,function(content){return JSON.parse(content.responseText)})}var request=doRequest(client._request,{url:initialOpts.url,method:initialOpts.method,body:body,jsonBody:initialOpts.body,timeouts:client._getTimeoutsForRequest(initialOpts.hostType),forceAuthHeaders:initialOpts.forceAuthHeaders});if(client._useCache&&client._useRequestCache&&cache){cache[cacheID]=request}return interopCallbackReturn(request,function(content){return content.body})};AlgoliaSearchCore.prototype._getSearchParams=function(args,params){if(args===undefined||args===null){return params}for(var key in args){if(key!==null&&args[key]!==undefined&&args.hasOwnProperty(key)){params+=params===""?"":"&";params+=key+"="+encodeURIComponent(Object.prototype.toString.call(args[key])==="[object Array]"?safeJSONStringify(args[key]):args[key])}}return params};AlgoliaSearchCore.prototype._computeRequestHeaders=function(options){var forEach=__webpack_require__(2);var ua=options.additionalUA?this._ua+";"+options.additionalUA:this._ua;var requestHeaders={"x-algolia-agent":ua,"x-algolia-application-id":this.applicationID};if(options.withApiKey!==false){requestHeaders["x-algolia-api-key"]=this.apiKey}if(this.userToken){requestHeaders["x-algolia-usertoken"]=this.userToken}if(this.securityTags){requestHeaders["x-algolia-tagfilters"]=this.securityTags}forEach(this.extraHeaders,function addToRequestHeaders(value,key){requestHeaders[key]=value});if(options.headers){forEach(options.headers,function addToRequestHeaders(value,key){requestHeaders[key]=value})}return requestHeaders};AlgoliaSearchCore.prototype.search=function(queries,opts,callback){var isArray=__webpack_require__(6);var map=__webpack_require__(7);var usage="Usage: client.search(arrayOfQueries[, callback])";if(!isArray(queries)){throw new Error(usage)}if(typeof opts==="function"){callback=opts;opts={}}else if(opts===undefined){opts={}}var client=this;var postObj={requests:map(queries,function prepareRequest(query){var params="";if(query.query!==undefined){params+="query="+encodeURIComponent(query.query)}return{indexName:query.indexName,params:client._getSearchParams(query.params,params)}})};var JSONPParams=map(postObj.requests,function prepareJSONPParams(request,requestId){return requestId+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(request.indexName)+"?"+request.params)}).join("&");var url="/1/indexes/*/queries";if(opts.strategy!==undefined){postObj.strategy=opts.strategy}return this._jsonRequest({cache:this.cache,method:"POST",url:url,body:postObj,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:JSONPParams}},callback:callback})};AlgoliaSearchCore.prototype.searchForFacetValues=function(queries){var isArray=__webpack_require__(6);var map=__webpack_require__(7);var usage="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!isArray(queries)){throw new Error(usage)}var client=this;return client._promise.all(map(queries,function performQuery(query){if(!query||query.indexName===undefined||query.params.facetName===undefined||query.params.facetQuery===undefined){throw new Error(usage)}var clone=__webpack_require__(3);var omit=__webpack_require__(14);var indexName=query.indexName;var params=query.params;var facetName=params.facetName;var filteredParams=omit(clone(params),function(keyName){return keyName==="facetName"});var searchParameters=client._getSearchParams(filteredParams,"");return client._jsonRequest({cache:client.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(indexName)+"/facets/"+encodeURIComponent(facetName)+"/query",hostType:"read",body:{params:searchParameters}})}))};AlgoliaSearchCore.prototype.setSecurityTags=function(tags){if(Object.prototype.toString.call(tags)==="[object Array]"){var strTags=[];for(var i=0;i<tags.length;++i){if(Object.prototype.toString.call(tags[i])==="[object Array]"){var oredTags=[];for(var j=0;j<tags[i].length;++j){oredTags.push(tags[i][j])}strTags.push("("+oredTags.join(",")+")")}else{strTags.push(tags[i])}}tags=strTags.join(",")}this.securityTags=tags};AlgoliaSearchCore.prototype.setUserToken=function(userToken){this.userToken=userToken};AlgoliaSearchCore.prototype.clearCache=function(){this.cache={}};AlgoliaSearchCore.prototype.setRequestTimeout=function(milliseconds){if(milliseconds){this._timeouts.connect=this._timeouts.read=this._timeouts.write=milliseconds}};AlgoliaSearchCore.prototype.setTimeouts=function(timeouts){this._timeouts=timeouts};AlgoliaSearchCore.prototype.getTimeouts=function(){return this._timeouts};AlgoliaSearchCore.prototype._getAppIdData=function(){var data=store.get(this.applicationID);if(data!==null)this._cacheAppIdData(data);return data};AlgoliaSearchCore.prototype._setAppIdData=function(data){data.lastChange=(new Date).getTime();this._cacheAppIdData(data);return store.set(this.applicationID,data)};AlgoliaSearchCore.prototype._checkAppIdData=function(){var data=this._getAppIdData();var now=(new Date).getTime();if(data===null||now-data.lastChange>RESET_APP_DATA_TIMER){return this._resetInitialAppIdData(data)}return data};AlgoliaSearchCore.prototype._resetInitialAppIdData=function(data){var newData=data||{};newData.hostIndexes={read:0,write:0};newData.timeoutMultiplier=1;newData.shuffleResult=newData.shuffleResult||shuffle([1,2,3]);return this._setAppIdData(newData)};AlgoliaSearchCore.prototype._cacheAppIdData=function(data){this._hostIndexes=data.hostIndexes;this._timeoutMultiplier=data.timeoutMultiplier;this._shuffleResult=data.shuffleResult};AlgoliaSearchCore.prototype._partialAppIdDataUpdate=function(newData){var foreach=__webpack_require__(2);var currentData=this._getAppIdData();foreach(newData,function(value,key){currentData[key]=value});return this._setAppIdData(currentData)};AlgoliaSearchCore.prototype._getHostByType=function(hostType){return this.hosts[hostType][this._getHostIndexByType(hostType)]};AlgoliaSearchCore.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier};AlgoliaSearchCore.prototype._getHostIndexByType=function(hostType){return this._hostIndexes[hostType]};AlgoliaSearchCore.prototype._setHostIndexByType=function(hostIndex,hostType){var clone=__webpack_require__(3);var newHostIndexes=clone(this._hostIndexes);newHostIndexes[hostType]=hostIndex;this._partialAppIdDataUpdate({hostIndexes:newHostIndexes});return hostIndex};AlgoliaSearchCore.prototype._incrementHostIndex=function(hostType){return this._setHostIndexByType((this._getHostIndexByType(hostType)+1)%this.hosts[hostType].length,hostType)};AlgoliaSearchCore.prototype._incrementTimeoutMultipler=function(){var timeoutMultiplier=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:timeoutMultiplier})};AlgoliaSearchCore.prototype._getTimeoutsForRequest=function(hostType){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[hostType]*this._timeoutMultiplier}};function prepareHost(protocol){return function prepare(host){return protocol+"//"+host.toLowerCase()}}function safeJSONStringify(obj){if(Array.prototype.toJSON===undefined){return JSON.stringify(obj)}var toJSON=Array.prototype.toJSON;delete Array.prototype.toJSON;var out=JSON.stringify(obj);Array.prototype.toJSON=toJSON;return out}function shuffle(array){var currentIndex=array.length;var temporaryValue;var randomIndex;while(currentIndex!==0){randomIndex=Math.floor(Math.random()*currentIndex);currentIndex-=1;temporaryValue=array[currentIndex];array[currentIndex]=array[randomIndex];array[randomIndex]=temporaryValue}return array}function removeCredentials(headers){var newHeaders={};for(var headerName in headers){if(Object.prototype.hasOwnProperty.call(headers,headerName)){var value;if(headerName==="x-algolia-api-key"||headerName==="x-algolia-application-id"){value="**hidden for security purposes**"}else{value=headers[headerName]}newHeaders[headerName]=value}}return newHeaders}},function(module,exports){module.exports=function exitPromise(fn,_setTimeout){_setTimeout(fn,0)}},function(module,exports,__webpack_require__){var buildSearchMethod=__webpack_require__(13);var deprecate=__webpack_require__(33);var deprecatedMessage=__webpack_require__(34);module.exports=IndexCore;function IndexCore(algoliasearch,indexName){this.indexName=indexName;this.as=algoliasearch;this.typeAheadArgs=null;this.typeAheadValueOption=null;this.cache={}}IndexCore.prototype.clearCache=function(){this.cache={}};IndexCore.prototype.search=buildSearchMethod("query");IndexCore.prototype.similarSearch=buildSearchMethod("similarQuery");IndexCore.prototype.browse=function(query,queryParameters,callback){var merge=__webpack_require__(35);var indexObj=this;var page;var hitsPerPage;if(arguments.length===0||arguments.length===1&&typeof arguments[0]==="function"){page=0;callback=arguments[0];query=undefined}else if(typeof arguments[0]==="number"){page=arguments[0];if(typeof arguments[1]==="number"){hitsPerPage=arguments[1]}else if(typeof arguments[1]==="function"){callback=arguments[1];hitsPerPage=undefined}query=undefined;queryParameters=undefined}else if(typeof arguments[0]==="object"){if(typeof arguments[1]==="function"){callback=arguments[1]}queryParameters=arguments[0];query=undefined}else if(typeof arguments[0]==="string"&&typeof arguments[1]==="function"){callback=arguments[1];queryParameters=undefined}queryParameters=merge({},queryParameters||{},{page:page,hitsPerPage:hitsPerPage,query:query});var params=this.as._getSearchParams(queryParameters,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(indexObj.indexName)+"/browse",body:{params:params},hostType:"read",callback:callback})};IndexCore.prototype.browseFrom=function(cursor,callback){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:cursor},hostType:"read",callback:callback})};IndexCore.prototype.searchForFacetValues=function(params,callback){var clone=__webpack_require__(3);var omit=__webpack_require__(14);var usage="Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])";if(params.facetName===undefined||params.facetQuery===undefined){throw new Error(usage)}var facetName=params.facetName;var filteredParams=omit(clone(params),function(keyName){return keyName==="facetName"});var searchParameters=this.as._getSearchParams(filteredParams,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(facetName)+"/query",hostType:"read",body:{params:searchParameters},callback:callback})};IndexCore.prototype.searchFacet=deprecate(function(params,callback){return this.searchForFacetValues(params,callback)},deprecatedMessage("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])"));IndexCore.prototype._search=function(params,url,callback,additionalUA){return this.as._jsonRequest({cache:this.cache,method:"POST",url:url||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:params},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:params}},callback:callback,additionalUA:additionalUA})};IndexCore.prototype.getObject=function(objectID,attrs,callback){var indexObj=this;if(arguments.length===1||typeof attrs==="function"){callback=attrs;attrs=undefined}var params="";if(attrs!==undefined){params="?attributes=";for(var i=0;i<attrs.length;++i){if(i!==0){params+=","}params+=attrs[i]}}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(indexObj.indexName)+"/"+encodeURIComponent(objectID)+params,hostType:"read",callback:callback})};IndexCore.prototype.getObjects=function(objectIDs,attributesToRetrieve,callback){var isArray=__webpack_require__(6);var map=__webpack_require__(7);var usage="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!isArray(objectIDs)){throw new Error(usage)}var indexObj=this;if(arguments.length===1||typeof attributesToRetrieve==="function"){callback=attributesToRetrieve;attributesToRetrieve=undefined}var body={requests:map(objectIDs,function prepareRequest(objectID){var request={indexName:indexObj.indexName,objectID:objectID};if(attributesToRetrieve){request.attributesToRetrieve=attributesToRetrieve.join(",")}return request})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:body,callback:callback})};IndexCore.prototype.as=null;IndexCore.prototype.indexName=null;IndexCore.prototype.typeAheadArgs=null;IndexCore.prototype.typeAheadValueOption=null},function(module,exports){module.exports=function deprecate(fn,message){var warned=false;function deprecated(){if(!warned){console.warn(message);warned=true}return fn.apply(this,arguments)}return deprecated}},function(module,exports){module.exports=function deprecatedMessage(previousUsage,newUsage){var githubAnchorLink=previousUsage.toLowerCase().replace(/[\.\(\)]/g,"");return"algoliasearch: `"+previousUsage+"` was replaced by `"+newUsage+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+githubAnchorLink}},function(module,exports,__webpack_require__){var foreach=__webpack_require__(2);module.exports=function merge(destination){var sources=Array.prototype.slice.call(arguments);foreach(sources,function(source){for(var keyName in source){if(source.hasOwnProperty(keyName)){if(typeof destination[keyName]==="object"&&typeof source[keyName]==="object"){destination[keyName]=merge({},destination[keyName],source[keyName])}else if(source[keyName]!==undefined){destination[keyName]=source[keyName]}}}});return destination}},function(module,exports,__webpack_require__){"use strict";var has=Object.prototype.hasOwnProperty;var toStr=Object.prototype.toString;var slice=Array.prototype.slice;var isArgs=__webpack_require__(37);var isEnumerable=Object.prototype.propertyIsEnumerable;var hasDontEnumBug=!isEnumerable.call({toString:null},"toString");var hasProtoEnumBug=isEnumerable.call(function(){},"prototype");var dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var equalsConstructorPrototype=function(o){var ctor=o.constructor;return ctor&&ctor.prototype===o};var excludedKeys={$applicationCache:true,$console:true,$external:true,$frame:true,$frameElement:true,$frames:true,$innerHeight:true,$innerWidth:true,$outerHeight:true,$outerWidth:true,$pageXOffset:true,$pageYOffset:true,$parent:true,$scrollLeft:true,$scrollTop:true,$scrollX:true,$scrollY:true,$self:true,$webkitIndexedDB:true,$webkitStorageInfo:true,$window:true};var hasAutomationEqualityBug=function(){if(typeof window==="undefined"){return false}for(var k in window){try{if(!excludedKeys["$"+k]&&has.call(window,k)&&window[k]!==null&&typeof window[k]==="object"){try{equalsConstructorPrototype(window[k])}catch(e){return true}}}catch(e){return true}}return false}();var equalsConstructorPrototypeIfNotBuggy=function(o){if(typeof window==="undefined"||!hasAutomationEqualityBug){return equalsConstructorPrototype(o)}try{return equalsConstructorPrototype(o)}catch(e){return false}};var keysShim=function keys(object){var isObject=object!==null&&typeof object==="object";var isFunction=toStr.call(object)==="[object Function]";var isArguments=isArgs(object);var isString=isObject&&toStr.call(object)==="[object String]";var theKeys=[];if(!isObject&&!isFunction&&!isArguments){throw new TypeError("Object.keys called on a non-object")}var skipProto=hasProtoEnumBug&&isFunction;if(isString&&object.length>0&&!has.call(object,0)){for(var i=0;i<object.length;++i){theKeys.push(String(i))}}if(isArguments&&object.length>0){for(var j=0;j<object.length;++j){theKeys.push(String(j))}}else{for(var name in object){if(!(skipProto&&name==="prototype")&&has.call(object,name)){theKeys.push(String(name))}}}if(hasDontEnumBug){var skipConstructor=equalsConstructorPrototypeIfNotBuggy(object);for(var k=0;k<dontEnums.length;++k){if(!(skipConstructor&&dontEnums[k]==="constructor")&&has.call(object,dontEnums[k])){theKeys.push(dontEnums[k])}}}return theKeys};keysShim.shim=function shimObjectKeys(){if(Object.keys){var keysWorksWithArguments=function(){return(Object.keys(arguments)||"").length===2}(1,2);if(!keysWorksWithArguments){var originalKeys=Object.keys;Object.keys=function keys(object){if(isArgs(object)){return originalKeys(slice.call(object))}else{return originalKeys(object)}}}}else{Object.keys=keysShim}return Object.keys||keysShim};module.exports=keysShim},function(module,exports,__webpack_require__){"use strict";var toStr=Object.prototype.toString;module.exports=function isArguments(value){var str=toStr.call(value);var isArgs=str==="[object Arguments]";if(!isArgs){isArgs=str!=="[object Array]"&&value!==null&&typeof value==="object"&&typeof value.length==="number"&&value.length>=0&&toStr.call(value.callee)==="[object Function]"}return isArgs}},function(module,exports,__webpack_require__){(function(global){var debug=__webpack_require__(8)("algoliasearch:src/hostIndexState.js");var localStorageNamespace="algoliasearch-client-js";var store;var moduleStore={state:{},set:function(key,data){this.state[key]=data;return this.state[key]},get:function(key){return this.state[key]||null}};var localStorageStore={set:function(key,data){moduleStore.set(key,data);try{var namespace=JSON.parse(global.localStorage[localStorageNamespace]);namespace[key]=data;global.localStorage[localStorageNamespace]=JSON.stringify(namespace);return namespace[key]}catch(e){return localStorageFailure(key,e)}},get:function(key){try{return JSON.parse(global.localStorage[localStorageNamespace])[key]||null}catch(e){return localStorageFailure(key,e)}}};function localStorageFailure(key,e){debug("localStorage failed with",e);cleanup();store=moduleStore;return store.get(key)}store=supportsLocalStorage()?localStorageStore:moduleStore;module.exports={get:getOrSet,set:getOrSet,supportsLocalStorage:supportsLocalStorage};function getOrSet(key,data){if(arguments.length===1){return store.get(key)}return store.set(key,data)}function supportsLocalStorage(){try{if("localStorage"in global&&global.localStorage!==null){if(!global.localStorage[localStorageNamespace]){global.localStorage.setItem(localStorageNamespace,JSON.stringify({}))}return true}return false}catch(_){return false}}function cleanup(){try{global.localStorage.removeItem(localStorageNamespace)}catch(_){}}}).call(exports,__webpack_require__(4))},function(module,exports,__webpack_require__){exports=module.exports=createDebug.debug=createDebug["default"]=createDebug;exports.coerce=coerce;exports.disable=disable;exports.enable=enable;exports.enabled=enabled;exports.humanize=__webpack_require__(40);exports.names=[];exports.skips=[];exports.formatters={};var prevTime;function selectColor(namespace){var hash=0,i;for(i in namespace){hash=(hash<<5)-hash+namespace.charCodeAt(i);hash|=0}return exports.colors[Math.abs(hash)%exports.colors.length]}function createDebug(namespace){function debug(){if(!debug.enabled)return;var self=debug;var curr=+new Date;var ms=curr-(prevTime||curr);self.diff=ms;self.prev=prevTime;self.curr=curr;prevTime=curr;var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i]}args[0]=exports.coerce(args[0]);if("string"!==typeof args[0]){args.unshift("%O")}var index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,function(match,format){if(match==="%%")return match;index++;var formatter=exports.formatters[format];if("function"===typeof formatter){var val=args[index];match=formatter.call(self,val);args.splice(index,1);index--}return match});exports.formatArgs.call(self,args);var logFn=debug.log||exports.log||console.log.bind(console);logFn.apply(self,args)}debug.namespace=namespace;debug.enabled=exports.enabled(namespace);debug.useColors=exports.useColors();debug.color=selectColor(namespace);if("function"===typeof exports.init){exports.init(debug)}return debug}function enable(namespaces){exports.save(namespaces);exports.names=[];exports.skips=[];var split=(typeof namespaces==="string"?namespaces:"").split(/[\s,]+/);var len=split.length;for(var i=0;i<len;i++){if(!split[i])continue;namespaces=split[i].replace(/\*/g,".*?");if(namespaces[0]==="-"){exports.skips.push(new RegExp("^"+namespaces.substr(1)+"$"))}else{exports.names.push(new RegExp("^"+namespaces+"$"))}}}function disable(){exports.enable("")}function enabled(name){var i,len;for(i=0,len=exports.skips.length;i<len;i++){if(exports.skips[i].test(name)){return false}}for(i=0,len=exports.names.length;i<len;i++){if(exports.names[i].test(name)){return true}}return false}function coerce(val){if(val instanceof Error)return val.stack||val.message;return val}},function(module,exports){var s=1e3;var m=s*60;var h=m*60;var d=h*24;var y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0){return parse(val)}else if(type==="number"&&isNaN(val)===false){return options.long?fmtLong(val):fmtShort(val)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse(str){str=String(str);if(str.length>100){return}var match=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);if(!match){return}var n=parseFloat(match[1]);var type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return undefined}}function fmtShort(ms){if(ms>=d){return Math.round(ms/d)+"d"}if(ms>=h){return Math.round(ms/h)+"h"}if(ms>=m){return Math.round(ms/m)+"m"}if(ms>=s){return Math.round(ms/s)+"s"}return ms+"ms"}function fmtLong(ms){return plural(ms,d,"day")||plural(ms,h,"hour")||plural(ms,m,"minute")||plural(ms,s,"second")||ms+" ms"}function plural(ms,n,name){if(ms<n){return}if(ms<n*1.5){return Math.floor(ms/n)+" "+name}return Math.ceil(ms/n)+" "+name+"s"}},function(module,exports,__webpack_require__){"use strict";var global=__webpack_require__(42);var Promise=global.Promise||__webpack_require__(43).Promise;module.exports=function createAlgoliasearch(AlgoliaSearch,uaSuffix){var inherits=__webpack_require__(12);var errors=__webpack_require__(5);var inlineHeaders=__webpack_require__(44);var jsonpRequest=__webpack_require__(46);var places=__webpack_require__(47);uaSuffix=uaSuffix||"";if(false){require("debug").enable("algoliasearch*")}function algoliasearch(applicationID,apiKey,opts){var cloneDeep=__webpack_require__(3);opts=cloneDeep(opts||{});opts._ua=opts._ua||algoliasearch.ua;return new AlgoliaSearchBrowser(applicationID,apiKey,opts)}algoliasearch.version=__webpack_require__(48);algoliasearch.ua="Algolia for vanilla JavaScript "+uaSuffix+algoliasearch.version;algoliasearch.initPlaces=places(algoliasearch);global.__algolia={debug:__webpack_require__(8),algoliasearch:algoliasearch};var support={hasXMLHttpRequest:"XMLHttpRequest"in global,hasXDomainRequest:"XDomainRequest"in global};if(support.hasXMLHttpRequest){support.cors="withCredentials"in new XMLHttpRequest}function AlgoliaSearchBrowser(){AlgoliaSearch.apply(this,arguments)}inherits(AlgoliaSearchBrowser,AlgoliaSearch);AlgoliaSearchBrowser.prototype._request=function request(url,opts){return new Promise(function wrapRequest(resolve,reject){if(!support.cors&&!support.hasXDomainRequest){reject(new errors.Network("CORS not supported"));return}url=inlineHeaders(url,opts.headers);var body=opts.body;var req=support.cors?new XMLHttpRequest:new XDomainRequest;var reqTimeout;var timedOut;var connected=false;reqTimeout=setTimeout(onTimeout,opts.timeouts.connect);req.onprogress=onProgress;if("onreadystatechange"in req)req.onreadystatechange=onReadyStateChange;req.onload=onLoad;req.onerror=onError;if(req instanceof XMLHttpRequest){req.open(opts.method,url,true);if(opts.forceAuthHeaders){req.setRequestHeader("x-algolia-application-id",opts.headers["x-algolia-application-id"]);req.setRequestHeader("x-algolia-api-key",opts.headers["x-algolia-api-key"])}}else{req.open(opts.method,url)}if(support.cors){if(body){if(opts.method==="POST"){req.setRequestHeader("content-type","application/x-www-form-urlencoded")}else{req.setRequestHeader("content-type","application/json")}}req.setRequestHeader("accept","application/json")}if(body){req.send(body)}else{req.send()}function onLoad(){if(timedOut){return}clearTimeout(reqTimeout);var out;try{out={body:JSON.parse(req.responseText),responseText:req.responseText,statusCode:req.status,headers:req.getAllResponseHeaders&&req.getAllResponseHeaders()||{}}}catch(e){out=new errors.UnparsableJSON({more:req.responseText})}if(out instanceof errors.UnparsableJSON){reject(out)}else{resolve(out)}}function onError(event){if(timedOut){return}clearTimeout(reqTimeout);reject(new errors.Network({more:event}))}function onTimeout(){timedOut=true;req.abort();reject(new errors.RequestTimeout)}function onConnect(){connected=true;clearTimeout(reqTimeout);reqTimeout=setTimeout(onTimeout,opts.timeouts.complete)}function onProgress(){if(!connected)onConnect()}function onReadyStateChange(){if(!connected&&req.readyState>1)onConnect()}})};AlgoliaSearchBrowser.prototype._request.fallback=function requestFallback(url,opts){url=inlineHeaders(url,opts.headers);return new Promise(function wrapJsonpRequest(resolve,reject){jsonpRequest(url,opts,function jsonpRequestDone(err,content){if(err){reject(err);return}resolve(content)})})};AlgoliaSearchBrowser.prototype._promise={reject:function rejectPromise(val){return Promise.reject(val)},resolve:function resolvePromise(val){return Promise.resolve(val)},delay:function delayPromise(ms){return new Promise(function resolveOnTimeout(resolve){setTimeout(resolve,ms)})},all:function all(promises){return Promise.all(promises)}};return algoliasearch}},function(module,exports,__webpack_require__){(function(global){var win;if(typeof window!=="undefined"){win=window}else if(typeof global!=="undefined"){win=global}else if(typeof self!=="undefined"){win=self}else{win={}}module.exports=win}).call(exports,__webpack_require__(4))},function(module,exports,__webpack_require__){(function(process,global){(function(global,factory){true?module.exports=factory():typeof define==="function"&&define.amd?define(factory):global.ES6Promise=factory()})(this,function(){"use strict";function objectOrFunction(x){var type=typeof x;return x!==null&&(type==="object"||type==="function")}function isFunction(x){return typeof x==="function"}var _isArray=void 0;if(Array.isArray){_isArray=Array.isArray}else{_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}var isArray=_isArray;var len=0;var vertxNext=void 0;var customSchedulerFn=void 0;var asap=function asap(callback,arg){queue[len]=callback;queue[len+1]=arg;len+=2;if(len===2){if(customSchedulerFn){customSchedulerFn(flush)}else{scheduleFlush()}}};function setScheduler(scheduleFn){customSchedulerFn=scheduleFn}function setAsap(asapFn){asap=asapFn}var browserWindow=typeof window!=="undefined"?window:undefined;var browserGlobal=browserWindow||{};var BrowserMutationObserver=browserGlobal.MutationObserver||browserGlobal.WebKitMutationObserver;var isNode=typeof self==="undefined"&&typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function useNextTick(){return function(){return process.nextTick(flush)}}function useVertxTimer(){if(typeof vertxNext!=="undefined"){return function(){vertxNext(flush)}}return useSetTimeout()}function useMutationObserver(){var iterations=0;var observer=new BrowserMutationObserver(flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=flush;return function(){return channel.port2.postMessage(0)}}function useSetTimeout(){var globalSetTimeout=setTimeout;return function(){return globalSetTimeout(flush,1)}}var queue=new Array(1e3);function flush(){for(var i=0;i<len;i+=2){var callback=queue[i];var arg=queue[i+1];callback(arg);queue[i]=undefined;queue[i+1]=undefined}len=0}function attemptVertx(){try{var vertx=Function("return this")().require("vertx");vertxNext=vertx.runOnLoop||vertx.runOnContext;return useVertxTimer()}catch(e){return useSetTimeout()}}var scheduleFlush=void 0;if(isNode){scheduleFlush=useNextTick()}else if(BrowserMutationObserver){scheduleFlush=useMutationObserver()}else if(isWorker){scheduleFlush=useMessageChannel()}else if(browserWindow===undefined&&"function"==="function"){scheduleFlush=attemptVertx()}else{scheduleFlush=useSetTimeout()}function then(onFulfillment,onRejection){var parent=this;var child=new this.constructor(noop);if(child[PROMISE_ID]===undefined){makePromise(child)}var _state=parent._state;if(_state){var callback=arguments[_state-1];asap(function(){return invokeCallback(_state,child,callback,parent._result)})}else{subscribe(parent,child,onFulfillment,onRejection)}return child}function resolve$1(object){var Constructor=this;if(object&&typeof object==="object"&&object.constructor===Constructor){return object}var promise=new Constructor(noop);resolve(promise,object);return promise}var PROMISE_ID=Math.random().toString(36).substring(2);function noop(){}var PENDING=void 0;var FULFILLED=1;var REJECTED=2;var TRY_CATCH_ERROR={error:null};function selfFulfillment(){return new TypeError("You cannot resolve a promise with itself")}function cannotReturnOwn(){return new TypeError("A promises callback cannot return that same promise.")}function getThen(promise){try{return promise.then}catch(error){TRY_CATCH_ERROR.error=error;return TRY_CATCH_ERROR}}function tryThen(then$$1,value,fulfillmentHandler,rejectionHandler){try{then$$1.call(value,fulfillmentHandler,rejectionHandler)}catch(e){return e}}function handleForeignThenable(promise,thenable,then$$1){asap(function(promise){var sealed=false;var error=tryThen(then$$1,thenable,function(value){if(sealed){return}sealed=true;if(thenable!==value){resolve(promise,value)}else{fulfill(promise,value)}},function(reason){if(sealed){return}sealed=true;reject(promise,reason)},"Settle: "+(promise._label||" unknown promise"));if(!sealed&&error){sealed=true;reject(promise,error)}},promise)}function handleOwnThenable(promise,thenable){if(thenable._state===FULFILLED){fulfill(promise,thenable._result)}else if(thenable._state===REJECTED){reject(promise,thenable._result)}else{subscribe(thenable,undefined,function(value){return resolve(promise,value)},function(reason){return reject(promise,reason)})}}function handleMaybeThenable(promise,maybeThenable,then$$1){if(maybeThenable.constructor===promise.constructor&&then$$1===then&&maybeThenable.constructor.resolve===resolve$1){handleOwnThenable(promise,maybeThenable)}else{if(then$$1===TRY_CATCH_ERROR){reject(promise,TRY_CATCH_ERROR.error);TRY_CATCH_ERROR.error=null}else if(then$$1===undefined){fulfill(promise,maybeThenable)}else if(isFunction(then$$1)){handleForeignThenable(promise,maybeThenable,then$$1)}else{fulfill(promise,maybeThenable)}}}function resolve(promise,value){if(promise===value){reject(promise,selfFulfillment())}else if(objectOrFunction(value)){handleMaybeThenable(promise,value,getThen(value))}else{fulfill(promise,value)}}function publishRejection(promise){if(promise._onerror){promise._onerror(promise._result)}publish(promise)}function fulfill(promise,value){if(promise._state!==PENDING){return}promise._result=value;promise._state=FULFILLED;if(promise._subscribers.length!==0){asap(publish,promise)}}function reject(promise,reason){if(promise._state!==PENDING){return}promise._state=REJECTED;promise._result=reason;asap(publishRejection,promise)}function subscribe(parent,child,onFulfillment,onRejection){var _subscribers=parent._subscribers;var length=_subscribers.length;parent._onerror=null;_subscribers[length]=child;_subscribers[length+FULFILLED]=onFulfillment;_subscribers[length+REJECTED]=onRejection;if(length===0&&parent._state){asap(publish,parent)}}function publish(promise){var subscribers=promise._subscribers;var settled=promise._state;if(subscribers.length===0){return}var child=void 0,callback=void 0,detail=promise._result;for(var i=0;i<subscribers.length;i+=3){child=subscribers[i];callback=subscribers[i+settled];if(child){invokeCallback(settled,child,callback,detail)}else{callback(detail)}}promise._subscribers.length=0}function tryCatch(callback,detail){try{return callback(detail)}catch(e){TRY_CATCH_ERROR.error=e;return TRY_CATCH_ERROR}}function invokeCallback(settled,promise,callback,detail){var hasCallback=isFunction(callback),value=void 0,error=void 0,succeeded=void 0,failed=void 0;if(hasCallback){value=tryCatch(callback,detail);if(value===TRY_CATCH_ERROR){failed=true;error=value.error;value.error=null}else{succeeded=true}if(promise===value){reject(promise,cannotReturnOwn());return}}else{value=detail;succeeded=true}if(promise._state!==PENDING){}else if(hasCallback&&succeeded){resolve(promise,value)}else if(failed){reject(promise,error)}else if(settled===FULFILLED){fulfill(promise,value)}else if(settled===REJECTED){reject(promise,value)}}function initializePromise(promise,resolver){try{resolver(function resolvePromise(value){resolve(promise,value)},function rejectPromise(reason){reject(promise,reason)})}catch(e){reject(promise,e)}}var id=0;function nextId(){return id++}function makePromise(promise){promise[PROMISE_ID]=id++;promise._state=undefined;promise._result=undefined;promise._subscribers=[]}function validationError(){return new Error("Array Methods must be provided an Array")}var Enumerator=function(){function Enumerator(Constructor,input){this._instanceConstructor=Constructor;this.promise=new Constructor(noop);if(!this.promise[PROMISE_ID]){makePromise(this.promise)}if(isArray(input)){this.length=input.length;this._remaining=input.length;this._result=new Array(this.length);if(this.length===0){fulfill(this.promise,this._result)}else{this.length=this.length||0;this._enumerate(input);if(this._remaining===0){fulfill(this.promise,this._result)}}}else{reject(this.promise,validationError())}}Enumerator.prototype._enumerate=function _enumerate(input){for(var i=0;this._state===PENDING&&i<input.length;i++){this._eachEntry(input[i],i)}};Enumerator.prototype._eachEntry=function _eachEntry(entry,i){var c=this._instanceConstructor;var resolve$$1=c.resolve;if(resolve$$1===resolve$1){var _then=getThen(entry);if(_then===then&&entry._state!==PENDING){this._settledAt(entry._state,i,entry._result)}else if(typeof _then!=="function"){this._remaining--;this._result[i]=entry}else if(c===Promise$1){var promise=new c(noop);handleMaybeThenable(promise,entry,_then);this._willSettleAt(promise,i)}else{this._willSettleAt(new c(function(resolve$$1){return resolve$$1(entry)}),i)}}else{this._willSettleAt(resolve$$1(entry),i)}};Enumerator.prototype._settledAt=function _settledAt(state,i,value){var promise=this.promise;if(promise._state===PENDING){this._remaining--;if(state===REJECTED){reject(promise,value)}else{this._result[i]=value}}if(this._remaining===0){fulfill(promise,this._result)}};Enumerator.prototype._willSettleAt=function _willSettleAt(promise,i){var enumerator=this;subscribe(promise,undefined,function(value){return enumerator._settledAt(FULFILLED,i,value)},function(reason){return enumerator._settledAt(REJECTED,i,reason)})};return Enumerator}();function all(entries){return new Enumerator(this,entries).promise}function race(entries){var Constructor=this;if(!isArray(entries)){return new Constructor(function(_,reject){return reject(new TypeError("You must pass an array to race."))})}else{return new Constructor(function(resolve,reject){var length=entries.length;for(var i=0;i<length;i++){Constructor.resolve(entries[i]).then(resolve,reject)}})}}function reject$1(reason){var Constructor=this;var promise=new Constructor(noop);reject(promise,reason);return promise}function needsResolver(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function needsNew(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var Promise$1=function(){function Promise(resolver){this[PROMISE_ID]=nextId();this._result=this._state=undefined;this._subscribers=[];if(noop!==resolver){typeof resolver!=="function"&&needsResolver();this instanceof Promise?initializePromise(this,resolver):needsNew()}}Promise.prototype.catch=function _catch(onRejection){return this.then(null,onRejection)};Promise.prototype.finally=function _finally(callback){var promise=this;var constructor=promise.constructor;return promise.then(function(value){return constructor.resolve(callback()).then(function(){return value})},function(reason){return constructor.resolve(callback()).then(function(){throw reason})})};return Promise}();Promise$1.prototype.then=then;Promise$1.all=all;Promise$1.race=race;Promise$1.resolve=resolve$1;Promise$1.reject=reject$1;Promise$1._setScheduler=setScheduler;Promise$1._setAsap=setAsap;Promise$1._asap=asap;function polyfill(){var local=void 0;if(typeof global!=="undefined"){local=global}else if(typeof self!=="undefined"){local=self}else{try{local=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}}var P=local.Promise;if(P){var promiseToString=null;try{promiseToString=Object.prototype.toString.call(P.resolve())}catch(e){}if(promiseToString==="[object Promise]"&&!P.cast){return}}local.Promise=Promise$1}Promise$1.polyfill=polyfill;Promise$1.Promise=Promise$1;return Promise$1})}).call(exports,__webpack_require__(9),__webpack_require__(4))},function(module,exports,__webpack_require__){"use strict";module.exports=inlineHeaders;var encode=__webpack_require__(45);function inlineHeaders(url,headers){if(/\?/.test(url)){url+="&"}else{url+="?"}return url+encode(headers)}},function(module,exports,__webpack_require__){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){sep=sep||"&";eq=eq||"=";if(obj===null){obj=undefined}if(typeof obj==="object"){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep)}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]))}}).join(sep)}if(!name)return"";return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj))};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i))}return res}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key)}return res}},function(module,exports,__webpack_require__){"use strict";module.exports=jsonpRequest;var errors=__webpack_require__(5);var JSONPCounter=0;function jsonpRequest(url,opts,cb){if(opts.method!=="GET"){cb(new Error("Method "+opts.method+" "+url+" is not supported by JSONP."));return}opts.debug("JSONP: start");var cbCalled=false;var timedOut=false;JSONPCounter+=1;var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");var cbName="algoliaJSONP_"+JSONPCounter;var done=false;window[cbName]=function(data){removeGlobals();if(timedOut){opts.debug("JSONP: Late answer, ignoring");return}cbCalled=true;clean();cb(null,{body:data,responseText:JSON.stringify(data)})};url+="&callback="+cbName;if(opts.jsonBody&&opts.jsonBody.params){url+="&"+opts.jsonBody.params}var ontimeout=setTimeout(timeout,opts.timeouts.complete);script.onreadystatechange=readystatechange;script.onload=success;script.onerror=error;script.async=true;script.defer=true;script.src=url;head.appendChild(script);function success(){opts.debug("JSONP: success");if(done||timedOut){return}done=true;if(!cbCalled){opts.debug("JSONP: Fail. Script loaded but did not call the callback");clean();cb(new errors.JSONPScriptFail)}}function readystatechange(){if(this.readyState==="loaded"||this.readyState==="complete"){success()}}function clean(){clearTimeout(ontimeout);script.onload=null;script.onreadystatechange=null;script.onerror=null;head.removeChild(script)}function removeGlobals(){try{delete window[cbName];delete window[cbName+"_loaded"]}catch(e){window[cbName]=window[cbName+"_loaded"]=undefined}}function timeout(){opts.debug("JSONP: Script timeout");timedOut=true;clean();cb(new errors.RequestTimeout)}function error(){opts.debug("JSONP: Script error");if(done||timedOut){return}clean();cb(new errors.JSONPScriptError)}}},function(module,exports,__webpack_require__){module.exports=createPlacesClient;var buildSearchMethod=__webpack_require__(13);function createPlacesClient(algoliasearch){return function places(appID,apiKey,opts){var cloneDeep=__webpack_require__(3);opts=opts&&cloneDeep(opts)||{};opts.hosts=opts.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"];if(arguments.length===0||typeof appID==="object"||appID===undefined){appID="";apiKey="";opts._allowEmptyCredentials=true}var client=algoliasearch(appID,apiKey,opts);var index=client.initIndex("places");index.search=buildSearchMethod("query","/1/places/query");index.getObject=function(objectID,callback){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(objectID),hostType:"read",callback:callback})};return index}}},function(module,exports,__webpack_require__){"use strict";module.exports="3.30.0"},function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(50)},function(module,exports,__webpack_require__){"use strict";var zepto=__webpack_require__(15);var DOM=__webpack_require__(1);DOM.element=zepto;var _=__webpack_require__(0);_.isArray=zepto.isArray;_.isFunction=zepto.isFunction;_.isObject=zepto.isPlainObject;_.bind=zepto.proxy;_.each=function(collection,cb){zepto.each(collection,reverseArgs);function reverseArgs(index,value){return cb(value,index)}};_.map=zepto.map;_.mixin=zepto.extend;_.Event=zepto.Event;var typeaheadKey="aaAutocomplete";var Typeahead=__webpack_require__(51);var EventBus=__webpack_require__(16);function autocomplete(selector,options,datasets,typeaheadObject){datasets=_.isArray(datasets)?datasets:[].slice.call(arguments,2);var inputs=zepto(selector).each(function(i,input){var $input=zepto(input);var eventBus=new EventBus({el:$input});var typeahead=typeaheadObject||new Typeahead({input:$input,eventBus:eventBus,dropdownMenuContainer:options.dropdownMenuContainer,hint:options.hint===undefined?true:!!options.hint,minLength:options.minLength,autoselect:options.autoselect,autoselectOnBlur:options.autoselectOnBlur,tabAutocomplete:options.tabAutocomplete,openOnFocus:options.openOnFocus,templates:options.templates,debug:options.debug,clearOnSelected:options.clearOnSelected,cssClasses:options.cssClasses,datasets:datasets,keyboardShortcuts:options.keyboardShortcuts,appendTo:options.appendTo,autoWidth:options.autoWidth,ariaLabel:options.ariaLabel||input.getAttribute("aria-label")});$input.data(typeaheadKey,typeahead)});inputs.autocomplete={};_.each(["open","close","getVal","setVal","destroy","getWrapper"],function(method){inputs.autocomplete[method]=function(){var methodArguments=arguments;var result;inputs.each(function(j,input){var typeahead=zepto(input).data(typeaheadKey);result=typeahead[method].apply(typeahead,methodArguments)});return result}});return inputs}autocomplete.sources=Typeahead.sources;autocomplete.escapeHighlightedString=_.escapeHighlightedString;var wasAutocompleteSet="autocomplete"in window;var oldAutocomplete=window.autocomplete;autocomplete.noConflict=function noConflict(){if(wasAutocompleteSet){window.autocomplete=oldAutocomplete}else{delete window.autocomplete}return autocomplete};module.exports=autocomplete},function(module,exports,__webpack_require__){"use strict";var attrsKey="aaAttrs";var _=__webpack_require__(0);var DOM=__webpack_require__(1);var EventBus=__webpack_require__(16);var Input=__webpack_require__(52);var Dropdown=__webpack_require__(59);var html=__webpack_require__(17);var css=__webpack_require__(11);function Typeahead(o){var $menu;var $hint;o=o||{};if(!o.input){_.error("missing input")}this.isActivated=false;this.debug=!!o.debug;this.autoselect=!!o.autoselect;this.autoselectOnBlur=!!o.autoselectOnBlur;this.openOnFocus=!!o.openOnFocus;this.minLength=_.isNumber(o.minLength)?o.minLength:1;this.autoWidth=o.autoWidth===undefined?true:!!o.autoWidth;this.clearOnSelected=!!o.clearOnSelected;this.tabAutocomplete=o.tabAutocomplete===undefined?true:!!o.tabAutocomplete;o.hint=!!o.hint;if(o.hint&&o.appendTo){throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time")}this.css=o.css=_.mixin({},css,o.appendTo?css.appendTo:{});this.cssClasses=o.cssClasses=_.mixin({},css.defaultClasses,o.cssClasses||{});this.cssClasses.prefix=o.cssClasses.formattedPrefix=_.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);this.listboxId=o.listboxId=[this.cssClasses.root,"listbox",_.getUniqueId()].join("-");var domElts=buildDom(o);this.$node=domElts.wrapper;var $input=this.$input=domElts.input;$menu=domElts.menu;$hint=domElts.hint;if(o.dropdownMenuContainer){DOM.element(o.dropdownMenuContainer).css("position","relative").append($menu.css("top","0"))}$input.on("blur.aa",function($e){var active=document.activeElement;if(_.isMsie()&&($menu[0]===active||$menu[0].contains(active))){$e.preventDefault();$e.stopImmediatePropagation();_.defer(function(){$input.focus()})}});$menu.on("mousedown.aa",function($e){$e.preventDefault()});this.eventBus=o.eventBus||new EventBus({el:$input});this.dropdown=new Typeahead.Dropdown({appendTo:o.appendTo,wrapper:this.$node,menu:$menu,datasets:o.datasets,templates:o.templates,cssClasses:o.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 Typeahead.Input({input:$input,hint:$hint}).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(o);this._setLanguageDirection()}_.mixin(Typeahead.prototype,{_bindKeyboardShortcuts:function(options){if(!options.keyboardShortcuts){return}var $input=this.$input;var keyboardShortcuts=[];_.each(options.keyboardShortcuts,function(key){if(typeof key==="string"){key=key.toUpperCase().charCodeAt(0)}keyboardShortcuts.push(key)});DOM.element(document).keydown(function(event){var elt=event.target||event.srcElement;var tagName=elt.tagName;if(elt.isContentEditable||tagName==="INPUT"||tagName==="SELECT"||tagName==="TEXTAREA"){return}var which=event.which||event.keyCode;if(keyboardShortcuts.indexOf(which)===-1){return}$input.focus();event.stopPropagation();event.preventDefault()})},_onSuggestionClicked:function onSuggestionClicked(type,$el){var datum;var context={selectionMethod:"click"};if(datum=this.dropdown.getDatumForSuggestion($el)){this._select(datum,context)}},_onCursorMoved:function onCursorMoved(event,updateInput){var datum=this.dropdown.getDatumForCursor();var currentCursorId=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(currentCursorId);if(datum){if(updateInput){this.input.setInputValue(datum.value,true)}this.eventBus.trigger("cursorchanged",datum.raw,datum.datasetName)}},_onCursorRemoved:function onCursorRemoved(){this.input.resetInputValue();this._updateHint();this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function onDatasetRendered(){this._updateHint();this.eventBus.trigger("updated")},_onOpened:function onOpened(){this._updateHint();this.input.expand();this.eventBus.trigger("opened")},_onEmpty:function onEmpty(){this.eventBus.trigger("empty")},_onRedrawn:function onRedrawn(){this.$node.css("top",0+"px");this.$node.css("left",0+"px");var inputRect=this.$input[0].getBoundingClientRect();if(this.autoWidth){this.$node.css("width",inputRect.width+"px")}var wrapperRect=this.$node[0].getBoundingClientRect();var top=inputRect.bottom-wrapperRect.top;this.$node.css("top",top+"px");var left=inputRect.left-wrapperRect.left;this.$node.css("left",left+"px");this.eventBus.trigger("redrawn")},_onShown:function onShown(){this.eventBus.trigger("shown");if(this.autoselect){this.dropdown.cursorTopSuggestion()}},_onClosed:function onClosed(){this.input.clearHint();this.input.removeActiveDescendant();this.input.collapse();this.eventBus.trigger("closed")},_onFocused:function onFocused(){this.isActivated=true;if(this.openOnFocus){var query=this.input.getQuery();if(query.length>=this.minLength){this.dropdown.update(query)}else{this.dropdown.empty()}this.dropdown.open()}},_onBlurred:function onBlurred(){var cursorDatum;var topSuggestionDatum;cursorDatum=this.dropdown.getDatumForCursor();topSuggestionDatum=this.dropdown.getDatumForTopSuggestion();var context={selectionMethod:"blur"};if(!this.debug){if(this.autoselectOnBlur&&cursorDatum){this._select(cursorDatum,context)}else if(this.autoselectOnBlur&&topSuggestionDatum){this._select(topSuggestionDatum,context)}else{this.isActivated=false;this.dropdown.empty();this.dropdown.close()}}},_onEnterKeyed:function onEnterKeyed(type,$e){var cursorDatum;var topSuggestionDatum;cursorDatum=this.dropdown.getDatumForCursor();topSuggestionDatum=this.dropdown.getDatumForTopSuggestion();var context={selectionMethod:"enterKey"};if(cursorDatum){this._select(cursorDatum,context);$e.preventDefault()}else if(this.autoselect&&topSuggestionDatum){this._select(topSuggestionDatum,context);$e.preventDefault()}},_onTabKeyed:function onTabKeyed(type,$e){if(!this.tabAutocomplete){this.dropdown.close();return}var datum;var context={selectionMethod:"tabKey"};if(datum=this.dropdown.getDatumForCursor()){this._select(datum,context);$e.preventDefault()}else{this._autocomplete(true)}},_onEscKeyed:function onEscKeyed(){this.dropdown.close();this.input.resetInputValue()},_onUpKeyed:function onUpKeyed(){var query=this.input.getQuery();if(this.dropdown.isEmpty&&query.length>=this.minLength){this.dropdown.update(query)}else{this.dropdown.moveCursorUp()}this.dropdown.open()},_onDownKeyed:function onDownKeyed(){var query=this.input.getQuery();if(this.dropdown.isEmpty&&query.length>=this.minLength){this.dropdown.update(query)}else{this.dropdown.moveCursorDown()}this.dropdown.open()},_onLeftKeyed:function onLeftKeyed(){if(this.dir==="rtl"){this._autocomplete()}},_onRightKeyed:function onRightKeyed(){if(this.dir==="ltr"){this._autocomplete()}},_onQueryChanged:function onQueryChanged(e,query){this.input.clearHintIfInvalid();if(query.length>=this.minLength){this.dropdown.update(query)}else{this.dropdown.empty()}this.dropdown.open();this._setLanguageDirection()},_onWhitespaceChanged:function onWhitespaceChanged(){this._updateHint();this.dropdown.open()},_setLanguageDirection:function setLanguageDirection(){var dir=this.input.getLanguageDirection();if(this.dir!==dir){this.dir=dir;this.$node.css("direction",dir);this.dropdown.setLanguageDirection(dir)}},_updateHint:function updateHint(){var datum;var val;var query;var escapedQuery;var frontMatchRegEx;var match;datum=this.dropdown.getDatumForTopSuggestion();if(datum&&this.dropdown.isVisible()&&!this.input.hasOverflow()){val=this.input.getInputValue();query=Input.normalizeQuery(val);escapedQuery=_.escapeRegExChars(query);frontMatchRegEx=new RegExp("^(?:"+escapedQuery+")(.+$)","i");match=frontMatchRegEx.exec(datum.value);if(match){this.input.setHint(val+match[1])}else{this.input.clearHint()}}else{this.input.clearHint()}},_autocomplete:function autocomplete(laxCursor){var hint;var query;var isCursorAtEnd;var datum;hint=this.input.getHint();query=this.input.getQuery();isCursorAtEnd=laxCursor||this.input.isCursorAtEnd();if(hint&&query!==hint&&isCursorAtEnd){datum=this.dropdown.getDatumForTopSuggestion();if(datum){this.input.setInputValue(datum.value)}this.eventBus.trigger("autocompleted",datum.raw,datum.datasetName)}},_select:function select(datum,context){if(typeof datum.value!=="undefined"){this.input.setQuery(datum.value)}if(this.clearOnSelected){this.setVal("")}else{this.input.setInputValue(datum.value,true)}this._setLanguageDirection();var event=this.eventBus.trigger("selected",datum.raw,datum.datasetName,context);if(event.isDefaultPrevented()===false){this.dropdown.close();_.defer(_.bind(this.dropdown.empty,this.dropdown))}},open:function open(){if(!this.isActivated){var query=this.input.getInputValue();if(query.length>=this.minLength){this.dropdown.update(query)}else{this.dropdown.empty()}}this.dropdown.open()},close:function close(){this.dropdown.close()},setVal:function setVal(val){val=_.toStr(val);if(this.isActivated){this.input.setInputValue(val)}else{this.input.setQuery(val);this.input.setInputValue(val,true)}this._setLanguageDirection()},getVal:function getVal(){return this.input.getQuery()},destroy:function destroy(){this.input.destroy();this.dropdown.destroy();destroyDomStructure(this.$node,this.cssClasses);this.$node=null},getWrapper:function getWrapper(){return this.dropdown.$container[0]}});function buildDom(options){var $input;var $wrapper;var $dropdown;var $hint;$input=DOM.element(options.input);$wrapper=DOM.element(html.wrapper.replace("%ROOT%",options.cssClasses.root)).css(options.css.wrapper);if(!options.appendTo&&$input.css("display")==="block"&&$input.parent().css("display")==="table"){$wrapper.css("display","table-cell")}var dropdownHtml=html.dropdown.replace("%PREFIX%",options.cssClasses.prefix).replace("%DROPDOWN_MENU%",options.cssClasses.dropdownMenu);$dropdown=DOM.element(dropdownHtml).css(options.css.dropdown).attr({role:"listbox",id:options.listboxId});if(options.templates&&options.templates.dropdownMenu){$dropdown.html(_.templatify(options.templates.dropdownMenu)())}$hint=$input.clone().css(options.css.hint).css(getBackgroundStyles($input));$hint.val("").addClass(_.className(options.cssClasses.prefix,options.cssClasses.hint,true)).removeAttr("id name placeholder required").prop("readonly",true).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1});if($hint.removeData){$hint.removeData()}$input.data(attrsKey,{"aria-autocomplete":$input.attr("aria-autocomplete"),"aria-expanded":$input.attr("aria-expanded"),"aria-owns":$input.attr("aria-owns"),autocomplete:$input.attr("autocomplete"),dir:$input.attr("dir"),role:$input.attr("role"),spellcheck:$input.attr("spellcheck"),style:$input.attr("style"),type:$input.attr("type")});$input.addClass(_.className(options.cssClasses.prefix,options.cssClasses.input,true)).attr({autocomplete:"off",spellcheck:false,role:"combobox","aria-autocomplete":options.datasets&&options.datasets[0]&&options.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":options.ariaLabel,"aria-owns":options.listboxId}).css(options.hint?options.css.input:options.css.inputWithNoHint);try{if(!$input.attr("dir")){$input.attr("dir","auto")}}catch(e){}$wrapper=options.appendTo?$wrapper.appendTo(DOM.element(options.appendTo).eq(0)).eq(0):$input.wrap($wrapper).parent();$wrapper.prepend(options.hint?$hint:null).append($dropdown);return{wrapper:$wrapper,input:$input,hint:$hint,menu:$dropdown}}function getBackgroundStyles($el){return{backgroundAttachment:$el.css("background-attachment"),backgroundClip:$el.css("background-clip"),backgroundColor:$el.css("background-color"),backgroundImage:$el.css("background-image"),backgroundOrigin:$el.css("background-origin"),backgroundPosition:$el.css("background-position"),backgroundRepeat:$el.css("background-repeat"),backgroundSize:$el.css("background-size")}}function destroyDomStructure($node,cssClasses){var $input=$node.find(_.className(cssClasses.prefix,cssClasses.input));_.each($input.data(attrsKey),function(val,key){if(val===undefined){$input.removeAttr(key)}else{$input.attr(key,val)}});$input.detach().removeClass(_.className(cssClasses.prefix,cssClasses.input,true)).insertAfter($node);if($input.removeData){$input.removeData(attrsKey)}$node.remove()}Typeahead.Dropdown=Dropdown;Typeahead.Input=Input;Typeahead.sources=__webpack_require__(61);module.exports=Typeahead},function(module,exports,__webpack_require__){"use strict";var specialKeyCodeMap;specialKeyCodeMap={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var _=__webpack_require__(0);var DOM=__webpack_require__(1);var EventEmitter=__webpack_require__(10);function Input(o){var that=this;var onBlur;var onFocus;var onKeydown;var onInput;o=o||{};if(!o.input){_.error("input is missing")}onBlur=_.bind(this._onBlur,this);onFocus=_.bind(this._onFocus,this);onKeydown=_.bind(this._onKeydown,this);onInput=_.bind(this._onInput,this);this.$hint=DOM.element(o.hint);this.$input=DOM.element(o.input).on("blur.aa",onBlur).on("focus.aa",onFocus).on("keydown.aa",onKeydown);if(this.$hint.length===0){this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=_.noop}if(!_.isMsie()){this.$input.on("input.aa",onInput)}else{this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function($e){if(specialKeyCodeMap[$e.which||$e.keyCode]){return}_.defer(_.bind(that._onInput,that,$e))})}this.query=this.$input.val();this.$overflowHelper=buildOverflowHelper(this.$input)}Input.normalizeQuery=function(str){return(str||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")};_.mixin(Input.prototype,EventEmitter,{_onBlur:function onBlur(){this.resetInputValue();this.$input.removeAttr("aria-activedescendant");this.trigger("blurred")},_onFocus:function onFocus(){this.trigger("focused")},_onKeydown:function onKeydown($e){var keyName=specialKeyCodeMap[$e.which||$e.keyCode];this._managePreventDefault(keyName,$e);if(keyName&&this._shouldTrigger(keyName,$e)){this.trigger(keyName+"Keyed",$e)}},_onInput:function onInput(){this._checkInputValue()},_managePreventDefault:function managePreventDefault(keyName,$e){var preventDefault;var hintValue;var inputValue;switch(keyName){case"tab":hintValue=this.getHint();inputValue=this.getInputValue();preventDefault=hintValue&&hintValue!==inputValue&&!withModifier($e);break;case"up":case"down":preventDefault=!withModifier($e);break;default:preventDefault=false}if(preventDefault){$e.preventDefault()}},_shouldTrigger:function shouldTrigger(keyName,$e){var trigger;switch(keyName){case"tab":trigger=!withModifier($e);break;default:trigger=true}return trigger},_checkInputValue:function checkInputValue(){var inputValue;var areEquivalent;var hasDifferentWhitespace;inputValue=this.getInputValue();areEquivalent=areQueriesEquivalent(inputValue,this.query);hasDifferentWhitespace=areEquivalent&&this.query?this.query.length!==inputValue.length:false;this.query=inputValue;if(!areEquivalent){this.trigger("queryChanged",this.query)}else if(hasDifferentWhitespace){this.trigger("whitespaceChanged",this.query)}},focus:function focus(){this.$input.focus()},blur:function blur(){this.$input.blur()},getQuery:function getQuery(){return this.query},setQuery:function setQuery(query){this.query=query},getInputValue:function getInputValue(){return this.$input.val()},setInputValue:function setInputValue(value,silent){if(typeof value==="undefined"){value=this.query}this.$input.val(value);if(silent){this.clearHint()}else{this._checkInputValue()}},expand:function expand(){this.$input.attr("aria-expanded","true")},collapse:function collapse(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function setActiveDescendant(activedescendantId){this.$input.attr("aria-activedescendant",activedescendantId)},removeActiveDescendant:function removeActiveDescendant(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function resetInputValue(){this.setInputValue(this.query,true)},getHint:function getHint(){return this.$hint.val()},setHint:function setHint(value){this.$hint.val(value)},clearHint:function clearHint(){this.setHint("")},clearHintIfInvalid:function clearHintIfInvalid(){var val;var hint;var valIsPrefixOfHint;var isValid;val=this.getInputValue();hint=this.getHint();valIsPrefixOfHint=val!==hint&&hint.indexOf(val)===0;isValid=val!==""&&valIsPrefixOfHint&&!this.hasOverflow();if(!isValid){this.clearHint()}},getLanguageDirection:function getLanguageDirection(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function hasOverflow(){var constraint=this.$input.width()-2;this.$overflowHelper.text(this.getInputValue());return this.$overflowHelper.width()>=constraint},isCursorAtEnd:function(){var valueLength;var selectionStart;var range;valueLength=this.$input.val().length;selectionStart=this.$input[0].selectionStart;if(_.isNumber(selectionStart)){return selectionStart===valueLength}else if(document.selection){range=document.selection.createRange();range.moveStart("character",-valueLength);return valueLength===range.text.length}return true},destroy:function destroy(){this.$hint.off(".aa");this.$input.off(".aa");this.$hint=this.$input=this.$overflowHelper=null}});function buildOverflowHelper($input){return DOM.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:$input.css("font-family"),fontSize:$input.css("font-size"),fontStyle:$input.css("font-style"),fontVariant:$input.css("font-variant"),fontWeight:$input.css("font-weight"),wordSpacing:$input.css("word-spacing"),letterSpacing:$input.css("letter-spacing"),textIndent:$input.css("text-indent"),textRendering:$input.css("text-rendering"),textTransform:$input.css("text-transform")}).insertAfter($input)}function areQueriesEquivalent(a,b){return Input.normalizeQuery(a)===Input.normalizeQuery(b)}function withModifier($e){return $e.altKey||$e.ctrlKey||$e.metaKey||$e.shiftKey}module.exports=Input},function(module,exports,__webpack_require__){"use strict";var types=[__webpack_require__(54),__webpack_require__(55),__webpack_require__(56),__webpack_require__(57),__webpack_require__(58)];var draining;var currentQueue;var queueIndex=-1;var queue=[];var scheduled=false;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){nextTick()}}function nextTick(){if(draining){return}scheduled=false;draining=true;var len=queue.length;var timeout=setTimeout(cleanUpNextTick);while(len){currentQueue=queue;queue=[];while(currentQueue&&++queueIndex<len){currentQueue[queueIndex].run()}queueIndex=-1;len=queue.length}currentQueue=null;queueIndex=-1;draining=false;clearTimeout(timeout)}var scheduleDrain;var i=-1;var len=types.length;while(++i<len){if(types[i]&&types[i].test&&types[i].test()){scheduleDrain=types[i].install(nextTick);break}}function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){var fun=this.fun;var array=this.array;switch(array.length){case 0:return fun();case 1:return fun(array[0]);case 2:return fun(array[0],array[1]);case 3:return fun(array[0],array[1],array[2]);default:return fun.apply(null,array)}};module.exports=immediate;function immediate(task){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(task,args));if(!scheduled&&!draining){scheduled=true;scheduleDrain()}}},function(module,exports,__webpack_require__){"use strict";(function(process){exports.test=function(){return typeof process!=="undefined"&&!process.browser};exports.install=function(func){return function(){process.nextTick(func)}}}).call(exports,__webpack_require__(9))},function(module,exports,__webpack_require__){"use strict";(function(global){var Mutation=global.MutationObserver||global.WebKitMutationObserver;exports.test=function(){return Mutation};exports.install=function(handle){var called=0;var observer=new Mutation(handle);var element=global.document.createTextNode("");observer.observe(element,{characterData:true});return function(){element.data=called=++called%2}}}).call(exports,__webpack_require__(4))},function(module,exports,__webpack_require__){"use strict";(function(global){exports.test=function(){if(global.setImmediate){return false}return typeof global.MessageChannel!=="undefined"};exports.install=function(func){var channel=new global.MessageChannel;channel.port1.onmessage=func;return function(){channel.port2.postMessage(0)}}}).call(exports,__webpack_require__(4))},function(module,exports,__webpack_require__){"use strict";(function(global){exports.test=function(){return"document"in global&&"onreadystatechange"in global.document.createElement("script")};exports.install=function(handle){return function(){var scriptEl=global.document.createElement("script");scriptEl.onreadystatechange=function(){handle();scriptEl.onreadystatechange=null;scriptEl.parentNode.removeChild(scriptEl);scriptEl=null};global.document.documentElement.appendChild(scriptEl);return handle}}}).call(exports,__webpack_require__(4))},function(module,exports,__webpack_require__){"use strict";exports.test=function(){return true};exports.install=function(t){return function(){setTimeout(t,0)}}},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(0);var DOM=__webpack_require__(1);var EventEmitter=__webpack_require__(10);var Dataset=__webpack_require__(60);var css=__webpack_require__(11);function Dropdown(o){var that=this;var onSuggestionClick;var onSuggestionMouseEnter;var onSuggestionMouseLeave;o=o||{};if(!o.menu){_.error("menu is required")}if(!_.isArray(o.datasets)&&!_.isObject(o.datasets)){_.error("1 or more datasets required")}if(!o.datasets){_.error("datasets is required")}this.isOpen=false;this.isEmpty=true;this.minLength=o.minLength||0;this.templates={};this.appendTo=o.appendTo||false;this.css=_.mixin({},css,o.appendTo?css.appendTo:{});this.cssClasses=o.cssClasses=_.mixin({},css.defaultClasses,o.cssClasses||{});this.cssClasses.prefix=o.cssClasses.formattedPrefix||_.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);onSuggestionClick=_.bind(this._onSuggestionClick,this);onSuggestionMouseEnter=_.bind(this._onSuggestionMouseEnter,this);onSuggestionMouseLeave=_.bind(this._onSuggestionMouseLeave,this);var cssClass=_.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=DOM.element(o.menu).on("mouseenter.aa",cssClass,onSuggestionMouseEnter).on("mouseleave.aa",cssClass,onSuggestionMouseLeave).on("click.aa",cssClass,onSuggestionClick);this.$container=o.appendTo?o.wrapper:this.$menu;if(o.templates&&o.templates.header){this.templates.header=_.templatify(o.templates.header);this.$menu.prepend(this.templates.header())}if(o.templates&&o.templates.empty){this.templates.empty=_.templatify(o.templates.empty);this.$empty=DOM.element('<div class="'+_.className(this.cssClasses.prefix,this.cssClasses.empty,true)+'">'+"</div>");this.$menu.append(this.$empty);this.$empty.hide()}this.datasets=_.map(o.datasets,function(oDataset){return initializeDataset(that.$menu,oDataset,o.cssClasses)});_.each(this.datasets,function(dataset){var root=dataset.getRoot();if(root&&root.parent().length===0){that.$menu.append(root)}dataset.onSync("rendered",that._onRendered,that)});if(o.templates&&o.templates.footer){this.templates.footer=_.templatify(o.templates.footer);this.$menu.append(this.templates.footer())}var self=this;DOM.element(window).resize(function(){self._redraw()})}_.mixin(Dropdown.prototype,EventEmitter,{_onSuggestionClick:function onSuggestionClick($e){this.trigger("suggestionClicked",DOM.element($e.currentTarget))},_onSuggestionMouseEnter:function onSuggestionMouseEnter($e){var elt=DOM.element($e.currentTarget);if(elt.hasClass(_.className(this.cssClasses.prefix,this.cssClasses.cursor,true))){return}this._removeCursor();var suggestion=this;setTimeout(function(){suggestion._setCursor(elt,false)},0)},_onSuggestionMouseLeave:function onSuggestionMouseLeave($e){if($e.relatedTarget){var elt=DOM.element($e.relatedTarget);if(elt.closest("."+_.className(this.cssClasses.prefix,this.cssClasses.cursor,true)).length>0){return}}this._removeCursor();this.trigger("cursorRemoved")},_onRendered:function onRendered(e,query){this.isEmpty=_.every(this.datasets,isDatasetEmpty);if(this.isEmpty){if(query.length>=this.minLength){this.trigger("empty")}if(this.$empty){if(query.length<this.minLength){this._hide()}else{var html=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(html);this.$empty.show();this._show()}}else if(_.any(this.datasets,hasEmptyTemplate)){if(query.length<this.minLength){this._hide()}else{this._show()}}else{this._hide()}}else if(this.isOpen){if(this.$empty){this.$empty.empty();this.$empty.hide()}if(query.length>=this.minLength){this._show()}else{this._hide()}}this.trigger("datasetRendered");function isDatasetEmpty(dataset){return dataset.isEmpty()}function hasEmptyTemplate(dataset){return dataset.templates&&dataset.templates.empty}},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block");this._redraw();this.trigger("shown")},_redraw:function redraw(){if(!this.isOpen||!this.appendTo)return;this.trigger("redrawn")},_getSuggestions:function getSuggestions(){return this.$menu.find(_.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function getCursor(){return this.$menu.find(_.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function setCursor($el,updateInput){$el.first().addClass(_.className(this.cssClasses.prefix,this.cssClasses.cursor,true)).attr("aria-selected","true");this.trigger("cursorMoved",updateInput)},_removeCursor:function removeCursor(){this._getCursor().removeClass(_.className(this.cssClasses.prefix,this.cssClasses.cursor,true)).removeAttr("aria-selected")},_moveCursor:function moveCursor(increment){var $suggestions;var $oldCursor;var newCursorIndex;var $newCursor;if(!this.isOpen){return}$oldCursor=this._getCursor();$suggestions=this._getSuggestions();this._removeCursor();newCursorIndex=$suggestions.index($oldCursor)+increment;newCursorIndex=(newCursorIndex+1)%($suggestions.length+1)-1;if(newCursorIndex===-1){this.trigger("cursorRemoved");return}else if(newCursorIndex<-1){newCursorIndex=$suggestions.length-1}this._setCursor($newCursor=$suggestions.eq(newCursorIndex),true);this._ensureVisible($newCursor)},_ensureVisible:function ensureVisible($el){var elTop;var elBottom;var menuScrollTop;var menuHeight;elTop=$el.position().top;elBottom=elTop+$el.height()+parseInt($el.css("margin-top"),10)+parseInt($el.css("margin-bottom"),10);menuScrollTop=this.$menu.scrollTop();menuHeight=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10);if(elTop<0){this.$menu.scrollTop(menuScrollTop+elTop)}else if(menuHeight<elBottom){this.$menu.scrollTop(menuScrollTop+(elBottom-menuHeight))}},close:function close(){if(this.isOpen){this.isOpen=false;this._removeCursor();this._hide();this.trigger("closed")}},open:function open(){if(!this.isOpen){this.isOpen=true;if(!this.isEmpty){this._show()}this.trigger("opened")}},setLanguageDirection:function setLanguageDirection(dir){this.$menu.css(dir==="ltr"?this.css.ltr:this.css.rtl)},moveCursorUp:function moveCursorUp(){this._moveCursor(-1)},moveCursorDown:function moveCursorDown(){this._moveCursor(+1)},getDatumForSuggestion:function getDatumForSuggestion($el){var datum=null;if($el.length){datum={raw:Dataset.extractDatum($el),value:Dataset.extractValue($el),datasetName:Dataset.extractDatasetName($el)}}return datum},getCurrentCursor:function getCurrentCursor(){return this._getCursor().first()},getDatumForCursor:function getDatumForCursor(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function getDatumForTopSuggestion(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function cursorTopSuggestion(){this._setCursor(this._getSuggestions().first(),false)},update:function update(query){_.each(this.datasets,updateDataset);function updateDataset(dataset){dataset.update(query)}},empty:function empty(){_.each(this.datasets,clearDataset);this.isEmpty=true;function clearDataset(dataset){dataset.clear()}},isVisible:function isVisible(){return this.isOpen&&!this.isEmpty},destroy:function destroy(){this.$menu.off(".aa");this.$menu=null;_.each(this.datasets,destroyDataset);function destroyDataset(dataset){dataset.destroy()}}});Dropdown.Dataset=Dataset;function initializeDataset($menu,oDataset,cssClasses){return new Dropdown.Dataset(_.mixin({$menu:$menu,cssClasses:cssClasses},oDataset))}module.exports=Dropdown},function(module,exports,__webpack_require__){"use strict";var datasetKey="aaDataset";var valueKey="aaValue";var datumKey="aaDatum";var _=__webpack_require__(0);var DOM=__webpack_require__(1);var html=__webpack_require__(17);var css=__webpack_require__(11);var EventEmitter=__webpack_require__(10);function Dataset(o){o=o||{};o.templates=o.templates||{};if(!o.source){_.error("missing source")}if(o.name&&!isValidName(o.name)){_.error("invalid dataset name: "+o.name)}this.query=null;this._isEmpty=true;this.highlight=!!o.highlight;this.name=typeof o.name==="undefined"||o.name===null?_.getUniqueId():o.name;this.source=o.source;this.displayFn=getDisplayFn(o.display||o.displayKey);this.debounce=o.debounce;this.cache=o.cache!==false;this.templates=getTemplates(o.templates,this.displayFn);this.css=_.mixin({},css,o.appendTo?css.appendTo:{});this.cssClasses=o.cssClasses=_.mixin({},css.defaultClasses,o.cssClasses||{});this.cssClasses.prefix=o.cssClasses.formattedPrefix||_.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var clazz=_.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=o.$menu&&o.$menu.find(clazz+"-"+this.name).length>0?DOM.element(o.$menu.find(clazz+"-"+this.name)[0]):DOM.element(html.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset));this.$menu=o.$menu;this.clearCachedSuggestions()}Dataset.extractDatasetName=function extractDatasetName(el){return DOM.element(el).data(datasetKey)};Dataset.extractValue=function extractValue(el){return DOM.element(el).data(valueKey)};Dataset.extractDatum=function extractDatum(el){var datum=DOM.element(el).data(datumKey);if(typeof datum==="string"){datum=JSON.parse(datum)}return datum};_.mixin(Dataset.prototype,EventEmitter,{_render:function render(query,suggestions){if(!this.$el){return}var that=this;var hasSuggestions;var renderArgs=[].slice.call(arguments,2);this.$el.empty();hasSuggestions=suggestions&&suggestions.length;this._isEmpty=!hasSuggestions;if(!hasSuggestions&&this.templates.empty){this.$el.html(getEmptyHtml.apply(this,renderArgs)).prepend(that.templates.header?getHeaderHtml.apply(this,renderArgs):null).append(that.templates.footer?getFooterHtml.apply(this,renderArgs):null)}else if(hasSuggestions){this.$el.html(getSuggestionsHtml.apply(this,renderArgs)).prepend(that.templates.header?getHeaderHtml.apply(this,renderArgs):null).append(that.templates.footer?getFooterHtml.apply(this,renderArgs):null)}else if(suggestions&&!Array.isArray(suggestions)){throw new TypeError("suggestions must be an array")}if(this.$menu){this.$menu.addClass(this.cssClasses.prefix+(hasSuggestions?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(hasSuggestions?"without":"with")+"-"+this.name)}this.trigger("rendered",query);function getEmptyHtml(){var args=[].slice.call(arguments,0);args=[{query:query,isEmpty:true}].concat(args);return that.templates.empty.apply(this,args)}function getSuggestionsHtml(){var args=[].slice.call(arguments,0);var $suggestions;var nodes;var self=this;var suggestionsHtml=html.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);$suggestions=DOM.element(suggestionsHtml).css(this.css.suggestions);nodes=_.map(suggestions,getSuggestionNode);$suggestions.append.apply($suggestions,nodes);return $suggestions;function getSuggestionNode(suggestion){var $el;var suggestionHtml=html.suggestion.replace("%PREFIX%",self.cssClasses.prefix).replace("%SUGGESTION%",self.cssClasses.suggestion);$el=DOM.element(suggestionHtml).attr({role:"option",id:["option",Math.floor(Math.random()*1e8)].join("-")}).append(that.templates.suggestion.apply(this,[suggestion].concat(args)));$el.data(datasetKey,that.name);$el.data(valueKey,that.displayFn(suggestion)||undefined);$el.data(datumKey,JSON.stringify(suggestion));$el.children().each(function(){DOM.element(this).css(self.css.suggestionChild)});return $el}}function getHeaderHtml(){var args=[].slice.call(arguments,0);args=[{query:query,isEmpty:!hasSuggestions}].concat(args);return that.templates.header.apply(this,args)}function getFooterHtml(){var args=[].slice.call(arguments,0);args=[{query:query,isEmpty:!hasSuggestions}].concat(args);return that.templates.footer.apply(this,args)}},getRoot:function getRoot(){return this.$el},update:function update(query){function handleSuggestions(suggestions){if(!this.canceled&&query===this.query){var extraArgs=[].slice.call(arguments,1);this.cacheSuggestions(query,suggestions,extraArgs);this._render.apply(this,[query,suggestions].concat(extraArgs))}}this.query=query;this.canceled=false;if(this.shouldFetchFromCache(query)){handleSuggestions.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs))}else{var that=this;var execSource=function(){if(!that.canceled){that.source(query,handleSuggestions.bind(that))}};if(this.debounce){var later=function(){that.debounceTimeout=null;execSource()};clearTimeout(this.debounceTimeout);this.debounceTimeout=setTimeout(later,this.debounce)}else{execSource()}}},cacheSuggestions:function cacheSuggestions(query,suggestions,extraArgs){this.cachedQuery=query;this.cachedSuggestions=suggestions;this.cachedRenderExtraArgs=extraArgs},shouldFetchFromCache:function shouldFetchFromCache(query){return this.cache&&this.cachedQuery===query&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function clearCachedSuggestions(){delete this.cachedQuery;delete this.cachedSuggestions;delete this.cachedRenderExtraArgs},cancel:function cancel(){this.canceled=true},clear:function clear(){this.cancel();this.$el.empty();this.trigger("rendered","")},isEmpty:function isEmpty(){return this._isEmpty},destroy:function destroy(){this.clearCachedSuggestions();this.$el=null}});function getDisplayFn(display){display=display||"value";return _.isFunction(display)?display:displayFn;function displayFn(obj){return obj[display]}}function getTemplates(templates,displayFn){return{empty:templates.empty&&_.templatify(templates.empty),header:templates.header&&_.templatify(templates.header),footer:templates.footer&&_.templatify(templates.footer),suggestion:templates.suggestion||suggestionTemplate};function suggestionTemplate(context){return"<p>"+displayFn(context)+"</p>"}}function isValidName(str){return/^[_a-zA-Z0-9-]+$/.test(str)}module.exports=Dataset},function(module,exports,__webpack_require__){"use strict";module.exports={hits:__webpack_require__(62),popularIn:__webpack_require__(63)}},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(0);var version=__webpack_require__(18);var parseAlgoliaClientVersion=__webpack_require__(19);module.exports=function search(index,params){var algoliaVersion=parseAlgoliaClientVersion(index.as._ua);if(algoliaVersion&&algoliaVersion[0]>=3&&algoliaVersion[1]>20){params=params||{};params.additionalUA="autocomplete.js "+version}return sourceFn;function sourceFn(query,cb){index.search(query,params,function(error,content){if(error){_.error(error.message);return}cb(content.hits,content)})}}},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(0);var version=__webpack_require__(18);var parseAlgoliaClientVersion=__webpack_require__(19);module.exports=function popularIn(index,params,details,options){var algoliaVersion=parseAlgoliaClientVersion(index.as._ua);if(algoliaVersion&&algoliaVersion[0]>=3&&algoliaVersion[1]>20){params=params||{};params.additionalUA="autocomplete.js "+version}if(!details.source){return _.error("Missing 'source' key")}var source=_.isFunction(details.source)?details.source:function(hit){return hit[details.source]};if(!details.index){return _.error("Missing 'index' key")}var detailsIndex=details.index;options=options||{};return sourceFn;function sourceFn(query,cb){index.search(query,params,function(error,content){if(error){_.error(error.message);return}if(content.hits.length>0){var first=content.hits[0];var detailsParams=_.mixin({hitsPerPage:0},details);delete detailsParams.source;delete detailsParams.index;var detailsAlgoliaVersion=parseAlgoliaClientVersion(detailsIndex.as._ua);if(detailsAlgoliaVersion&&detailsAlgoliaVersion[0]>=3&&detailsAlgoliaVersion[1]>20){params.additionalUA="autocomplete.js "+version}detailsIndex.search(source(first),detailsParams,function(error2,content2){if(error2){_.error(error2.message);return}var suggestions=[];if(options.includeAll){var label=options.allTitle||"All departments";suggestions.push(_.mixin({facet:{value:label,count:content2.nbHits}},_.cloneDeep(first)))}_.each(content2.facets,function(values,facet){_.each(values,function(count,value){suggestions.push(_.mixin({facet:{facet:facet,value:value,count:count}},_.cloneDeep(first)))})});for(var i=1;i<content.hits.length;++i){suggestions.push(content.hits[i])}cb(suggestions,content)});return}cb([])})}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var prefix="algolia-docsearch";var suggestionPrefix=prefix+"-suggestion";var footerPrefix=prefix+"-footer";var templates={suggestion:'\n <a class="'+suggestionPrefix+"\n {{#isCategoryHeader}}"+suggestionPrefix+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+suggestionPrefix+'__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="'+suggestionPrefix+'--category-header">\n <span class="'+suggestionPrefix+'--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="'+suggestionPrefix+'--wrapper">\n <div class="'+suggestionPrefix+'--subcategory-column">\n <span class="'+suggestionPrefix+'--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="'+suggestionPrefix+'--content">\n <div class="'+suggestionPrefix+'--subcategory-inline">{{{subcategory}}}</div>\n <div class="'+suggestionPrefix+'--title">{{{title}}}</div>\n {{#text}}<div class="'+suggestionPrefix+'--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n ',suggestionSimple:'\n <div class="'+suggestionPrefix+"\n {{#isCategoryHeader}}"+suggestionPrefix+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+suggestionPrefix+'__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="'+suggestionPrefix+'--category-header">\n {{^isLvl0}}\n <span class="'+suggestionPrefix+"--category-header-lvl0 "+suggestionPrefix+'--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="'+suggestionPrefix+"--category-header-lvl1 "+suggestionPrefix+'--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="'+suggestionPrefix+"--title "+suggestionPrefix+'--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="'+suggestionPrefix+'--wrapper">\n {{#text}}\n <div class="'+suggestionPrefix+'--content">\n <div class="'+suggestionPrefix+'--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n ',footer:'\n <div class="'+footerPrefix+'">\n Search by <a class="'+footerPrefix+'--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n </div>\n ',empty:'\n <div class="'+suggestionPrefix+'">\n <div class="'+suggestionPrefix+'--wrapper">\n <div class="'+suggestionPrefix+"--content "+suggestionPrefix+'--no-results">\n <div class="'+suggestionPrefix+'--title">\n <div class="'+suggestionPrefix+'--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n ',searchBox:'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n '};exports.default=templates},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};var _zepto=__webpack_require__(20);var _zepto2=_interopRequireDefault(_zepto);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var utils={mergeKeyWithParent:function mergeKeyWithParent(object,property){if(object[property]===undefined){return object}if(_typeof(object[property])!=="object"){return object}var newObject=_zepto2.default.extend({},object,object[property]);delete newObject[property];return newObject},groupBy:function groupBy(collection,property){var newCollection={};_zepto2.default.each(collection,function(index,item){if(item[property]===undefined){throw new Error("[groupBy]: Object has no key "+property)}var key=item[property];if(typeof key==="string"){key=key.toLowerCase()}if(!Object.prototype.hasOwnProperty.call(newCollection,key)){newCollection[key]=[]}newCollection[key].push(item)});return newCollection},values:function values(object){return Object.keys(object).map(function(key){return object[key]})},flatten:function flatten(array){var results=[];array.forEach(function(value){if(!Array.isArray(value)){results.push(value);return}value.forEach(function(subvalue){results.push(subvalue)})});return results},flattenAndFlagFirst:function flattenAndFlagFirst(object,flag){var values=this.values(object).map(function(collection){return collection.map(function(item,index){item[flag]=index===0;return item})});return this.flatten(values)},compact:function compact(array){var results=[];array.forEach(function(value){if(!value){return}results.push(value)});return results},getHighlightedValue:function getHighlightedValue(object,property){if(object._highlightResult&&object._highlightResult.hierarchy_camel&&object._highlightResult.hierarchy_camel[property]&&object._highlightResult.hierarchy_camel[property].matchLevel&&object._highlightResult.hierarchy_camel[property].matchLevel!=="none"&&object._highlightResult.hierarchy_camel[property].value){return object._highlightResult.hierarchy_camel[property].value}if(object._highlightResult&&object._highlightResult&&object._highlightResult[property]&&object._highlightResult[property].value){return object._highlightResult[property].value}return object[property]},getSnippetedValue:function getSnippetedValue(object,property){if(!object._snippetResult||!object._snippetResult[property]||!object._snippetResult[property].value){return object[property]}var snippet=object._snippetResult[property].value;if(snippet[0]!==snippet[0].toUpperCase()){snippet="…"+snippet}if([".","!","?"].indexOf(snippet[snippet.length-1])===-1){snippet=snippet+"…"}return snippet},deepClone:function deepClone(object){return JSON.parse(JSON.stringify(object))}};exports.default=utils}])});
\ No newline at end of file
diff --git a/site/docs/3.5.0/migration-guide.html b/site/docs/3.5.0/migration-guide.html
index 4c5697c..df6fe4c 100644
--- a/site/docs/3.5.0/migration-guide.html
+++ b/site/docs/3.5.0/migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -156,15 +155,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-advanced.html b/site/docs/3.5.0/ml-advanced.html
index f55f014..1e62daa 100644
--- a/site/docs/3.5.0/ml-advanced.html
+++ b/site/docs/3.5.0/ml-advanced.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -475,15 +474,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-ann.html b/site/docs/3.5.0/ml-ann.html
index 155d701..7a93fbd 100644
--- a/site/docs/3.5.0/ml-ann.html
+++ b/site/docs/3.5.0/ml-ann.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-classification-regression.html b/site/docs/3.5.0/ml-classification-regression.html
index 83c236f..70e825e 100644
--- a/site/docs/3.5.0/ml-classification-regression.html
+++ b/site/docs/3.5.0/ml-classification-regression.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -2705,7 +2704,7 @@
<h3 id="available-families">Available families</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Family</th>
@@ -4147,7 +4146,7 @@
<h3 id="input-columns">Input Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4174,7 +4173,7 @@
<h3 id="output-columns">Output Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4250,7 +4249,7 @@
<h4 id="input-columns-1">Input Columns</h4>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4277,7 +4276,7 @@
<h4 id="output-columns-predictions">Output Columns (Predictions)</h4>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4329,7 +4328,7 @@
<h4 id="input-columns-2">Input Columns</h4>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4358,7 +4357,7 @@
<h4 id="output-columns-predictions-1">Output Columns (Predictions)</h4>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -4387,15 +4386,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-clustering.html b/site/docs/3.5.0/ml-clustering.html
index f093bf5..8e2f9c8 100644
--- a/site/docs/3.5.0/ml-clustering.html
+++ b/site/docs/3.5.0/ml-clustering.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -402,7 +401,7 @@
<h3 id="input-columns">Input Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -423,7 +422,7 @@
<h3 id="output-columns">Output Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -840,7 +839,7 @@
<h3 id="input-columns-1">Input Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -861,7 +860,7 @@
<h3 id="output-columns-1">Output Columns</h3>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th align="left">Param name</th>
@@ -1109,15 +1108,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-collaborative-filtering.html b/site/docs/3.5.0/ml-collaborative-filtering.html
index 93be932..aee30d0 100644
--- a/site/docs/3.5.0/ml-collaborative-filtering.html
+++ b/site/docs/3.5.0/ml-collaborative-filtering.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -752,15 +751,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-datasource.html b/site/docs/3.5.0/ml-datasource.html
index 62ed248..daa2d8e 100644
--- a/site/docs/3.5.0/ml-datasource.html
+++ b/site/docs/3.5.0/ml-datasource.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -587,15 +586,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-decision-tree.html b/site/docs/3.5.0/ml-decision-tree.html
index 8f442fc..df4197b 100644
--- a/site/docs/3.5.0/ml-decision-tree.html
+++ b/site/docs/3.5.0/ml-decision-tree.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-ensembles.html b/site/docs/3.5.0/ml-ensembles.html
index e09938e..0c51867 100644
--- a/site/docs/3.5.0/ml-ensembles.html
+++ b/site/docs/3.5.0/ml-ensembles.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-features.html b/site/docs/3.5.0/ml-features.html
index 7362162..fa286e1 100644
--- a/site/docs/3.5.0/ml-features.html
+++ b/site/docs/3.5.0/ml-features.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -5171,15 +5170,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-frequent-pattern-mining.html b/site/docs/3.5.0/ml-frequent-pattern-mining.html
index 722e11b..ab7ef28 100644
--- a/site/docs/3.5.0/ml-frequent-pattern-mining.html
+++ b/site/docs/3.5.0/ml-frequent-pattern-mining.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -690,15 +689,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-guide.html b/site/docs/3.5.0/ml-guide.html
index f06ad25..97414ed 100644
--- a/site/docs/3.5.0/ml-guide.html
+++ b/site/docs/3.5.0/ml-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -476,15 +475,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-linalg-guide.html b/site/docs/3.5.0/ml-linalg-guide.html
index 90e661fe..ba77db5 100644
--- a/site/docs/3.5.0/ml-linalg-guide.html
+++ b/site/docs/3.5.0/ml-linalg-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -457,15 +456,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-linear-methods.html b/site/docs/3.5.0/ml-linear-methods.html
index 3322c79..532a223 100644
--- a/site/docs/3.5.0/ml-linear-methods.html
+++ b/site/docs/3.5.0/ml-linear-methods.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-migration-guide.html b/site/docs/3.5.0/ml-migration-guide.html
index 6ff4a4d..f8826e0 100644
--- a/site/docs/3.5.0/ml-migration-guide.html
+++ b/site/docs/3.5.0/ml-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -910,15 +909,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-pipeline.html b/site/docs/3.5.0/ml-pipeline.html
index 5f31db1..6c6b809 100644
--- a/site/docs/3.5.0/ml-pipeline.html
+++ b/site/docs/3.5.0/ml-pipeline.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1044,15 +1043,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-statistics.html b/site/docs/3.5.0/ml-statistics.html
index d22703d..7e97696 100644
--- a/site/docs/3.5.0/ml-statistics.html
+++ b/site/docs/3.5.0/ml-statistics.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -706,15 +705,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-survival-regression.html b/site/docs/3.5.0/ml-survival-regression.html
index 11af485..b1e8e2e 100644
--- a/site/docs/3.5.0/ml-survival-regression.html
+++ b/site/docs/3.5.0/ml-survival-regression.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ml-tuning.html b/site/docs/3.5.0/ml-tuning.html
index b6260e3..4a41e7a 100644
--- a/site/docs/3.5.0/ml-tuning.html
+++ b/site/docs/3.5.0/ml-tuning.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -857,15 +856,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-classification-regression.html b/site/docs/3.5.0/mllib-classification-regression.html
index f052d69..1530e37 100644
--- a/site/docs/3.5.0/mllib-classification-regression.html
+++ b/site/docs/3.5.0/mllib-classification-regression.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -431,7 +430,7 @@
<a href="http://en.wikipedia.org/wiki/Regression_analysis">regression analysis</a>. The table below outlines
the supported algorithms for each type of problem.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Problem Type</th><th>Supported Methods</th></tr>
</thead>
@@ -474,15 +473,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-clustering.html b/site/docs/3.5.0/mllib-clustering.html
index a7e2ee4..508b2c7 100644
--- a/site/docs/3.5.0/mllib-clustering.html
+++ b/site/docs/3.5.0/mllib-clustering.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1338,15 +1337,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-collaborative-filtering.html b/site/docs/3.5.0/mllib-collaborative-filtering.html
index 015031c..b186151 100644
--- a/site/docs/3.5.0/mllib-collaborative-filtering.html
+++ b/site/docs/3.5.0/mllib-collaborative-filtering.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -618,15 +617,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-data-types.html b/site/docs/3.5.0/mllib-data-types.html
index c91f752..4875841 100644
--- a/site/docs/3.5.0/mllib-data-types.html
+++ b/site/docs/3.5.0/mllib-data-types.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1124,15 +1123,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-decision-tree.html b/site/docs/3.5.0/mllib-decision-tree.html
index a92c22b..32a565c 100644
--- a/site/docs/3.5.0/mllib-decision-tree.html
+++ b/site/docs/3.5.0/mllib-decision-tree.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -419,7 +418,7 @@
implementation provides two impurity measures for classification (Gini impurity and entropy) and one
impurity measure for regression (variance).</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Impurity</th><th>Task</th><th>Formula</th><th>Description</th></tr>
</thead>
@@ -879,15 +878,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-dimensionality-reduction.html b/site/docs/3.5.0/mllib-dimensionality-reduction.html
index 16cf5ae..b34fda4 100644
--- a/site/docs/3.5.0/mllib-dimensionality-reduction.html
+++ b/site/docs/3.5.0/mllib-dimensionality-reduction.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -694,15 +693,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-ensembles.html b/site/docs/3.5.0/mllib-ensembles.html
index 4e606b5..e6be147 100644
--- a/site/docs/3.5.0/mllib-ensembles.html
+++ b/site/docs/3.5.0/mllib-ensembles.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -818,7 +817,7 @@
<p>Notation: $N$ = number of instances. $y_i$ = label of instance $i$. $x_i$ = features of instance $i$. $F(x_i)$ = model’s predicted label for instance $i$.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Loss</th><th>Task</th><th>Formula</th><th>Description</th></tr>
</thead>
@@ -1166,15 +1165,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-evaluation-metrics.html b/site/docs/3.5.0/mllib-evaluation-metrics.html
index f0ac453..0f2e23b 100644
--- a/site/docs/3.5.0/mllib-evaluation-metrics.html
+++ b/site/docs/3.5.0/mllib-evaluation-metrics.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -441,7 +440,7 @@
<p><strong>Available metrics</strong></p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Metric</th><th>Definition</th></tr>
</thead>
@@ -706,7 +705,7 @@
\[\hat{\delta}(x) = \begin{cases}1 & \text{if $x = 0$}, \\ 0 & \text{otherwise}.\end{cases}\]
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Metric</th><th>Definition</th></tr>
</thead>
@@ -983,7 +982,7 @@
\[I_A(x) = \begin{cases}1 & \text{if $x \in A$}, \\ 0 & \text{otherwise}.\end{cases}\]
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Metric</th><th>Definition</th></tr>
</thead>
@@ -1263,7 +1262,7 @@
\[rel_D(r) = \begin{cases}1 & \text{if $r \in D$}, \\ 0 & \text{otherwise}.\end{cases}\]
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Metric</th><th>Definition</th><th>Notes</th></tr>
</thead>
@@ -1595,7 +1594,7 @@
<p><strong>Available metrics</strong></p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Metric</th><th>Definition</th></tr>
</thead>
@@ -1630,15 +1629,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-feature-extraction.html b/site/docs/3.5.0/mllib-feature-extraction.html
index b0141ff..ee85980 100644
--- a/site/docs/3.5.0/mllib-feature-extraction.html
+++ b/site/docs/3.5.0/mllib-feature-extraction.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -965,15 +964,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-frequent-pattern-mining.html b/site/docs/3.5.0/mllib-frequent-pattern-mining.html
index eec0f25..45aaa02 100644
--- a/site/docs/3.5.0/mllib-frequent-pattern-mining.html
+++ b/site/docs/3.5.0/mllib-frequent-pattern-mining.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -723,15 +722,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-guide.html b/site/docs/3.5.0/mllib-guide.html
index 4869f8a..6a41932 100644
--- a/site/docs/3.5.0/mllib-guide.html
+++ b/site/docs/3.5.0/mllib-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -439,15 +438,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-isotonic-regression.html b/site/docs/3.5.0/mllib-isotonic-regression.html
index 9cb7cdb..310c8a9 100644
--- a/site/docs/3.5.0/mllib-isotonic-regression.html
+++ b/site/docs/3.5.0/mllib-isotonic-regression.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -569,15 +568,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-linear-methods.html b/site/docs/3.5.0/mllib-linear-methods.html
index 0954277..6feead4 100644
--- a/site/docs/3.5.0/mllib-linear-methods.html
+++ b/site/docs/3.5.0/mllib-linear-methods.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -437,7 +436,7 @@
<p>The following table summarizes the loss functions and their gradients or sub-gradients for the
methods <code class="language-plaintext highlighter-rouge">spark.mllib</code> supports:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th></th><th>loss function $L(\wv; \x, y)$</th><th>gradient or sub-gradient</th></tr>
</thead>
@@ -470,7 +469,7 @@
encourage simple models and avoid overfitting. We support the following
regularizers in <code class="language-plaintext highlighter-rouge">spark.mllib</code>:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th></th><th>regularizer $R(\wv)$</th><th>gradient or sub-gradient</th></tr>
</thead>
@@ -1048,15 +1047,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-naive-bayes.html b/site/docs/3.5.0/mllib-naive-bayes.html
index 41585b7..b40589d 100644
--- a/site/docs/3.5.0/mllib-naive-bayes.html
+++ b/site/docs/3.5.0/mllib-naive-bayes.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -512,15 +511,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-optimization.html b/site/docs/3.5.0/mllib-optimization.html
index d16756f..9257cbc 100644
--- a/site/docs/3.5.0/mllib-optimization.html
+++ b/site/docs/3.5.0/mllib-optimization.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -778,15 +777,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-pmml-model-export.html b/site/docs/3.5.0/mllib-pmml-model-export.html
index 4621af6..277d3fc 100644
--- a/site/docs/3.5.0/mllib-pmml-model-export.html
+++ b/site/docs/3.5.0/mllib-pmml-model-export.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,7 +378,7 @@
<p>The table below outlines the <code class="language-plaintext highlighter-rouge">spark.mllib</code> models that can be exported to PMML and their equivalent PMML model.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>spark.mllib model</th><th>PMML model</th></tr>
</thead>
@@ -453,15 +452,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/mllib-statistics.html b/site/docs/3.5.0/mllib-statistics.html
index 9a681e8..b39df52 100644
--- a/site/docs/3.5.0/mllib-statistics.html
+++ b/site/docs/3.5.0/mllib-statistics.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1232,15 +1231,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/monitoring.html b/site/docs/3.5.0/monitoring.html
index fd254e8..af69d91 100644
--- a/site/docs/3.5.0/monitoring.html
+++ b/site/docs/3.5.0/monitoring.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -226,7 +225,7 @@
<h3 id="environment-variables">Environment Variables</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:21%">Environment Variable</th><th>Meaning</th></tr></thead>
<tr>
<td><code>SPARK_DAEMON_MEMORY</code></td>
@@ -304,7 +303,7 @@
<p>Security options for the Spark History Server are covered more detail in the
<a href="security.html#web-ui">Security</a> page.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Property Name</th>
@@ -635,7 +634,7 @@
can be identified by their <code class="language-plaintext highlighter-rouge">[attempt-id]</code>. In the API listed below, when running in YARN cluster mode,
<code class="language-plaintext highlighter-rouge">[app-id]</code> will actually be <code class="language-plaintext highlighter-rouge">[base-app-id]/[attempt-id]</code>, where <code class="language-plaintext highlighter-rouge">[base-app-id]</code> is the YARN application ID.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Endpoint</th><th>Meaning</th></tr></thead>
<tr>
<td><code>/applications</code></td>
@@ -834,7 +833,7 @@
of task execution. The metrics can be used for performance troubleshooting and workload characterization.
A list of the available metrics, with a short description:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Spark Executor Task Metric name</th>
@@ -992,7 +991,7 @@
Executor memory metrics are also exposed via the Spark metrics system based on the <a href="https://metrics.dropwizard.io/4.2.0">Dropwizard metrics library</a>.
A list of the available metrics, with a short description:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr><th>Executor Level Metric name</th>
<th>Short description</th>
@@ -1725,15 +1724,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/programming-guide.html b/site/docs/3.5.0/programming-guide.html
index 2d28288..318803c 100644
--- a/site/docs/3.5.0/programming-guide.html
+++ b/site/docs/3.5.0/programming-guide.html
@@ -18,8 +18,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -27,7 +26,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -149,15 +148,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/pyspark-migration-guide.html b/site/docs/3.5.0/pyspark-migration-guide.html
index 4ada01f..edeb596 100644
--- a/site/docs/3.5.0/pyspark-migration-guide.html
+++ b/site/docs/3.5.0/pyspark-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -146,15 +145,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/quick-start.html b/site/docs/3.5.0/quick-start.html
index 46974ec..8472039 100644
--- a/site/docs/3.5.0/quick-start.html
+++ b/site/docs/3.5.0/quick-start.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -566,15 +565,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/rdd-programming-guide.html b/site/docs/3.5.0/rdd-programming-guide.html
index 3df7363..399fd3d 100644
--- a/site/docs/3.5.0/rdd-programming-guide.html
+++ b/site/docs/3.5.0/rdd-programming-guide.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -518,7 +517,7 @@
PySpark does the reverse. It unpickles Python objects into Java objects and then converts them to Writables. The following
Writables are automatically converted:</p>
- <table>
+ <table class="table table-striped">
<thead><tr><th>Writable Type</th><th>Python Type</th></tr></thead>
<tr><td>Text</td><td>str</td></tr>
<tr><td>IntWritable</td><td>int</td></tr>
@@ -1079,7 +1078,7 @@
<a href="api/java/index.html?org/apache/spark/api/java/JavaPairRDD.html">Java</a>)
for details.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:25%">Transformation</th><th>Meaning</th></tr></thead>
<tr>
<td> <b>map</b>(<i>func</i>) </td>
@@ -1194,7 +1193,7 @@
<a href="api/java/index.html?org/apache/spark/api/java/JavaPairRDD.html">Java</a>)
for details.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Action</th><th>Meaning</th></tr></thead>
<tr>
<td> <b>reduce</b>(<i>func</i>) </td>
@@ -1340,7 +1339,7 @@
which is <code class="language-plaintext highlighter-rouge">StorageLevel.MEMORY_ONLY</code> (store deserialized objects in memory). The full set of
storage levels is:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:23%">Storage Level</th><th>Meaning</th></tr></thead>
<tr>
<td> MEMORY_ONLY </td>
@@ -1743,15 +1742,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/running-on-kubernetes.html b/site/docs/3.5.0/running-on-kubernetes.html
index 045a7db..3ca268d 100644
--- a/site/docs/3.5.0/running-on-kubernetes.html
+++ b/site/docs/3.5.0/running-on-kubernetes.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -757,7 +756,7 @@
<h4 id="spark-properties">Spark Properties</h4>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.kubernetes.context</code></td>
@@ -1823,7 +1822,7 @@
<h3 id="pod-metadata">Pod Metadata</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th>Pod metadata key</th><th>Modified value</th><th>Description</th></tr></thead>
<tr>
<td>name</td>
@@ -1859,7 +1858,7 @@
<h3 id="pod-spec">Pod Spec</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th>Pod spec key</th><th>Modified value</th><th>Description</th></tr></thead>
<tr>
<td>imagePullSecrets</td>
@@ -1912,7 +1911,7 @@
<p>The following affect the driver and executor containers. All other containers in the pod spec will be unaffected.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Container spec key</th><th>Modified value</th><th>Description</th></tr></thead>
<tr>
<td>env</td>
@@ -2127,15 +2126,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/running-on-mesos.html b/site/docs/3.5.0/running-on-mesos.html
index 08f8128..806dd5c 100644
--- a/site/docs/3.5.0/running-on-mesos.html
+++ b/site/docs/3.5.0/running-on-mesos.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -536,7 +535,7 @@
<h4 id="spark-properties">Spark Properties</h4>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.mesos.coarse</code></td>
@@ -1082,15 +1081,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/running-on-yarn.html b/site/docs/3.5.0/running-on-yarn.html
index 0ee92f2..3ee0129 100644
--- a/site/docs/3.5.0/running-on-yarn.html
+++ b/site/docs/3.5.0/running-on-yarn.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -295,7 +294,7 @@
<h4 id="spark-properties">Spark Properties</h4>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.yarn.am.memory</code></td>
@@ -848,7 +847,7 @@
<h4 id="available-patterns-for-shs-custom-executor-log-url">Available patterns for SHS custom executor log URL</h4>
-<table>
+<table class="table table-striped">
<thead><tr><th>Pattern</th><th>Meaning</th></tr></thead>
<tr>
<td>{{HTTP_SCHEME}}</td>
@@ -933,7 +932,7 @@
<h2 id="yarn-specific-kerberos-configuration">YARN-specific Kerberos Configuration</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.kerberos.keytab</code></td>
@@ -1030,7 +1029,7 @@
<p>The following extra configuration options are available when the shuffle service is running on YARN:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th></tr></thead>
<tr>
<td><code>spark.yarn.shuffle.stopOnFailure</code></td>
@@ -1198,15 +1197,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/security.html b/site/docs/3.5.0/security.html
index 39131da..0ee6908 100644
--- a/site/docs/3.5.0/security.html
+++ b/site/docs/3.5.0/security.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -221,7 +220,7 @@
the case of YARN, this feature relies on YARN RPC encryption being enabled for the distribution of
secrets to be secure.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.yarn.shuffle.server.recovery.disabled</code></td>
@@ -243,7 +242,7 @@
also see their authentication secret. Access control rules should be properly set up by the
Kubernetes admin to ensure that Spark authentication is secure.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.authenticate</code></td>
@@ -264,7 +263,7 @@
<p>Alternatively, one can mount authentication secrets using files and Kubernetes secrets that
the user mounts into their pods.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.authenticate.secret.file</code></td>
@@ -320,7 +319,7 @@
<p>The following table describes the different options available for configuring this feature.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.network.crypto.enabled</code></td>
@@ -379,7 +378,7 @@
<p>The following settings cover enabling encryption for data written to disk:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.io.encryption.enabled</code></td>
@@ -446,7 +445,7 @@
<p>The following options control the authentication of Web UIs:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.ui.allowFramingFrom</code></td>
@@ -550,7 +549,7 @@
<p>To enable authorization in the SHS, a few extra options are used:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.history.ui.acls.enable</code></td>
@@ -599,7 +598,7 @@
protocols without disabling the ability to configure each one individually. The following table
describes the SSL configuration namespaces:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Config Namespace</th>
@@ -630,7 +629,7 @@
<p>The full breakdown of available SSL options can be found below. The <code class="language-plaintext highlighter-rouge">${ns}</code> placeholder should be
replaced with one of the above namespaces.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th></tr></thead>
<tr>
<td><code>${ns}.enabled</code></td>
@@ -800,7 +799,7 @@
(XSS), Cross-Frame Scripting (XFS), MIME-Sniffing, and also to enforce HTTP Strict Transport
Security.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.ui.xXssProtection</code></td>
@@ -855,7 +854,7 @@
<h2 id="standalone-mode-only">Standalone mode only</h2>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>From</th><th>To</th><th>Default Port</th><th>Purpose</th><th>Configuration
@@ -906,7 +905,7 @@
<h2 id="all-cluster-managers">All cluster managers</h2>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>From</th><th>To</th><th>Default Port</th><th>Purpose</th><th>Configuration
@@ -981,7 +980,7 @@
<p>The following options provides finer-grained control for this feature:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.security.credentials.${service}.enabled</code></td>
@@ -1147,15 +1146,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/spark-connect-overview.html b/site/docs/3.5.0/spark-connect-overview.html
index 55d515c..c7d5b94 100644
--- a/site/docs/3.5.0/spark-connect-overview.html
+++ b/site/docs/3.5.0/spark-connect-overview.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -498,15 +497,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/spark-standalone.html b/site/docs/3.5.0/spark-standalone.html
index 7c0a5ee..7bea8ac 100644
--- a/site/docs/3.5.0/spark-standalone.html
+++ b/site/docs/3.5.0/spark-standalone.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -198,7 +197,7 @@
<p>Finally, the following configuration options can be passed to the master and worker:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:21%">Argument</th><th>Meaning</th></tr></thead>
<tr>
<td><code>-h HOST</code>, <code>--host HOST</code></td>
@@ -261,7 +260,7 @@
<p>You can optionally configure the cluster further by setting environment variables in <code class="language-plaintext highlighter-rouge">conf/spark-env.sh</code>. Create this file by starting with the <code class="language-plaintext highlighter-rouge">conf/spark-env.sh.template</code>, and <em>copy it to all your worker machines</em> for the settings to take effect. The following settings are available:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:21%">Environment Variable</th><th>Meaning</th></tr></thead>
<tr>
<td><code>SPARK_MASTER_HOST</code></td>
@@ -333,7 +332,7 @@
<p>SPARK_MASTER_OPTS supports the following system properties:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.deploy.retainedApplications</code></td>
@@ -432,7 +431,7 @@
<p>SPARK_WORKER_OPTS supports the following system properties:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.worker.cleanup.enabled</code></td>
@@ -538,7 +537,7 @@
<p>Spark applications supports the following configuration properties specific to standalone mode:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:21%">Property Name</th><th>Default Value</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.standalone.submit.waitAppCompletion</code></td>
@@ -683,7 +682,7 @@
<p>In order to enable this recovery mode, you can set SPARK_DAEMON_JAVA_OPTS in spark-env using this configuration:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:21%">System property</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.deploy.recoveryMode</code></td>
@@ -710,15 +709,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sparkr-migration-guide.html b/site/docs/3.5.0/sparkr-migration-guide.html
index c774de7..7c48edf 100644
--- a/site/docs/3.5.0/sparkr-migration-guide.html
+++ b/site/docs/3.5.0/sparkr-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -230,15 +229,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sparkr.html b/site/docs/3.5.0/sparkr.html
index 488c0e2..ddf2c27 100644
--- a/site/docs/3.5.0/sparkr.html
+++ b/site/docs/3.5.0/sparkr.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -258,7 +257,7 @@
<p>The following Spark driver properties can be set in <code class="language-plaintext highlighter-rouge">sparkConfig</code> with <code class="language-plaintext highlighter-rouge">sparkR.session</code> from RStudio:</p>
- <table>
+ <table class="table table-striped">
<thead><tr><th>Property Name</th><th>Property group</th><th><code>spark-submit</code> equivalent</th></tr></thead>
<tr>
<td><code>spark.master</code></td>
@@ -782,7 +781,7 @@
<div><small>Find full example code at "examples/src/main/r/ml/ml.R" in the Spark repo.</small></div>
<h1 id="data-type-mapping-between-r-and-spark">Data type mapping between R and Spark</h1>
-<table>
+<table class="table table-striped">
<thead><tr><th>R</th><th>Spark</th></tr></thead>
<tr>
<td>byte</td>
@@ -921,7 +920,7 @@
<p>The following functions are masked by the SparkR package:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Masked function</th><th>How to Access</th></tr></thead>
<tr>
<td><code>cov</code> in <code>package:stats</code></td>
@@ -952,15 +951,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-avro.html b/site/docs/3.5.0/sql-data-sources-avro.html
index fe4a011..cd6d439 100644
--- a/site/docs/3.5.0/sql-data-sources-avro.html
+++ b/site/docs/3.5.0/sql-data-sources-avro.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -585,7 +584,7 @@
<li>the <code class="language-plaintext highlighter-rouge">options</code> parameter in function <code class="language-plaintext highlighter-rouge">from_avro</code>.</li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th><th><b>Since Version</b></th></tr></thead>
<tr>
<td><code>avroSchema</code></td>
@@ -683,7 +682,7 @@
<h2 id="configuration">Configuration</h2>
<p>Configuration of Avro can be done using the <code class="language-plaintext highlighter-rouge">setConf</code> method on SparkSession or by running <code class="language-plaintext highlighter-rouge">SET key=value</code> commands using SQL.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Since Version</b></th></tr></thead>
<tr>
<td>spark.sql.legacy.replaceDatabricksSparkAvro.enabled</td>
@@ -770,7 +769,7 @@
<h2 id="supported-types-for-avro---spark-sql-conversion">Supported types for Avro -> Spark SQL conversion</h2>
<p>Currently Spark supports reading all <a href="https://avro.apache.org/docs/1.11.2/specification/#primitive-types">primitive types</a> and <a href="https://avro.apache.org/docs/1.11.2/specification/#complex-types">complex types</a> under records of Avro.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Avro type</b></th><th><b>Spark SQL type</b></th></tr></thead>
<tr>
<td>boolean</td>
@@ -837,7 +836,7 @@
<p>It also supports reading the following Avro <a href="https://avro.apache.org/docs/1.11.2/specification/#logical-types">logical types</a>:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Avro logical type</b></th><th><b>Avro type</b></th><th><b>Spark SQL type</b></th></tr></thead>
<tr>
<td>date</td>
@@ -870,7 +869,7 @@
<h2 id="supported-types-for-spark-sql---avro-conversion">Supported types for Spark SQL -> Avro conversion</h2>
<p>Spark supports writing of all Spark SQL types into Avro. For most types, the mapping from Spark types to Avro types is straightforward (e.g. IntegerType gets converted to int); however, there are a few special cases which are listed below:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Spark SQL type</b></th><th><b>Avro type</b></th><th><b>Avro logical type</b></th></tr></thead>
<tr>
<td>ByteType</td>
@@ -906,7 +905,7 @@
<p>You can also specify the whole output Avro schema with the option <code class="language-plaintext highlighter-rouge">avroSchema</code>, so that Spark SQL types can be converted into other Avro types. The following conversions are not applied by default and require user specified Avro schema:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Spark SQL type</b></th><th><b>Avro type</b></th><th><b>Avro logical type</b></th></tr></thead>
<tr>
<td>BinaryType</td>
@@ -936,15 +935,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-binaryFile.html b/site/docs/3.5.0/sql-data-sources-binaryFile.html
index 9c594fe..787f3f1 100644
--- a/site/docs/3.5.0/sql-data-sources-binaryFile.html
+++ b/site/docs/3.5.0/sql-data-sources-binaryFile.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -420,15 +419,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-csv.html b/site/docs/3.5.0/sql-data-sources-csv.html
index 71fe964..c7044d5 100644
--- a/site/docs/3.5.0/sql-data-sources-csv.html
+++ b/site/docs/3.5.0/sql-data-sources-csv.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -582,7 +581,7 @@
<li><code class="language-plaintext highlighter-rouge">OPTIONS</code> clause at <a href="sql-ref-syntax-ddl-create-table-datasource.html">CREATE TABLE USING DATA_SOURCE</a></li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<td><code>sep</code></td>
@@ -805,15 +804,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-generic-options.html b/site/docs/3.5.0/sql-data-sources-generic-options.html
index c56e184..2f78f52 100644
--- a/site/docs/3.5.0/sql-data-sources-generic-options.html
+++ b/site/docs/3.5.0/sql-data-sources-generic-options.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -730,15 +729,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-hive-tables.html b/site/docs/3.5.0/sql-data-sources-hive-tables.html
index 51729dc..c78f551 100644
--- a/site/docs/3.5.0/sql-data-sources-hive-tables.html
+++ b/site/docs/3.5.0/sql-data-sources-hive-tables.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -711,7 +710,7 @@
By default, we will read the table files as plain text. Note that, Hive storage handler is not supported yet when
creating table, you can create a table using storage handler at Hive side, and use Spark SQL to read it.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Meaning</th></tr></thead>
<tr>
<td><code>fileFormat</code></td>
@@ -759,7 +758,7 @@
<p>The following options can be used to configure the version of Hive that is used to retrieve metadata:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.hive.metastore.version</code></td>
@@ -853,15 +852,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-jdbc.html b/site/docs/3.5.0/sql-data-sources-jdbc.html
index 4cbd6ba..e15e966 100644
--- a/site/docs/3.5.0/sql-data-sources-jdbc.html
+++ b/site/docs/3.5.0/sql-data-sources-jdbc.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -404,7 +403,7 @@
<code>user</code> and <code>password</code> are normally provided as connection properties for
logging into the data sources.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<td><code>url</code></td>
@@ -902,15 +901,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-json.html b/site/docs/3.5.0/sql-data-sources-json.html
index be3c033..a757985 100644
--- a/site/docs/3.5.0/sql-data-sources-json.html
+++ b/site/docs/3.5.0/sql-data-sources-json.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -594,7 +593,7 @@
<li><code class="language-plaintext highlighter-rouge">OPTIONS</code> clause at <a href="sql-ref-syntax-ddl-create-table-datasource.html">CREATE TABLE USING DATA_SOURCE</a></li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<!-- TODO(SPARK-35433): Add timeZone to Data Source Option for CSV, too. -->
@@ -768,15 +767,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-load-save-functions.html b/site/docs/3.5.0/sql-data-sources-load-save-functions.html
index 5ee1ddb..ddf55ea 100644
--- a/site/docs/3.5.0/sql-data-sources-load-save-functions.html
+++ b/site/docs/3.5.0/sql-data-sources-load-save-functions.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -646,7 +645,7 @@
atomic. Additionally, when performing an <code class="language-plaintext highlighter-rouge">Overwrite</code>, the data will be deleted before writing out the
new data.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Scala/Java</th><th>Any Language</th><th>Meaning</th></tr></thead>
<tr>
<td><code>SaveMode.ErrorIfExists</code> (default)</td>
@@ -837,15 +836,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-orc.html b/site/docs/3.5.0/sql-data-sources-orc.html
index a5a548a..0cfb484 100644
--- a/site/docs/3.5.0/sql-data-sources-orc.html
+++ b/site/docs/3.5.0/sql-data-sources-orc.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -489,7 +488,7 @@
<h3 id="configuration">Configuration</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Since Version</b></th></tr></thead>
<tr>
<td><code>spark.sql.orc.impl</code></td>
@@ -595,7 +594,7 @@
<li><code class="language-plaintext highlighter-rouge">OPTIONS</code> clause at <a href="sql-ref-syntax-ddl-create-table-datasource.html">CREATE TABLE USING DATA_SOURCE</a></li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<td><code>mergeSchema</code></td>
@@ -618,15 +617,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-parquet.html b/site/docs/3.5.0/sql-data-sources-parquet.html
index 2b86e4c..7b731f1 100644
--- a/site/docs/3.5.0/sql-data-sources-parquet.html
+++ b/site/docs/3.5.0/sql-data-sources-parquet.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -954,7 +953,7 @@
<li><code class="language-plaintext highlighter-rouge">OPTIONS</code> clause at <a href="sql-ref-syntax-ddl-create-table-datasource.html">CREATE TABLE USING DATA_SOURCE</a></li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<td><code>datetimeRebaseMode</code></td>
@@ -1002,7 +1001,7 @@
<p>Configuration of Parquet can be done using the <code class="language-plaintext highlighter-rouge">setConf</code> method on <code class="language-plaintext highlighter-rouge">SparkSession</code> or by running
<code class="language-plaintext highlighter-rouge">SET key=value</code> commands using SQL.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.parquet.binaryAsString</code></td>
@@ -1253,15 +1252,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-protobuf.html b/site/docs/3.5.0/sql-data-sources-protobuf.html
index 21d9f8c..2b0df4e 100644
--- a/site/docs/3.5.0/sql-data-sources-protobuf.html
+++ b/site/docs/3.5.0/sql-data-sources-protobuf.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -734,15 +733,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-text.html b/site/docs/3.5.0/sql-data-sources-text.html
index 4435b39..230e4ae 100644
--- a/site/docs/3.5.0/sql-data-sources-text.html
+++ b/site/docs/3.5.0/sql-data-sources-text.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -530,7 +529,7 @@
<li><code class="language-plaintext highlighter-rouge">OPTIONS</code> clause at <a href="sql-ref-syntax-ddl-create-table-datasource.html">CREATE TABLE USING DATA_SOURCE</a></li>
</ul>
-<table>
+<table class="table table-striped">
<thead><tr><th><b>Property Name</b></th><th><b>Default</b></th><th><b>Meaning</b></th><th><b>Scope</b></th></tr></thead>
<tr>
<td><code>wholetext</code></td>
@@ -559,15 +558,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources-troubleshooting.html b/site/docs/3.5.0/sql-data-sources-troubleshooting.html
index 1df49f7..14751e1 100644
--- a/site/docs/3.5.0/sql-data-sources-troubleshooting.html
+++ b/site/docs/3.5.0/sql-data-sources-troubleshooting.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -380,15 +379,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-data-sources.html b/site/docs/3.5.0/sql-data-sources.html
index 943dd36..2b3ca10 100644
--- a/site/docs/3.5.0/sql-data-sources.html
+++ b/site/docs/3.5.0/sql-data-sources.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -443,15 +442,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-distributed-sql-engine-spark-sql-cli.html b/site/docs/3.5.0/sql-distributed-sql-engine-spark-sql-cli.html
index ea1fd70..37be63c 100644
--- a/site/docs/3.5.0/sql-distributed-sql-engine-spark-sql-cli.html
+++ b/site/docs/3.5.0/sql-distributed-sql-engine-spark-sql-cli.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -308,7 +307,7 @@
<h2 id="supported-comment-types">Supported comment types</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>Comment</th><th>Example</th></tr></thead>
<tr>
<td>simple comment</td>
@@ -362,7 +361,7 @@
</li>
</ol>
-<table>
+<table class="table table-striped">
<thead><tr><th>Command</th><th>Description</th></tr></thead>
<tr>
<td><code>quit</code> or <code>exit</code></td>
@@ -452,15 +451,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-distributed-sql-engine.html b/site/docs/3.5.0/sql-distributed-sql-engine.html
index 565cfde..750b6f8 100644
--- a/site/docs/3.5.0/sql-distributed-sql-engine.html
+++ b/site/docs/3.5.0/sql-distributed-sql-engine.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -345,15 +344,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-as-of-join-error-class.html b/site/docs/3.5.0/sql-error-conditions-as-of-join-error-class.html
index 3bed028..67f1756 100644
--- a/site/docs/3.5.0/sql-error-conditions-as-of-join-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-as-of-join-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-cannot-update-field-error-class.html b/site/docs/3.5.0/sql-error-conditions-cannot-update-field-error-class.html
index 5529d20..5570c85 100644
--- a/site/docs/3.5.0/sql-error-conditions-cannot-update-field-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-cannot-update-field-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -481,15 +480,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-connect-error-class.html b/site/docs/3.5.0/sql-error-conditions-connect-error-class.html
index 905352c..b7ef866 100644
--- a/site/docs/3.5.0/sql-error-conditions-connect-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-connect-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -481,15 +480,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-create-view-column-arity-mismatch-error-class.html b/site/docs/3.5.0/sql-error-conditions-create-view-column-arity-mismatch-error-class.html
index 00ea2d2..689b733 100644
--- a/site/docs/3.5.0/sql-error-conditions-create-view-column-arity-mismatch-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-create-view-column-arity-mismatch-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-datatype-mismatch-error-class.html b/site/docs/3.5.0/sql-error-conditions-datatype-mismatch-error-class.html
index 0511fc2..8c391f4 100644
--- a/site/docs/3.5.0/sql-error-conditions-datatype-mismatch-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-datatype-mismatch-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -680,15 +679,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-duplicate-routine-parameter-assignment-error-class.html b/site/docs/3.5.0/sql-error-conditions-duplicate-routine-parameter-assignment-error-class.html
index f1c4822..5460552 100644
--- a/site/docs/3.5.0/sql-error-conditions-duplicate-routine-parameter-assignment-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-duplicate-routine-parameter-assignment-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-incompatible-data-for-table-error-class.html b/site/docs/3.5.0/sql-error-conditions-incompatible-data-for-table-error-class.html
index c119bae..6ce1799 100644
--- a/site/docs/3.5.0/sql-error-conditions-incompatible-data-for-table-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-incompatible-data-for-table-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -501,15 +500,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-incompatible-data-to-table-error-class.html b/site/docs/3.5.0/sql-error-conditions-incompatible-data-to-table-error-class.html
index d4c8f51..6e4d7a0 100644
--- a/site/docs/3.5.0/sql-error-conditions-incompatible-data-to-table-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-incompatible-data-to-table-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -497,15 +496,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-incomplete-type-definition-error-class.html b/site/docs/3.5.0/sql-error-conditions-incomplete-type-definition-error-class.html
index 82c39ae..8c77eb5 100644
--- a/site/docs/3.5.0/sql-error-conditions-incomplete-type-definition-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-incomplete-type-definition-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-inconsistent-behavior-cross-version-error-class.html b/site/docs/3.5.0/sql-error-conditions-inconsistent-behavior-cross-version-error-class.html
index 6d95dfe..a2009bf 100644
--- a/site/docs/3.5.0/sql-error-conditions-inconsistent-behavior-cross-version-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-inconsistent-behavior-cross-version-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -496,15 +495,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-insert-column-arity-mismatch-error-class.html b/site/docs/3.5.0/sql-error-conditions-insert-column-arity-mismatch-error-class.html
index 14756e8..42a339a 100644
--- a/site/docs/3.5.0/sql-error-conditions-insert-column-arity-mismatch-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-insert-column-arity-mismatch-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-insufficient-table-property-error-class.html b/site/docs/3.5.0/sql-error-conditions-insufficient-table-property-error-class.html
index 25db70e..cb99ef9 100644
--- a/site/docs/3.5.0/sql-error-conditions-insufficient-table-property-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-insufficient-table-property-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-boundary-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-boundary-error-class.html
index 5cb9c83..552edbe 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-boundary-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-boundary-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-cursor-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-cursor-error-class.html
index 5b13415..7a8b31a 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-cursor-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-cursor-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-default-value-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-default-value-error-class.html
index 5c34b03..3d394b9 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-default-value-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-default-value-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-format-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-format-error-class.html
index 93cec36..952ecb9 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-format-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-format-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -505,15 +504,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-handle-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-handle-error-class.html
index 20cbe94..1334ed8 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-handle-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-handle-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -485,15 +484,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-inline-table-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-inline-table-error-class.html
index 3271126..7316a5f 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-inline-table-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-inline-table-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-lambda-function-call-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-lambda-function-call-error-class.html
index 74e2ba6..bb4ae73 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-lambda-function-call-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-lambda-function-call-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-limit-like-expression-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-limit-like-expression-error-class.html
index 8abedd5..26737bc 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-limit-like-expression-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-limit-like-expression-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-observed-metrics-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-observed-metrics-error-class.html
index 24d90dc..171d506 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-observed-metrics-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-observed-metrics-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -489,15 +488,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-options-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-options-error-class.html
index 6b3ba9a..34de02c 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-options-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-options-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-parameter-value-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-parameter-value-error-class.html
index e5313bd..04ea923 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-parameter-value-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-parameter-value-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -489,15 +488,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-partition-operation-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-partition-operation-error-class.html
index 514c226..b1044b8 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-partition-operation-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-partition-operation-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-schema-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-schema-error-class.html
index f337f6a..e57a985 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-schema-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-schema-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -474,15 +473,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-sql-syntax-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-sql-syntax-error-class.html
index ade76a4..fdf40eb 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-sql-syntax-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-sql-syntax-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -533,15 +532,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-subquery-expression-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-subquery-expression-error-class.html
index 1748811..d47c7db 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-subquery-expression-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-subquery-expression-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -465,15 +464,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-time-travel-timestamp-expr-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-time-travel-timestamp-expr-error-class.html
index a5b8893..dd82559 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-time-travel-timestamp-expr-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-time-travel-timestamp-expr-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-invalid-write-distribution-error-class.html b/site/docs/3.5.0/sql-error-conditions-invalid-write-distribution-error-class.html
index 085fcc2..45a4ac5 100644
--- a/site/docs/3.5.0/sql-error-conditions-invalid-write-distribution-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-invalid-write-distribution-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-malformed-record-in-parsing-error-class.html b/site/docs/3.5.0/sql-error-conditions-malformed-record-in-parsing-error-class.html
index b24b7fc..729c889 100644
--- a/site/docs/3.5.0/sql-error-conditions-malformed-record-in-parsing-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-malformed-record-in-parsing-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -468,15 +467,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-missing-attributes-error-class.html b/site/docs/3.5.0/sql-error-conditions-missing-attributes-error-class.html
index b032563..17c97df 100644
--- a/site/docs/3.5.0/sql-error-conditions-missing-attributes-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-missing-attributes-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -468,15 +467,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-not-a-constant-string-error-class.html b/site/docs/3.5.0/sql-error-conditions-not-a-constant-string-error-class.html
index d56d3cf..f113eb1 100644
--- a/site/docs/3.5.0/sql-error-conditions-not-a-constant-string-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-not-a-constant-string-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-not-allowed-in-from-error-class.html b/site/docs/3.5.0/sql-error-conditions-not-allowed-in-from-error-class.html
index f24d469..cd1bb97 100644
--- a/site/docs/3.5.0/sql-error-conditions-not-allowed-in-from-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-not-allowed-in-from-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-not-null-constraint-violation-error-class.html b/site/docs/3.5.0/sql-error-conditions-not-null-constraint-violation-error-class.html
index b2bd68e..39b0912 100644
--- a/site/docs/3.5.0/sql-error-conditions-not-null-constraint-violation-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-not-null-constraint-violation-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-not-supported-in-jdbc-catalog-error-class.html b/site/docs/3.5.0/sql-error-conditions-not-supported-in-jdbc-catalog-error-class.html
index c7c402b..bfba821 100644
--- a/site/docs/3.5.0/sql-error-conditions-not-supported-in-jdbc-catalog-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-not-supported-in-jdbc-catalog-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-sqlstates.html b/site/docs/3.5.0/sql-error-conditions-sqlstates.html
index d07b106..63417e0 100644
--- a/site/docs/3.5.0/sql-error-conditions-sqlstates.html
+++ b/site/docs/3.5.0/sql-error-conditions-sqlstates.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -462,7 +461,7 @@
<h2 id="class-0a-feature-not-supported">Class <code class="language-plaintext highlighter-rouge">0A</code>: feature not supported</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>0A000</td>
@@ -477,7 +476,7 @@
</table>
<h2 id="class-21-cardinality-violation">Class <code class="language-plaintext highlighter-rouge">21</code>: cardinality violation</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>21000</td>
@@ -492,7 +491,7 @@
</table>
<h2 id="class-22-data-exception">Class <code class="language-plaintext highlighter-rouge">22</code>: data exception</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>22003</td>
@@ -597,7 +596,7 @@
</table>
<h2 id="class-23-integrity-constraint-violation">Class <code class="language-plaintext highlighter-rouge">23</code>: integrity constraint violation</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>23505</td>
@@ -612,7 +611,7 @@
</table>
<h2 id="class-2b-dependent-privilege-descriptors-still-exist">Class <code class="language-plaintext highlighter-rouge">2B</code>: dependent privilege descriptors still exist</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>2BP01</td>
@@ -627,7 +626,7 @@
</table>
<h2 id="class-38-external-routine-exception">Class <code class="language-plaintext highlighter-rouge">38</code>: external routine exception</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>38000</td>
@@ -642,7 +641,7 @@
</table>
<h2 id="class-39-external-routine-invocation-exception">Class <code class="language-plaintext highlighter-rouge">39</code>: external routine invocation exception</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>39000</td>
@@ -657,7 +656,7 @@
</table>
<h2 id="class-42-syntax-error-or-access-rule-violation">Class <code class="language-plaintext highlighter-rouge">42</code>: syntax error or access rule violation</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>42000</td>
@@ -1077,7 +1076,7 @@
</table>
<h2 id="class-46-java-ddl-1">Class <code class="language-plaintext highlighter-rouge">46</code>: java ddl 1</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>46110</td>
@@ -1101,7 +1100,7 @@
</table>
<h2 id="class-53-insufficient-resources">Class <code class="language-plaintext highlighter-rouge">53</code>: insufficient resources</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>53200</td>
@@ -1116,7 +1115,7 @@
</table>
<h2 id="class-54-program-limit-exceeded">Class <code class="language-plaintext highlighter-rouge">54</code>: program limit exceeded</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>54000</td>
@@ -1131,7 +1130,7 @@
</table>
<h2 id="class-hy-cli-specific-condition">Class <code class="language-plaintext highlighter-rouge">HY</code>: CLI-specific condition</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>HY008</td>
@@ -1146,7 +1145,7 @@
</table>
<h2 id="class-xx-internal-error">Class <code class="language-plaintext highlighter-rouge">XX</code>: internal error</h2>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQLSTATE</th><th>Description and issuing error classes</th></tr></thead>
<tr>
<td>XX000</td>
@@ -1160,21 +1159,21 @@
</table>
+<p>.. include:: /shared/replacements.md</p>
+
</div>
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unresolved-column-error-class.html b/site/docs/3.5.0/sql-error-conditions-unresolved-column-error-class.html
index d9765ac..eda6af7 100644
--- a/site/docs/3.5.0/sql-error-conditions-unresolved-column-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unresolved-column-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -467,15 +466,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unresolved-field-error-class.html b/site/docs/3.5.0/sql-error-conditions-unresolved-field-error-class.html
index 70b9f8c..d82ccbc 100644
--- a/site/docs/3.5.0/sql-error-conditions-unresolved-field-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unresolved-field-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -467,15 +466,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unresolved-map-key-error-class.html b/site/docs/3.5.0/sql-error-conditions-unresolved-map-key-error-class.html
index 0739054..4f00db9 100644
--- a/site/docs/3.5.0/sql-error-conditions-unresolved-map-key-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unresolved-map-key-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -467,15 +466,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-add-file-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-add-file-error-class.html
index 74df1c3..6ceff0e 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-add-file-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-add-file-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-default-value-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-default-value-error-class.html
index a3cea06..20281fd 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-default-value-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-default-value-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -467,15 +466,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-deserializer-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-deserializer-error-class.html
index 45ba8f4..f589fcf 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-deserializer-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-deserializer-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-feature-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-feature-error-class.html
index 1a8e263..d240f2b 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-feature-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-feature-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -633,15 +632,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-generator-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-generator-error-class.html
index 6199e5d..0d7dc9a 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-generator-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-generator-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-insert-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-insert-error-class.html
index 77ac490..5e417ed 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-insert-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-insert-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-merge-condition-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-merge-condition-error-class.html
index 90672be..616ed77 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-merge-condition-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-merge-condition-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-overwrite-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-overwrite-error-class.html
index 5ec0f21..a8a9532 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-overwrite-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-overwrite-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-save-mode-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-save-mode-error-class.html
index d888978..409956a 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-save-mode-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-save-mode-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-unsupported-subquery-expression-category-error-class.html b/site/docs/3.5.0/sql-error-conditions-unsupported-subquery-expression-category-error-class.html
index 7bcb8e3..e62971d 100644
--- a/site/docs/3.5.0/sql-error-conditions-unsupported-subquery-expression-category-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-unsupported-subquery-expression-category-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -509,15 +508,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions-wrong-num-args-error-class.html b/site/docs/3.5.0/sql-error-conditions-wrong-num-args-error-class.html
index 0c87dff..3151d14 100644
--- a/site/docs/3.5.0/sql-error-conditions-wrong-num-args-error-class.html
+++ b/site/docs/3.5.0/sql-error-conditions-wrong-num-args-error-class.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-error-conditions.html b/site/docs/3.5.0/sql-error-conditions.html
index b2c9692..77a995d 100644
--- a/site/docs/3.5.0/sql-error-conditions.html
+++ b/site/docs/3.5.0/sql-error-conditions.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -2490,15 +2489,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-getting-started.html b/site/docs/3.5.0/sql-getting-started.html
index b40f56a..343b14c 100644
--- a/site/docs/3.5.0/sql-getting-started.html
+++ b/site/docs/3.5.0/sql-getting-started.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1387,15 +1386,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-migration-guide.html b/site/docs/3.5.0/sql-migration-guide.html
index 3b174cc..a9abdab 100644
--- a/site/docs/3.5.0/sql-migration-guide.html
+++ b/site/docs/3.5.0/sql-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1026,7 +1025,7 @@
<ul>
<li>In Spark version 2.3 and earlier, the second parameter to array_contains function is implicitly promoted to the element type of first array type parameter. This type promotion can be lossy and may cause <code class="language-plaintext highlighter-rouge">array_contains</code> function to return wrong result. This problem has been addressed in 2.4 by employing a safer type promotion mechanism. This can cause some change in behavior and are illustrated in the table below.
- <table>
+ <table class="table table-striped">
<thead>
<tr>
<th>
@@ -1167,7 +1166,7 @@
</li>
<li>
<p>Partition column inference previously found incorrect common type for different inferred types, for example, previously it ended up with double type as the common type for double type and date type. Now it finds the correct common type for such conflicts. The conflict resolution follows the table below:</p>
- <table>
+ <table class="table table-striped">
<thead>
<tr>
<th>
@@ -1864,15 +1863,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-performance-tuning.html b/site/docs/3.5.0/sql-performance-tuning.html
index e38b9d8..e7ff94e 100644
--- a/site/docs/3.5.0/sql-performance-tuning.html
+++ b/site/docs/3.5.0/sql-performance-tuning.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -316,7 +315,7 @@
<p>Configuration of in-memory caching can be done using the <code class="language-plaintext highlighter-rouge">setConf</code> method on <code class="language-plaintext highlighter-rouge">SparkSession</code> or by running
<code class="language-plaintext highlighter-rouge">SET key=value</code> commands using SQL.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.inMemoryColumnarStorage.compressed</code></td>
@@ -344,7 +343,7 @@
<p>The following options can also be used to tune the performance of query execution. It is possible
that these options will be deprecated in future release as more optimizations are performed automatically.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.files.maxPartitionBytes</code></td>
@@ -524,7 +523,7 @@
<h3 id="coalescing-post-shuffle-partitions">Coalescing Post Shuffle Partitions</h3>
<p>This feature coalesces the post shuffle partitions based on the map output statistics when both <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.enabled</code> and <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.coalescePartitions.enabled</code> configurations are true. This feature simplifies the tuning of shuffle partition number when running queries. You do not need to set a proper shuffle partition number to fit your dataset. Spark can pick the proper shuffle partition number at runtime once you set a large enough initial number of shuffle partitions via <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.coalescePartitions.initialPartitionNum</code> configuration.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.coalescePartitions.enabled</code></td>
@@ -569,7 +568,7 @@
</table>
<h3 id="spliting-skewed-shuffle-partitions">Spliting skewed shuffle partitions</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled</code></td>
@@ -591,7 +590,7 @@
<h3 id="converting-sort-merge-join-to-broadcast-join">Converting sort-merge join to broadcast join</h3>
<p>AQE converts sort-merge join to broadcast hash join when the runtime statistics of any join side is smaller than the adaptive broadcast hash join threshold. This is not as efficient as planning a broadcast hash join in the first place, but it’s better than keep doing the sort-merge join, as we can save the sorting of both the join sides, and read shuffle files locally to save network traffic(if <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.localShuffleReader.enabled</code> is true)</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.autoBroadcastJoinThreshold</code></td>
@@ -613,7 +612,7 @@
<h3 id="converting-sort-merge-join-to-shuffled-hash-join">Converting sort-merge join to shuffled hash join</h3>
<p>AQE converts sort-merge join to shuffled hash join when all post shuffle partitions are smaller than a threshold, the max threshold can see the config <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.maxShuffledHashJoinLocalMapThreshold</code>.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.maxShuffledHashJoinLocalMapThreshold</code></td>
@@ -627,7 +626,7 @@
<h3 id="optimizing-skew-join">Optimizing Skew Join</h3>
<p>Data skew can severely downgrade the performance of join queries. This feature dynamically handles skew in sort-merge join by splitting (and replicating if needed) skewed tasks into roughly evenly sized tasks. It takes effect when both <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.enabled</code> and <code class="language-plaintext highlighter-rouge">spark.sql.adaptive.skewJoin.enabled</code> configurations are enabled.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.skewJoin.enabled</code></td>
@@ -664,7 +663,7 @@
</table>
<h3 id="misc">Misc</h3>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.sql.adaptive.optimizer.excludedRules</code></td>
@@ -690,15 +689,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-programming-guide.html b/site/docs/3.5.0/sql-programming-guide.html
index 6a8723b..6b4c30c 100644
--- a/site/docs/3.5.0/sql-programming-guide.html
+++ b/site/docs/3.5.0/sql-programming-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -282,15 +281,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-pyspark-pandas-with-arrow.html b/site/docs/3.5.0/sql-pyspark-pandas-with-arrow.html
index 5157f75..ea4d87a 100644
--- a/site/docs/3.5.0/sql-pyspark-pandas-with-arrow.html
+++ b/site/docs/3.5.0/sql-pyspark-pandas-with-arrow.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -240,15 +239,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-ansi-compliance.html b/site/docs/3.5.0/sql-ref-ansi-compliance.html
index d71d300..9e63105 100644
--- a/site/docs/3.5.0/sql-ref-ansi-compliance.html
+++ b/site/docs/3.5.0/sql-ref-ansi-compliance.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -3076,15 +3075,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-datatypes.html b/site/docs/3.5.0/sql-ref-datatypes.html
index 20e6707..00870cc 100644
--- a/site/docs/3.5.0/sql-ref-datatypes.html
+++ b/site/docs/3.5.0/sql-ref-datatypes.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1187,15 +1186,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-datetime-pattern.html b/site/docs/3.5.0/sql-ref-datetime-pattern.html
index 71284cb..61a4c51 100644
--- a/site/docs/3.5.0/sql-ref-datetime-pattern.html
+++ b/site/docs/3.5.0/sql-ref-datetime-pattern.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -614,15 +613,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-functions-builtin.html b/site/docs/3.5.0/sql-ref-functions-builtin.html
index 6ff9013..6f0793b 100644
--- a/site/docs/3.5.0/sql-ref-functions-builtin.html
+++ b/site/docs/3.5.0/sql-ref-functions-builtin.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -329,8244 +328,6 @@
-<h3 id="aggregate-functions">Aggregate Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>any(expr)</td>
- <td>Returns true if at least one value of `expr` is true.</td>
- </tr>
- <tr>
- <td>any_value(expr[, isIgnoreNull])</td>
- <td>Returns some value of `expr` for a group of rows.
- If `isIgnoreNull` is true, returns only non-null values.</td>
- </tr>
- <tr>
- <td>approx_count_distinct(expr[, relativeSD])</td>
- <td>Returns the estimated cardinality by HyperLogLog++.
- `relativeSD` defines the maximum relative standard deviation allowed.</td>
- </tr>
- <tr>
- <td>approx_percentile(col, percentage [, accuracy])</td>
- <td>Returns the approximate `percentile` of the numeric or
- ansi interval column `col` which is the smallest value in the ordered `col` values (sorted
- from least to greatest) such that no more than `percentage` of `col` values is less than
- the value or equal to that value. The value of percentage must be between 0.0 and 1.0.
- The `accuracy` parameter (default: 10000) is a positive numeric literal which controls
- approximation accuracy at the cost of memory. Higher value of `accuracy` yields better
- accuracy, `1.0/accuracy` is the relative error of the approximation.
- When `percentage` is an array, each value of the percentage array must be between 0.0 and 1.0.
- In this case, returns the approximate percentile array of column `col` at the given
- percentage array.</td>
- </tr>
- <tr>
- <td>array_agg(expr)</td>
- <td>Collects and returns a list of non-unique elements.</td>
- </tr>
- <tr>
- <td>avg(expr)</td>
- <td>Returns the mean calculated from values of a group.</td>
- </tr>
- <tr>
- <td>bit_and(expr)</td>
- <td>Returns the bitwise AND of all non-null input values, or null if none.</td>
- </tr>
- <tr>
- <td>bit_or(expr)</td>
- <td>Returns the bitwise OR of all non-null input values, or null if none.</td>
- </tr>
- <tr>
- <td>bit_xor(expr)</td>
- <td>Returns the bitwise XOR of all non-null input values, or null if none.</td>
- </tr>
- <tr>
- <td>bitmap_construct_agg(child)</td>
- <td>Returns a bitmap with the positions of the bits set from all the values from
- the child expression. The child expression will most likely be bitmap_bit_position().</td>
- </tr>
- <tr>
- <td>bitmap_or_agg(child)</td>
- <td>Returns a bitmap that is the bitwise OR of all of the bitmaps from the child
- expression. The input should be bitmaps created from bitmap_construct_agg().</td>
- </tr>
- <tr>
- <td>bool_and(expr)</td>
- <td>Returns true if all values of `expr` are true.</td>
- </tr>
- <tr>
- <td>bool_or(expr)</td>
- <td>Returns true if at least one value of `expr` is true.</td>
- </tr>
- <tr>
- <td>collect_list(expr)</td>
- <td>Collects and returns a list of non-unique elements.</td>
- </tr>
- <tr>
- <td>collect_set(expr)</td>
- <td>Collects and returns a set of unique elements.</td>
- </tr>
- <tr>
- <td>corr(expr1, expr2)</td>
- <td>Returns Pearson coefficient of correlation between a set of number pairs.</td>
- </tr>
- <tr>
- <td>count(*)</td>
- <td>Returns the total number of retrieved rows, including rows containing null.</td>
- </tr>
- <tr>
- <td> count(expr[, expr...])</td>
- <td>Returns the number of rows for which the supplied expression(s) are all non-null.</td>
- </tr>
- <tr>
- <td> count(DISTINCT expr[, expr...])</td>
- <td>Returns the number of rows for which the supplied expression(s) are unique and non-null.</td>
- </tr>
- <tr>
- <td>count_if(expr)</td>
- <td>Returns the number of `TRUE` values for the expression.</td>
- </tr>
- <tr>
- <td>count_min_sketch(col, eps, confidence, seed)</td>
- <td>Returns a count-min sketch of a column with the given esp,
- confidence and seed. The result is an array of bytes, which can be deserialized to a
- `CountMinSketch` before usage. Count-min sketch is a probabilistic data structure used for
- cardinality estimation using sub-linear space.</td>
- </tr>
- <tr>
- <td>covar_pop(expr1, expr2)</td>
- <td>Returns the population covariance of a set of number pairs.</td>
- </tr>
- <tr>
- <td>covar_samp(expr1, expr2)</td>
- <td>Returns the sample covariance of a set of number pairs.</td>
- </tr>
- <tr>
- <td>every(expr)</td>
- <td>Returns true if all values of `expr` are true.</td>
- </tr>
- <tr>
- <td>first(expr[, isIgnoreNull])</td>
- <td>Returns the first value of `expr` for a group of rows.
- If `isIgnoreNull` is true, returns only non-null values.</td>
- </tr>
- <tr>
- <td>first_value(expr[, isIgnoreNull])</td>
- <td>Returns the first value of `expr` for a group of rows.
- If `isIgnoreNull` is true, returns only non-null values.</td>
- </tr>
- <tr>
- <td>grouping(col)</td>
- <td>indicates whether a specified column in a GROUP BY is aggregated or
- not, returns 1 for aggregated or 0 for not aggregated in the result set.",</td>
- </tr>
- <tr>
- <td>grouping_id([col1[, col2 ..]])</td>
- <td>returns the level of grouping, equals to
- `(grouping(c1) << (n-1)) + (grouping(c2) << (n-2)) + ... + grouping(cn)`</td>
- </tr>
- <tr>
- <td>histogram_numeric(expr, nb)</td>
- <td>Computes a histogram on numeric 'expr' using nb bins.
- The return value is an array of (x,y) pairs representing the centers of the
- histogram's bins. As the value of 'nb' is increased, the histogram approximation
- gets finer-grained, but may yield artifacts around outliers. In practice, 20-40
- histogram bins appear to work well, with more bins being required for skewed or
- smaller datasets. Note that this function creates a histogram with non-uniform
- bin widths. It offers no guarantees in terms of the mean-squared-error of the
- histogram, but in practice is comparable to the histograms produced by the R/S-Plus
- statistical computing packages. Note: the output type of the 'x' field in the return value is
- propagated from the input value consumed in the aggregate function.</td>
- </tr>
- <tr>
- <td>hll_sketch_agg(expr, lgConfigK)</td>
- <td>Returns the HllSketch's updatable binary representation.
- `lgConfigK` (optional) the log-base-2 of K, with K is the number of buckets or
- slots for the HllSketch.</td>
- </tr>
- <tr>
- <td>hll_union_agg(expr, allowDifferentLgConfigK)</td>
- <td>Returns the estimated number of unique values.
- `allowDifferentLgConfigK` (optional) Allow sketches with different lgConfigK values
- to be unioned (defaults to false).</td>
- </tr>
- <tr>
- <td>kurtosis(expr)</td>
- <td>Returns the kurtosis value calculated from values of a group.</td>
- </tr>
- <tr>
- <td>last(expr[, isIgnoreNull])</td>
- <td>Returns the last value of `expr` for a group of rows.
- If `isIgnoreNull` is true, returns only non-null values</td>
- </tr>
- <tr>
- <td>last_value(expr[, isIgnoreNull])</td>
- <td>Returns the last value of `expr` for a group of rows.
- If `isIgnoreNull` is true, returns only non-null values</td>
- </tr>
- <tr>
- <td>max(expr)</td>
- <td>Returns the maximum value of `expr`.</td>
- </tr>
- <tr>
- <td>max_by(x, y)</td>
- <td>Returns the value of `x` associated with the maximum value of `y`.</td>
- </tr>
- <tr>
- <td>mean(expr)</td>
- <td>Returns the mean calculated from values of a group.</td>
- </tr>
- <tr>
- <td>median(col)</td>
- <td>Returns the median of numeric or ANSI interval column `col`.</td>
- </tr>
- <tr>
- <td>min(expr)</td>
- <td>Returns the minimum value of `expr`.</td>
- </tr>
- <tr>
- <td>min_by(x, y)</td>
- <td>Returns the value of `x` associated with the minimum value of `y`.</td>
- </tr>
- <tr>
- <td>mode(col)</td>
- <td>Returns the most frequent value for the values within `col`. NULL values are ignored. If all the values are NULL, or there are 0 rows, returns NULL.</td>
- </tr>
- <tr>
- <td>percentile(col, percentage [, frequency])</td>
- <td>Returns the exact percentile value of numeric
- or ANSI interval column `col` at the given percentage. The value of percentage must be
- between 0.0 and 1.0. The value of frequency should be positive integral</td>
- </tr>
- <tr>
- <td> percentile(col, array(percentage1 [, percentage2]...) [, frequency])</td>
- <td>Returns the exact
- percentile value array of numeric column `col` at the given percentage(s). Each value
- of the percentage array must be between 0.0 and 1.0. The value of frequency should be
- positive integral</td>
- </tr>
- <tr>
- <td>percentile_approx(col, percentage [, accuracy])</td>
- <td>Returns the approximate `percentile` of the numeric or
- ansi interval column `col` which is the smallest value in the ordered `col` values (sorted
- from least to greatest) such that no more than `percentage` of `col` values is less than
- the value or equal to that value. The value of percentage must be between 0.0 and 1.0.
- The `accuracy` parameter (default: 10000) is a positive numeric literal which controls
- approximation accuracy at the cost of memory. Higher value of `accuracy` yields better
- accuracy, `1.0/accuracy` is the relative error of the approximation.
- When `percentage` is an array, each value of the percentage array must be between 0.0 and 1.0.
- In this case, returns the approximate percentile array of column `col` at the given
- percentage array.</td>
- </tr>
- <tr>
- <td>regr_avgx(y, x)</td>
- <td>Returns the average of the independent variable for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_avgy(y, x)</td>
- <td>Returns the average of the dependent variable for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_count(y, x)</td>
- <td>Returns the number of non-null number pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_intercept(y, x)</td>
- <td>Returns the intercept of the univariate linear regression line for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_r2(y, x)</td>
- <td>Returns the coefficient of determination for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_slope(y, x)</td>
- <td>Returns the slope of the linear regression line for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_sxx(y, x)</td>
- <td>Returns REGR_COUNT(y, x) * VAR_POP(x) for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_sxy(y, x)</td>
- <td>Returns REGR_COUNT(y, x) * COVAR_POP(y, x) for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>regr_syy(y, x)</td>
- <td>Returns REGR_COUNT(y, x) * VAR_POP(y) for non-null pairs in a group, where `y` is the dependent variable and `x` is the independent variable.</td>
- </tr>
- <tr>
- <td>skewness(expr)</td>
- <td>Returns the skewness value calculated from values of a group.</td>
- </tr>
- <tr>
- <td>some(expr)</td>
- <td>Returns true if at least one value of `expr` is true.</td>
- </tr>
- <tr>
- <td>std(expr)</td>
- <td>Returns the sample standard deviation calculated from values of a group.</td>
- </tr>
- <tr>
- <td>stddev(expr)</td>
- <td>Returns the sample standard deviation calculated from values of a group.</td>
- </tr>
- <tr>
- <td>stddev_pop(expr)</td>
- <td>Returns the population standard deviation calculated from values of a group.</td>
- </tr>
- <tr>
- <td>stddev_samp(expr)</td>
- <td>Returns the sample standard deviation calculated from values of a group.</td>
- </tr>
- <tr>
- <td>sum(expr)</td>
- <td>Returns the sum calculated from values of a group.</td>
- </tr>
- <tr>
- <td>try_avg(expr)</td>
- <td>Returns the mean calculated from values of a group and the result is null on overflow.</td>
- </tr>
- <tr>
- <td>try_sum(expr)</td>
- <td>Returns the sum calculated from values of a group and the result is null on overflow.</td>
- </tr>
- <tr>
- <td>var_pop(expr)</td>
- <td>Returns the population variance calculated from values of a group.</td>
- </tr>
- <tr>
- <td>var_samp(expr)</td>
- <td>Returns the sample variance calculated from values of a group.</td>
- </tr>
- <tr>
- <td>variance(expr)</td>
- <td>Returns the sample variance calculated from values of a group.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- any</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">any</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- any_value</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">any_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- approx_count_distinct</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">approx_count_distinct</span><span class="p">(</span><span class="n">col1</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">approx_count_distinct</span><span class="p">(</span><span class="n">col1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- approx_percentile</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">6</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">7</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">9</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">MONTH</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">7</span><span class="p">),</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">approx_percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">7</span><span class="p">),</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'01'</span><span class="w"> </span><span class="n">SE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- array_agg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">collect_list</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- avg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">avg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">avg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">avg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">avg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- bit_and</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bit_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- bit_or</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">bit_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- bit_xor</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_xor</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bit_xor</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- bitmap_construct_agg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_construct_agg</span><span class="p">(</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="n">col</span><span class="p">))),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_construct_agg</span><span class="p">(</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="n">col</span><span class="p">))),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">070000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_construct_agg</span><span class="p">(</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="n">col</span><span class="p">))),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_construct_agg</span><span class="p">(</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="n">col</span><span class="p">))),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">010000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-
-<span class="c1">-- bitmap_or_agg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_or_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'10'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'20'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'40'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_or_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">700000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_or_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'10'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'10'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'10'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">hex</span><span class="p">(</span><span class="n">bitmap_or_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)),</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">100000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- bool_and</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">bool_and</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- bool_or</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bool_or</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- collect_list</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">collect_list</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">collect_list</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- collect_set</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">collect_set</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">collect_set</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- corr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">corr</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">corr</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">8660254037844387</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- count</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">count</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">count</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="k">count</span><span class="p">(</span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- count_if</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">count_if</span><span class="p">(</span><span class="n">col</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">count_if</span><span class="p">(((</span><span class="n">col</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">count_if</span><span class="p">(</span><span class="n">col</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">count_if</span><span class="p">((</span><span class="n">col</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- count_min_sketch</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">count_min_sketch</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">count_min_sketch</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">00000001000000000</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="c1">-- covar_pop</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">covar_pop</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">covar_pop</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">6666666666666666</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- covar_samp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">covar_samp</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">covar_samp</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="w"> </span><span class="n">c2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- every</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">false</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">every</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- first</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="k">first</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- first_value</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">first_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- grouping</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="k">grouping</span><span class="p">(</span><span class="n">name</span><span class="p">),</span><span class="w"> </span><span class="k">sum</span><span class="p">(</span><span class="n">age</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'Alice'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="s1">'Bob'</span><span class="p">)</span><span class="w"> </span><span class="n">people</span><span class="p">(</span><span class="n">age</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="k">cube</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----+--------------+--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">name</span><span class="o">|</span><span class="k">grouping</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">|</span><span class="k">sum</span><span class="p">(</span><span class="n">age</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+--------------+--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">|</span><span class="n">Alice</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Bob</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+--------------+--------+</span>
-
-<span class="c1">-- grouping_id</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">grouping_id</span><span class="p">(),</span><span class="w"> </span><span class="k">sum</span><span class="p">(</span><span class="n">age</span><span class="p">),</span><span class="w"> </span><span class="k">avg</span><span class="p">(</span><span class="n">height</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'Alice'</span><span class="p">,</span><span class="w"> </span><span class="mi">165</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="s1">'Bob'</span><span class="p">,</span><span class="w"> </span><span class="mi">180</span><span class="p">)</span><span class="w"> </span><span class="n">people</span><span class="p">(</span><span class="n">age</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">height</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="k">cube</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">height</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----+-------------+--------+-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">name</span><span class="o">|</span><span class="n">grouping_id</span><span class="p">()</span><span class="o">|</span><span class="k">sum</span><span class="p">(</span><span class="n">age</span><span class="p">)</span><span class="o">|</span><span class="k">avg</span><span class="p">(</span><span class="n">height</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+-------------+--------+-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">165</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="n">Alice</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">165</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="n">Alice</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">165</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span><span class="w"> </span><span class="mi">172</span><span class="p">.</span><span class="mi">5</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Bob</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span><span class="w"> </span><span class="mi">180</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Bob</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span><span class="w"> </span><span class="mi">180</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span><span class="w"> </span><span class="mi">180</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+-------------+--------+-----------+</span>
-
-<span class="c1">-- histogram_numeric</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">histogram_numeric</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">histogram_numeric</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">....</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- hll_sketch_agg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- hll_union_agg</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_union_agg</span><span class="p">(</span><span class="n">sketch</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">sketch</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">UNION</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">sketch</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_union_agg</span><span class="p">(</span><span class="n">sketch</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-
-<span class="c1">-- kurtosis</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">kurtosis</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="o">-</span><span class="mi">20</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">100</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">kurtosis</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|-</span><span class="mi">0</span><span class="p">.</span><span class="mi">7014368047529618</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">kurtosis</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">100</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">kurtosis</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">19432323191698986</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- last</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="k">last</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- last_value</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">last_value</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- max</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">max</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">50</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">max</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">50</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- max_by</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">max_by</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'c'</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">max_by</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- mean</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mean</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">mean</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mean</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">mean</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- median</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">median</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">median</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">median</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">median</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0-5'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- min</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">min</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="k">min</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- min_by</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">min_by</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'c'</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">min_by</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- mode</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">null</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">null</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">null</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="k">mode</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- percentile</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">75</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">75</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">.</span><span class="mi">5</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0-5'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">percentile</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0 00:0...|</span>
-<span class="s1">+-----------------------------------+</span>
-
-<span class="s1">-- percentile_approx</span>
-<span class="s1">SELECT percentile_approx(col, array(0.5, 0.4, 0.1), 100) FROM VALUES (0), (1), (2), (10) AS tab(col);</span>
-<span class="s1">+-------------------------------------------------+</span>
-<span class="s1">|percentile_approx(col, array(0.5, 0.4, 0.1), 100)|</span>
-<span class="s1">+-------------------------------------------------+</span>
-<span class="s1">| [1, 1, 0]|</span>
-<span class="s1">+-------------------------------------------------+</span>
-
-<span class="s1">SELECT percentile_approx(col, 0.5, 100) FROM VALUES (0), (6), (7), (9), (10) AS tab(col);</span>
-<span class="s1">+--------------------------------+</span>
-<span class="s1">|percentile_approx(col, 0.5, 100)|</span>
-<span class="s1">+--------------------------------+</span>
-<span class="s1">| 7|</span>
-<span class="s1">+--------------------------------+</span>
-
-<span class="s1">SELECT percentile_approx(col, 0.5, 100) FROM VALUES (INTERVAL '</span><span class="mi">0</span><span class="s1">' MONTH), (INTERVAL '</span><span class="mi">1</span><span class="s1">' MONTH), (INTERVAL '</span><span class="mi">2</span><span class="s1">' MONTH), (INTERVAL '</span><span class="mi">10</span><span class="s1">' MONTH) AS tab(col);</span>
-<span class="s1">+--------------------------------+</span>
-<span class="s1">|percentile_approx(col, 0.5, 100)|</span>
-<span class="s1">+--------------------------------+</span>
-<span class="s1">| INTERVAL '</span><span class="mi">1</span><span class="s1">' MONTH|</span>
-<span class="s1">+--------------------------------+</span>
-
-<span class="s1">SELECT percentile_approx(col, array(0.5, 0.7), 100) FROM VALUES (INTERVAL '</span><span class="mi">0</span><span class="s1">' SECOND), (INTERVAL '</span><span class="mi">1</span><span class="s1">' SECOND), (INTERVAL '</span><span class="mi">2</span><span class="s1">' SECOND), (INTERVAL '</span><span class="mi">10</span><span class="s1">' SECOND) AS tab(col);</span>
-<span class="s1">+--------------------------------------------+</span>
-<span class="s1">|percentile_approx(col, array(0.5, 0.7), 100)|</span>
-<span class="s1">+--------------------------------------------+</span>
-<span class="s1">| [INTERVAL '</span><span class="mi">01</span><span class="s1">' SE...|</span>
-<span class="s1">+--------------------------------------------+</span>
-
-<span class="s1">-- regr_avgx</span>
-<span class="s1">SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgx(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| 2.75|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgx(y, x) FROM VALUES (1, null) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgx(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgx(y, x) FROM VALUES (null, 1) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgx(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgx(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| 3.0|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgx(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgx(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| 3.0|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">-- regr_avgy</span>
-<span class="s1">SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgy(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| 1.75|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgy(y, x) FROM VALUES (1, null) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgy(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgy(y, x) FROM VALUES (null, 1) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgy(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_avgy(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|1.6666666666666667|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_avgy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+---------------+</span>
-<span class="s1">|regr_avgy(y, x)|</span>
-<span class="s1">+---------------+</span>
-<span class="s1">| 1.5|</span>
-<span class="s1">+---------------+</span>
-
-<span class="s1">-- regr_count</span>
-<span class="s1">SELECT regr_count(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_count(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| 4|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">SELECT regr_count(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_count(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| 3|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">SELECT regr_count(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_count(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| 2|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">-- regr_intercept</span>
-<span class="s1">SELECT regr_intercept(y, x) FROM VALUES (1,1), (2,2), (3,3) AS tab(y, x);</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">|regr_intercept(y, x)|</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">| 0.0|</span>
-<span class="s1">+--------------------+</span>
-
-<span class="s1">SELECT regr_intercept(y, x) FROM VALUES (1, null) AS tab(y, x);</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">|regr_intercept(y, x)|</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+--------------------+</span>
-
-<span class="s1">SELECT regr_intercept(y, x) FROM VALUES (null, 1) AS tab(y, x);</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">|regr_intercept(y, x)|</span>
-<span class="s1">+--------------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+--------------------+</span>
-
-<span class="s1">-- regr_r2</span>
-<span class="s1">SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_r2(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|0.2727272727272726|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_r2(y, x) FROM VALUES (1, null) AS tab(y, x);</span>
-<span class="s1">+-------------+</span>
-<span class="s1">|regr_r2(y, x)|</span>
-<span class="s1">+-------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+-------------+</span>
-
-<span class="s1">SELECT regr_r2(y, x) FROM VALUES (null, 1) AS tab(y, x);</span>
-<span class="s1">+-------------+</span>
-<span class="s1">|regr_r2(y, x)|</span>
-<span class="s1">+-------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+-------------+</span>
-
-<span class="s1">SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_r2(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|0.7500000000000001|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_r2(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+-------------+</span>
-<span class="s1">|regr_r2(y, x)|</span>
-<span class="s1">+-------------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+-------------+</span>
-
-<span class="s1">-- regr_slope</span>
-<span class="s1">SELECT regr_slope(y, x) FROM VALUES (1,1), (2,2), (3,3) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_slope(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">SELECT regr_slope(y, x) FROM VALUES (1, null) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_slope(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">SELECT regr_slope(y, x) FROM VALUES (null, 1) AS tab(y, x);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|regr_slope(y, x)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">-- regr_sxx</span>
-<span class="s1">SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_sxx(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|2.7499999999999996|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+--------------+</span>
-<span class="s1">|regr_sxx(y, x)|</span>
-<span class="s1">+--------------+</span>
-<span class="s1">| 2.0|</span>
-<span class="s1">+--------------+</span>
-
-<span class="s1">SELECT regr_sxx(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+--------------+</span>
-<span class="s1">|regr_sxx(y, x)|</span>
-<span class="s1">+--------------+</span>
-<span class="s1">| 2.0|</span>
-<span class="s1">+--------------+</span>
-
-<span class="s1">-- regr_sxy</span>
-<span class="s1">SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_sxy(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|0.7499999999999998|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+--------------+</span>
-<span class="s1">|regr_sxy(y, x)|</span>
-<span class="s1">+--------------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+--------------+</span>
-
-<span class="s1">SELECT regr_sxy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+--------------+</span>
-<span class="s1">|regr_sxy(y, x)|</span>
-<span class="s1">+--------------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+--------------+</span>
-
-<span class="s1">-- regr_syy</span>
-<span class="s1">SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, 2), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_syy(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|0.7499999999999999|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, null), (2, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| regr_syy(y, x)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|0.6666666666666666|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT regr_syy(y, x) FROM VALUES (1, 2), (2, null), (null, 3), (2, 4) AS tab(y, x);</span>
-<span class="s1">+--------------+</span>
-<span class="s1">|regr_syy(y, x)|</span>
-<span class="s1">+--------------+</span>
-<span class="s1">| 0.5|</span>
-<span class="s1">+--------------+</span>
-
-<span class="s1">-- skewness</span>
-<span class="s1">SELECT skewness(col) FROM VALUES (-10), (-20), (100), (1000) AS tab(col);</span>
-<span class="s1">+------------------+</span>
-<span class="s1">| skewness(col)|</span>
-<span class="s1">+------------------+</span>
-<span class="s1">|1.1135657469022013|</span>
-<span class="s1">+------------------+</span>
-
-<span class="s1">SELECT skewness(col) FROM VALUES (-1000), (-100), (10), (20) AS tab(col);</span>
-<span class="s1">+-------------------+</span>
-<span class="s1">| skewness(col)|</span>
-<span class="s1">+-------------------+</span>
-<span class="s1">|-1.1135657469022011|</span>
-<span class="s1">+-------------------+</span>
-
-<span class="s1">-- some</span>
-<span class="s1">SELECT some(col) FROM VALUES (true), (false), (false) AS tab(col);</span>
-<span class="s1">+---------+</span>
-<span class="s1">|some(col)|</span>
-<span class="s1">+---------+</span>
-<span class="s1">| true|</span>
-<span class="s1">+---------+</span>
-
-<span class="s1">SELECT some(col) FROM VALUES (NULL), (true), (false) AS tab(col);</span>
-<span class="s1">+---------+</span>
-<span class="s1">|some(col)|</span>
-<span class="s1">+---------+</span>
-<span class="s1">| true|</span>
-<span class="s1">+---------+</span>
-
-<span class="s1">SELECT some(col) FROM VALUES (false), (false), (NULL) AS tab(col);</span>
-<span class="s1">+---------+</span>
-<span class="s1">|some(col)|</span>
-<span class="s1">+---------+</span>
-<span class="s1">| false|</span>
-<span class="s1">+---------+</span>
-
-<span class="s1">-- std</span>
-<span class="s1">SELECT std(col) FROM VALUES (1), (2), (3) AS tab(col);</span>
-<span class="s1">+--------+</span>
-<span class="s1">|std(col)|</span>
-<span class="s1">+--------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+--------+</span>
-
-<span class="s1">-- stddev</span>
-<span class="s1">SELECT stddev(col) FROM VALUES (1), (2), (3) AS tab(col);</span>
-<span class="s1">+-----------+</span>
-<span class="s1">|stddev(col)|</span>
-<span class="s1">+-----------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+-----------+</span>
-
-<span class="s1">-- stddev_pop</span>
-<span class="s1">SELECT stddev_pop(col) FROM VALUES (1), (2), (3) AS tab(col);</span>
-<span class="s1">+-----------------+</span>
-<span class="s1">| stddev_pop(col)|</span>
-<span class="s1">+-----------------+</span>
-<span class="s1">|0.816496580927726|</span>
-<span class="s1">+-----------------+</span>
-
-<span class="s1">-- stddev_samp</span>
-<span class="s1">SELECT stddev_samp(col) FROM VALUES (1), (2), (3) AS tab(col);</span>
-<span class="s1">+----------------+</span>
-<span class="s1">|stddev_samp(col)|</span>
-<span class="s1">+----------------+</span>
-<span class="s1">| 1.0|</span>
-<span class="s1">+----------------+</span>
-
-<span class="s1">-- sum</span>
-<span class="s1">SELECT sum(col) FROM VALUES (5), (10), (15) AS tab(col);</span>
-<span class="s1">+--------+</span>
-<span class="s1">|sum(col)|</span>
-<span class="s1">+--------+</span>
-<span class="s1">| 30|</span>
-<span class="s1">+--------+</span>
-
-<span class="s1">SELECT sum(col) FROM VALUES (NULL), (10), (15) AS tab(col);</span>
-<span class="s1">+--------+</span>
-<span class="s1">|sum(col)|</span>
-<span class="s1">+--------+</span>
-<span class="s1">| 25|</span>
-<span class="s1">+--------+</span>
-
-<span class="s1">SELECT sum(col) FROM VALUES (NULL), (NULL) AS tab(col);</span>
-<span class="s1">+--------+</span>
-<span class="s1">|sum(col)|</span>
-<span class="s1">+--------+</span>
-<span class="s1">| NULL|</span>
-<span class="s1">+--------+</span>
-
-<span class="s1">-- try_avg</span>
-<span class="s1">SELECT try_avg(col) FROM VALUES (1), (2), (3) AS tab(col);</span>
-<span class="s1">+------------+</span>
-<span class="s1">|try_avg(col)|</span>
-<span class="s1">+------------+</span>
-<span class="s1">| 2.0|</span>
-<span class="s1">+------------+</span>
-
-<span class="s1">SELECT try_avg(col) FROM VALUES (1), (2), (NULL) AS tab(col);</span>
-<span class="s1">+------------+</span>
-<span class="s1">|try_avg(col)|</span>
-<span class="s1">+------------+</span>
-<span class="s1">| 1.5|</span>
-<span class="s1">+------------+</span>
-
-<span class="s1">SELECT try_avg(col) FROM VALUES (interval '</span><span class="mi">2147483647</span><span class="w"> </span><span class="n">months</span><span class="s1">'), (interval '</span><span class="mi">1</span><span class="w"> </span><span class="n">months</span><span class="err">'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">try_avg</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- try_sum</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">25</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">9223372036854775807</span><span class="n">L</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="n">L</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">try_sum</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- var_pop</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">var_pop</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">var_pop</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">6666666666666666</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- var_samp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">var_samp</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">var_samp</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- variance</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">variance</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">variance</span><span class="p">(</span><span class="n">col</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-</code></pre></div>
-
-<h3 id="window-functions">Window Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>cume_dist()</td>
- <td>Computes the position of a value relative to all values in the partition.</td>
- </tr>
- <tr>
- <td>dense_rank()</td>
- <td>Computes the rank of a value in a group of values. The result is one plus the
- previously assigned rank value. Unlike the function rank, dense_rank will not produce gaps
- in the ranking sequence.</td>
- </tr>
- <tr>
- <td>lag(input[, offset[, default]])</td>
- <td>Returns the value of `input` at the `offset`th row
- before the current row in the window. The default value of `offset` is 1 and the default
- value of `default` is null. If the value of `input` at the `offset`th row is null,
- null is returned. If there is no such offset row (e.g., when the offset is 1, the first
- row of the window does not have any previous row), `default` is returned.</td>
- </tr>
- <tr>
- <td>lead(input[, offset[, default]])</td>
- <td>Returns the value of `input` at the `offset`th row
- after the current row in the window. The default value of `offset` is 1 and the default
- value of `default` is null. If the value of `input` at the `offset`th row is null,
- null is returned. If there is no such an offset row (e.g., when the offset is 1, the last
- row of the window does not have any subsequent row), `default` is returned.</td>
- </tr>
- <tr>
- <td>nth_value(input[, offset])</td>
- <td>Returns the value of `input` at the row that is the `offset`th row
- from beginning of the window frame. Offset starts at 1. If ignoreNulls=true, we will skip
- nulls when finding the `offset`th row. Otherwise, every row counts for the `offset`. If
- there is no such an `offset`th row (e.g., when the offset is 10, size of the window frame
- is less than 10), null is returned.</td>
- </tr>
- <tr>
- <td>ntile(n)</td>
- <td>Divides the rows for each window partition into `n` buckets ranging
- from 1 to at most `n`.</td>
- </tr>
- <tr>
- <td>percent_rank()</td>
- <td>Computes the percentage ranking of a value in a group of values.</td>
- </tr>
- <tr>
- <td>rank()</td>
- <td>Computes the rank of a value in a group of values. The result is one plus the number
- of rows preceding or equal to the current row in the ordering of the partition. The values
- will produce gaps in the sequence.</td>
- </tr>
- <tr>
- <td>row_number()</td>
- <td>Assigns a unique, sequential number to each row, starting with one,
- according to the ordering of rows within the window partition.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-1">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- cume_dist</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">cume_dist</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">cume_dist</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">6666666666666666</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">6666666666666666</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- dense_rank</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">dense_rank</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">DENSE_RANK</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- lag</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">lag</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+-----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">lag</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="n">FOLLOWING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="n">FOLLOWING</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+-----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+-----------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- lead</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">lead</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">lead</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">FOLLOWING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">FOLLOWING</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- nth_value</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">nth_value</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">nth_value</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- ntile</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">ntile</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">ntile</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- percent_rank</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">percent_rank</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">PERCENT_RANK</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+----------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- rank</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">rank</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">RANK</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- row_number</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">row_number</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="n">row_number</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+--------------------------------------------------------------------------------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="array-functions">Array Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>array(expr, ...)</td>
- <td>Returns an array with the given elements.</td>
- </tr>
- <tr>
- <td>array_append(array, element)</td>
- <td>Add the element at the end of the array passed as first
- argument. Type of element should be similar to type of the elements of the array.
- Null element is also appended into the array. But if the array passed, is NULL
- output is NULL</td>
- </tr>
- <tr>
- <td>array_compact(array)</td>
- <td>Removes null values from the array.</td>
- </tr>
- <tr>
- <td>array_contains(array, value)</td>
- <td>Returns true if the array contains the value.</td>
- </tr>
- <tr>
- <td>array_distinct(array)</td>
- <td>Removes duplicate values from the array.</td>
- </tr>
- <tr>
- <td>array_except(array1, array2)</td>
- <td>Returns an array of the elements in array1 but not in array2,
- without duplicates.</td>
- </tr>
- <tr>
- <td>array_insert(x, pos, val)</td>
- <td>Places val into index pos of array x.
- Array indices start at 1. The maximum negative index is -1 for which the function inserts
- new element after the current last element.
- Index above array size appends the array, or prepends the array if index is negative,
- with 'null' elements.</td>
- </tr>
- <tr>
- <td>array_intersect(array1, array2)</td>
- <td>Returns an array of the elements in the intersection of array1 and
- array2, without duplicates.</td>
- </tr>
- <tr>
- <td>array_join(array, delimiter[, nullReplacement])</td>
- <td>Concatenates the elements of the given array
- using the delimiter and an optional string to replace nulls. If no value is set for
- nullReplacement, any null value is filtered.</td>
- </tr>
- <tr>
- <td>array_max(array)</td>
- <td>Returns the maximum value in the array. NaN is greater than
- any non-NaN elements for double/float type. NULL elements are skipped.</td>
- </tr>
- <tr>
- <td>array_min(array)</td>
- <td>Returns the minimum value in the array. NaN is greater than
- any non-NaN elements for double/float type. NULL elements are skipped.</td>
- </tr>
- <tr>
- <td>array_position(array, element)</td>
- <td>Returns the (1-based) index of the first matching element of
- the array as long, or 0 if no match is found.</td>
- </tr>
- <tr>
- <td>array_prepend(array, element)</td>
- <td>Add the element at the beginning of the array passed as first
- argument. Type of element should be the same as the type of the elements of the array.
- Null element is also prepended to the array. But if the array passed is NULL
- output is NULL</td>
- </tr>
- <tr>
- <td>array_remove(array, element)</td>
- <td>Remove all elements that equal to element from array.</td>
- </tr>
- <tr>
- <td>array_repeat(element, count)</td>
- <td>Returns the array containing element count times.</td>
- </tr>
- <tr>
- <td>array_union(array1, array2)</td>
- <td>Returns an array of the elements in the union of array1 and array2,
- without duplicates.</td>
- </tr>
- <tr>
- <td>arrays_overlap(a1, a2)</td>
- <td>Returns true if a1 contains at least a non-null element present also in a2. If the arrays have no common element and they are both non-empty and either of them contains a null element null is returned, false otherwise.</td>
- </tr>
- <tr>
- <td>arrays_zip(a1, a2, ...)</td>
- <td>Returns a merged array of structs in which the N-th struct contains all
- N-th values of input arrays.</td>
- </tr>
- <tr>
- <td>flatten(arrayOfArrays)</td>
- <td>Transforms an array of arrays into a single array.</td>
- </tr>
- <tr>
- <td>get(array, index)</td>
- <td>Returns element of array at given (0-based) index. If the index points
- outside of the array boundaries, then this function returns NULL.</td>
- </tr>
- <tr>
- <td>sequence(start, stop, step)</td>
- <td>Generates an array of elements from start to stop (inclusive),
- incrementing by step. The type of the returned elements is the same as the type of argument
- expressions.
-
- Supported types are: byte, short, integer, long, date, timestamp.
-
- The start and stop expressions must resolve to the same type.
- If start and stop expressions resolve to the 'date' or 'timestamp' type
- then the step expression must resolve to the 'interval' or 'year-month interval' or
- 'day-time interval' type, otherwise to the same type as the start and stop expressions.</td>
- </tr>
- <tr>
- <td>shuffle(array)</td>
- <td>Returns a random permutation of the given array.</td>
- </tr>
- <tr>
- <td>slice(x, start, length)</td>
- <td>Subsets array x starting from index start (array indices start at 1, or starting from the end if start is negative) with the specified length.</td>
- </tr>
- <tr>
- <td>sort_array(array[, ascendingOrder])</td>
- <td>Sorts the input array in ascending or descending order
- according to the natural ordering of the array elements. NaN is greater than any non-NaN
- elements for double/float type. Null elements will be placed at the beginning of the returned
- array in ascending order or at the end of the returned array in descending order.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-2">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- array</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- array_append</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_append</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="s1">'c'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="s1">'d'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">array_append</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">),</span><span class="w"> </span><span class="n">d</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_append</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">),</span><span class="w"> </span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">array_append</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">N</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_append</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="k">null</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nb">Array</span><span class="o"><</span><span class="nb">Int</span><span class="o">></span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">array_append</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- array_compact</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_compact</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">array_compact</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_compact</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="ss">"a"</span><span class="p">,</span><span class="w"> </span><span class="ss">"b"</span><span class="p">,</span><span class="w"> </span><span class="ss">"c"</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">array_compact</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="c1">-- array_contains</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_contains</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">array_contains</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- array_distinct</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_distinct</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">array_distinct</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="c1">-- array_except</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_except</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_except</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- array_insert</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">array_insert</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- array_intersect</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_intersect</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_intersect</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-
-<span class="c1">-- array_join</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">,</span><span class="w"> </span><span class="s1">'world'</span><span class="p">),</span><span class="w"> </span><span class="s1">' '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">hello</span><span class="p">,</span><span class="w"> </span><span class="n">world</span><span class="p">),</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hello</span><span class="w"> </span><span class="n">world</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="w"> </span><span class="p">,</span><span class="s1">'world'</span><span class="p">),</span><span class="w"> </span><span class="s1">' '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">hello</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">world</span><span class="p">),</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hello</span><span class="w"> </span><span class="n">world</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="w"> </span><span class="p">,</span><span class="s1">'world'</span><span class="p">),</span><span class="w"> </span><span class="s1">' '</span><span class="p">,</span><span class="w"> </span><span class="s1">','</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_join</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">hello</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">world</span><span class="p">),</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">,)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hello</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">world</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="c1">-- array_max</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_max</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">array_max</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="c1">-- array_min</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_min</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">array_min</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="c1">-- array_position</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_position</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">312</span><span class="p">,</span><span class="w"> </span><span class="mi">773</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">),</span><span class="w"> </span><span class="mi">708</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_position</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">312</span><span class="p">,</span><span class="w"> </span><span class="mi">773</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">),</span><span class="w"> </span><span class="mi">708</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_position</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">312</span><span class="p">,</span><span class="w"> </span><span class="mi">773</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">),</span><span class="w"> </span><span class="mi">414</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_position</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">312</span><span class="p">,</span><span class="w"> </span><span class="mi">773</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">,</span><span class="w"> </span><span class="mi">708</span><span class="p">),</span><span class="w"> </span><span class="mi">414</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="c1">-- array_prepend</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_prepend</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="s1">'c'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="s1">'d'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">array_prepend</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">),</span><span class="w"> </span><span class="n">d</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_prepend</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">),</span><span class="w"> </span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">array_prepend</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">),</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">N</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_prepend</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="k">null</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nb">Array</span><span class="o"><</span><span class="nb">Int</span><span class="o">></span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">array_prepend</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- array_remove</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_remove</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">array_remove</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- array_repeat</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_repeat</span><span class="p">(</span><span class="s1">'123'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">array_repeat</span><span class="p">(</span><span class="mi">123</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">123</span><span class="p">,</span><span class="w"> </span><span class="mi">123</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- array_union</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">array_union</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">array_union</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="c1">-- arrays_overlap</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">arrays_overlap</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">arrays_overlap</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="c1">-- arrays_zip</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">arrays_zip</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="n">arrays_zip</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">arrays_zip</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="n">arrays_zip</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-
-<span class="c1">-- flatten</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">flatten</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">flatten</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- get</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">get</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- sequence</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2018-01-01'</span><span class="p">),</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2018-03-01'</span><span class="p">),</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">month</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">sequence</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="p">),</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2018</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">01</span><span class="p">),</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="p">,</span><span class="w"> </span><span class="mi">2018</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sequence</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2018-01-01'</span><span class="p">),</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2018-03-01'</span><span class="p">),</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="s1">'0-1'</span><span class="w"> </span><span class="k">year</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">month</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">sequence</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="p">),</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2018</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">01</span><span class="p">),</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0-1'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="p">,</span><span class="w"> </span><span class="mi">2018</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- shuffle</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">shuffle</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">shuffle</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">shuffle</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="n">shuffle</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-
-<span class="c1">-- slice</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">slice</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="n">slice</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">slice</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">slice</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- sort_array</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sort_array</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="s1">'c'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="k">true</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">sort_array</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">),</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="map-functions">Map Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>element_at(array, index)</td>
- <td>Returns element of array at given (1-based) index. If Index is 0,
- Spark will throw an error. If index < 0, accesses elements from the last to the first.
- The function returns NULL if the index exceeds the length of the array and
- `spark.sql.ansi.enabled` is set to false.
- If `spark.sql.ansi.enabled` is set to true, it throws ArrayIndexOutOfBoundsException
- for invalid indices.</td>
- </tr>
- <tr>
- <td> element_at(map, key)</td>
- <td>Returns value for given key. The function returns NULL if the key is not
- contained in the map.</td>
- </tr>
- <tr>
- <td>map(key0, value0, key1, value1, ...)</td>
- <td>Creates a map with the given key/value pairs.</td>
- </tr>
- <tr>
- <td>map_concat(map, ...)</td>
- <td>Returns the union of all the given maps</td>
- </tr>
- <tr>
- <td>map_contains_key(map, key)</td>
- <td>Returns true if the map contains the key.</td>
- </tr>
- <tr>
- <td>map_entries(map)</td>
- <td>Returns an unordered array of all entries in the given map.</td>
- </tr>
- <tr>
- <td>map_from_arrays(keys, values)</td>
- <td>Creates a map with a pair of the given key/value arrays. All elements
- in keys should not be null</td>
- </tr>
- <tr>
- <td>map_from_entries(arrayOfEntries)</td>
- <td>Returns a map created from the given array of entries.</td>
- </tr>
- <tr>
- <td>map_keys(map)</td>
- <td>Returns an unordered array containing the keys of the map.</td>
- </tr>
- <tr>
- <td>map_values(map)</td>
- <td>Returns an unordered array containing the values of the map.</td>
- </tr>
- <tr>
- <td>str_to_map(text[, pairDelim[, keyValueDelim]])</td>
- <td>Creates a map after splitting the text into key/value pairs using delimiters. Default delimiters are ',' for `pairDelim` and ':' for `keyValueDelim`. Both `pairDelim` and `keyValueDelim` are treated as regular expressions.</td>
- </tr>
- <tr>
- <td>try_element_at(array, index)</td>
- <td>Returns element of array at given (1-based) index. If Index is 0,
- Spark will throw an error. If index < 0, accesses elements from the last to the first.
- The function always returns NULL if the index exceeds the length of the array.</td>
- </tr>
- <tr>
- <td> try_element_at(map, key)</td>
- <td>Returns value for given key. The function always returns NULL
- if the key is not contained in the map.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-3">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- element_at</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">element_at</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">element_at</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">element_at</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="n">element_at</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-
-<span class="c1">-- map</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'2'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'4'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="err">{</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">4</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- map_concat</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_concat</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">),</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'c'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">map_concat</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">),</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- map_contains_key</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_contains_key</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="n">map_contains_key</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_contains_key</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="n">map_contains_key</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="c1">-- map_entries</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_entries</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">map_entries</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="err">}</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- map_from_arrays</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_from_arrays</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="s1">'2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'4'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="n">map_from_arrays</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">4</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-
-<span class="c1">-- map_from_entries</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_from_entries</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">struct</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="n">struct</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="n">map_from_entries</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">struct</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">),</span><span class="w"> </span><span class="n">struct</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">b</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-
-<span class="c1">-- map_keys</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_keys</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">map_keys</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- map_values</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">map_values</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">map_values</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- str_to_map</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">str_to_map</span><span class="p">(</span><span class="s1">'a:1,b:2,c:3'</span><span class="p">,</span><span class="w"> </span><span class="s1">','</span><span class="p">,</span><span class="w"> </span><span class="s1">':'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">str_to_map</span><span class="p">(</span><span class="n">a</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="n">b</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="k">c</span><span class="p">:</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="p">,,</span><span class="w"> </span><span class="p">:)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="n">a</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">str_to_map</span><span class="p">(</span><span class="s1">'a'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">str_to_map</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="p">,,</span><span class="w"> </span><span class="p">:)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="n">a</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="k">NULL</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- try_element_at</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_element_at</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">try_element_at</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_element_at</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">try_element_at</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-</code></pre></div>
-
-<h3 id="date-and-timestamp-functions">Date and Timestamp Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>add_months(start_date, num_months)</td>
- <td>Returns the date that is `num_months` after `start_date`.</td>
- </tr>
- <tr>
- <td>convert_timezone([sourceTz, ]targetTz, sourceTs)</td>
- <td>Converts the timestamp without time zone `sourceTs` from the `sourceTz` time zone to `targetTz`.</td>
- </tr>
- <tr>
- <td>curdate()</td>
- <td>Returns the current date at the start of query evaluation. All calls of curdate within the same query return the same value.</td>
- </tr>
- <tr>
- <td>current_date()</td>
- <td>Returns the current date at the start of query evaluation. All calls of current_date within the same query return the same value.</td>
- </tr>
- <tr>
- <td> current_date</td>
- <td>Returns the current date at the start of query evaluation.</td>
- </tr>
- <tr>
- <td>current_timestamp()</td>
- <td>Returns the current timestamp at the start of query evaluation. All calls of current_timestamp within the same query return the same value.</td>
- </tr>
- <tr>
- <td> current_timestamp</td>
- <td>Returns the current timestamp at the start of query evaluation.</td>
- </tr>
- <tr>
- <td>current_timezone()</td>
- <td>Returns the current session local timezone.</td>
- </tr>
- <tr>
- <td>date_add(start_date, num_days)</td>
- <td>Returns the date that is `num_days` after `start_date`.</td>
- </tr>
- <tr>
- <td>date_diff(endDate, startDate)</td>
- <td>Returns the number of days from `startDate` to `endDate`.</td>
- </tr>
- <tr>
- <td>date_format(timestamp, fmt)</td>
- <td>Converts `timestamp` to a value of string in the format specified by the date format `fmt`.</td>
- </tr>
- <tr>
- <td>date_from_unix_date(days)</td>
- <td>Create date from the number of days since 1970-01-01.</td>
- </tr>
- <tr>
- <td>date_part(field, source)</td>
- <td>Extracts a part of the date/timestamp or interval source.</td>
- </tr>
- <tr>
- <td>date_sub(start_date, num_days)</td>
- <td>Returns the date that is `num_days` before `start_date`.</td>
- </tr>
- <tr>
- <td>date_trunc(fmt, ts)</td>
- <td>Returns timestamp `ts` truncated to the unit specified by the format model `fmt`.</td>
- </tr>
- <tr>
- <td>dateadd(start_date, num_days)</td>
- <td>Returns the date that is `num_days` after `start_date`.</td>
- </tr>
- <tr>
- <td>datediff(endDate, startDate)</td>
- <td>Returns the number of days from `startDate` to `endDate`.</td>
- </tr>
- <tr>
- <td>datepart(field, source)</td>
- <td>Extracts a part of the date/timestamp or interval source.</td>
- </tr>
- <tr>
- <td>day(date)</td>
- <td>Returns the day of month of the date/timestamp.</td>
- </tr>
- <tr>
- <td>dayofmonth(date)</td>
- <td>Returns the day of month of the date/timestamp.</td>
- </tr>
- <tr>
- <td>dayofweek(date)</td>
- <td>Returns the day of the week for date/timestamp (1 = Sunday, 2 = Monday, ..., 7 = Saturday).</td>
- </tr>
- <tr>
- <td>dayofyear(date)</td>
- <td>Returns the day of year of the date/timestamp.</td>
- </tr>
- <tr>
- <td>extract(field FROM source)</td>
- <td>Extracts a part of the date/timestamp or interval source.</td>
- </tr>
- <tr>
- <td>from_unixtime(unix_time[, fmt])</td>
- <td>Returns `unix_time` in the specified `fmt`.</td>
- </tr>
- <tr>
- <td>from_utc_timestamp(timestamp, timezone)</td>
- <td>Given a timestamp like '2017-07-14 02:40:00.0', interprets it as a time in UTC, and renders that time as a timestamp in the given time zone. For example, 'GMT+1' would yield '2017-07-14 03:40:00.0'.</td>
- </tr>
- <tr>
- <td>hour(timestamp)</td>
- <td>Returns the hour component of the string/timestamp.</td>
- </tr>
- <tr>
- <td>last_day(date)</td>
- <td>Returns the last day of the month which the date belongs to.</td>
- </tr>
- <tr>
- <td>localtimestamp()</td>
- <td>Returns the current timestamp without time zone at the start of query evaluation. All calls of localtimestamp within the same query return the same value.</td>
- </tr>
- <tr>
- <td> localtimestamp</td>
- <td>Returns the current local date-time at the session time zone at the start of query evaluation.</td>
- </tr>
- <tr>
- <td>make_date(year, month, day)</td>
- <td>Create date from year, month and day fields. If the configuration `spark.sql.ansi.enabled` is false, the function returns NULL on invalid inputs. Otherwise, it will throw an error instead.</td>
- </tr>
- <tr>
- <td>make_dt_interval([days[, hours[, mins[, secs]]]])</td>
- <td>Make DayTimeIntervalType duration from days, hours, mins and secs.</td>
- </tr>
- <tr>
- <td>make_interval([years[, months[, weeks[, days[, hours[, mins[, secs]]]]]]])</td>
- <td>Make interval from years, months, weeks, days, hours, mins and secs.</td>
- </tr>
- <tr>
- <td>make_timestamp(year, month, day, hour, min, sec[, timezone])</td>
- <td>Create timestamp from year, month, day, hour, min, sec and timezone fields. The result data type is consistent with the value of configuration `spark.sql.timestampType`. If the configuration `spark.sql.ansi.enabled` is false, the function returns NULL on invalid inputs. Otherwise, it will throw an error instead.</td>
- </tr>
- <tr>
- <td>make_timestamp_ltz(year, month, day, hour, min, sec[, timezone])</td>
- <td>Create the current timestamp with local time zone from year, month, day, hour, min, sec and timezone fields. If the configuration `spark.sql.ansi.enabled` is false, the function returns NULL on invalid inputs. Otherwise, it will throw an error instead.</td>
- </tr>
- <tr>
- <td>make_timestamp_ntz(year, month, day, hour, min, sec)</td>
- <td>Create local date-time from year, month, day, hour, min, sec fields. If the configuration `spark.sql.ansi.enabled` is false, the function returns NULL on invalid inputs. Otherwise, it will throw an error instead.</td>
- </tr>
- <tr>
- <td>make_ym_interval([years[, months]])</td>
- <td>Make year-month interval from years, months.</td>
- </tr>
- <tr>
- <td>minute(timestamp)</td>
- <td>Returns the minute component of the string/timestamp.</td>
- </tr>
- <tr>
- <td>month(date)</td>
- <td>Returns the month component of the date/timestamp.</td>
- </tr>
- <tr>
- <td>months_between(timestamp1, timestamp2[, roundOff])</td>
- <td>If `timestamp1` is later than `timestamp2`, then the result
- is positive. If `timestamp1` and `timestamp2` are on the same day of month, or both
- are the last day of month, time of day will be ignored. Otherwise, the difference is
- calculated based on 31 days per month, and rounded to 8 digits unless roundOff=false.</td>
- </tr>
- <tr>
- <td>next_day(start_date, day_of_week)</td>
- <td>Returns the first date which is later than `start_date` and named as indicated.
- The function returns NULL if at least one of the input parameters is NULL.
- When both of the input parameters are not NULL and day_of_week is an invalid input,
- the function throws IllegalArgumentException if `spark.sql.ansi.enabled` is set to true, otherwise NULL.</td>
- </tr>
- <tr>
- <td>now()</td>
- <td>Returns the current timestamp at the start of query evaluation.</td>
- </tr>
- <tr>
- <td>quarter(date)</td>
- <td>Returns the quarter of the year for date, in the range 1 to 4.</td>
- </tr>
- <tr>
- <td>second(timestamp)</td>
- <td>Returns the second component of the string/timestamp.</td>
- </tr>
- <tr>
- <td>session_window(time_column, gap_duration)</td>
- <td>Generates session window given a timestamp specifying column and gap duration.
- See <a href="https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#types-of-time-windows">'Types of time windows'</a> in Structured Streaming guide doc for detailed explanation and examples.</td>
- </tr>
- <tr>
- <td>timestamp_micros(microseconds)</td>
- <td>Creates timestamp from the number of microseconds since UTC epoch.</td>
- </tr>
- <tr>
- <td>timestamp_millis(milliseconds)</td>
- <td>Creates timestamp from the number of milliseconds since UTC epoch.</td>
- </tr>
- <tr>
- <td>timestamp_seconds(seconds)</td>
- <td>Creates timestamp from the number of seconds (can be fractional) since UTC epoch.</td>
- </tr>
- <tr>
- <td>to_date(date_str[, fmt])</td>
- <td>Parses the `date_str` expression with the `fmt` expression to
- a date. Returns null with invalid input. By default, it follows casting rules to a date if
- the `fmt` is omitted.</td>
- </tr>
- <tr>
- <td>to_timestamp(timestamp_str[, fmt])</td>
- <td>Parses the `timestamp_str` expression with the `fmt` expression
- to a timestamp. Returns null with invalid input. By default, it follows casting rules to
- a timestamp if the `fmt` is omitted. The result data type is consistent with the value of
- configuration `spark.sql.timestampType`.</td>
- </tr>
- <tr>
- <td>to_timestamp_ltz(timestamp_str[, fmt])</td>
- <td>Parses the `timestamp_str` expression with the `fmt` expression
- to a timestamp with local time zone. Returns null with invalid input. By default, it follows casting rules to
- a timestamp if the `fmt` is omitted.</td>
- </tr>
- <tr>
- <td>to_timestamp_ntz(timestamp_str[, fmt])</td>
- <td>Parses the `timestamp_str` expression with the `fmt` expression
- to a timestamp without time zone. Returns null with invalid input. By default, it follows casting rules to
- a timestamp if the `fmt` is omitted.</td>
- </tr>
- <tr>
- <td>to_unix_timestamp(timeExp[, fmt])</td>
- <td>Returns the UNIX timestamp of the given time.</td>
- </tr>
- <tr>
- <td>to_utc_timestamp(timestamp, timezone)</td>
- <td>Given a timestamp like '2017-07-14 02:40:00.0', interprets it as a time in the given time zone, and renders that time as a timestamp in UTC. For example, 'GMT+1' would yield '2017-07-14 01:40:00.0'.</td>
- </tr>
- <tr>
- <td>trunc(date, fmt)</td>
- <td>Returns `date` with the time portion of the day truncated to the unit specified by the format model `fmt`.</td>
- </tr>
- <tr>
- <td>try_to_timestamp(timestamp_str[, fmt])</td>
- <td>Parses the `timestamp_str` expression with the `fmt` expression
- to a timestamp. The function always returns null on an invalid input with/without ANSI SQL
- mode enabled. By default, it follows casting rules to a timestamp if the `fmt` is omitted.
- The result data type is consistent with the value of configuration `spark.sql.timestampType`.</td>
- </tr>
- <tr>
- <td>unix_date(date)</td>
- <td>Returns the number of days since 1970-01-01.</td>
- </tr>
- <tr>
- <td>unix_micros(timestamp)</td>
- <td>Returns the number of microseconds since 1970-01-01 00:00:00 UTC.</td>
- </tr>
- <tr>
- <td>unix_millis(timestamp)</td>
- <td>Returns the number of milliseconds since 1970-01-01 00:00:00 UTC. Truncates higher levels of precision.</td>
- </tr>
- <tr>
- <td>unix_seconds(timestamp)</td>
- <td>Returns the number of seconds since 1970-01-01 00:00:00 UTC. Truncates higher levels of precision.</td>
- </tr>
- <tr>
- <td>unix_timestamp([timeExp[, fmt]])</td>
- <td>Returns the UNIX timestamp of current or specified time.</td>
- </tr>
- <tr>
- <td>weekday(date)</td>
- <td>Returns the day of the week for date/timestamp (0 = Monday, 1 = Tuesday, ..., 6 = Sunday).</td>
- </tr>
- <tr>
- <td>weekofyear(date)</td>
- <td>Returns the week of the year of the given date. A week is considered to start on a Monday and week 1 is the first week with >3 days.</td>
- </tr>
- <tr>
- <td>window(time_column, window_duration[, slide_duration[, start_time]])</td>
- <td>Bucketize rows into one or more time windows given a timestamp specifying column.
- Window starts are inclusive but the window ends are exclusive, e.g. 12:05 will be in the window [12:05,12:10) but not in [12:00,12:05).
- Windows can support microsecond precision. Windows in the order of months are not supported.
- See <a href="https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#window-operations-on-event-time">'Window Operations on Event Time'</a> in Structured Streaming guide doc for detailed explanation and examples.</td>
- </tr>
- <tr>
- <td>window_time(window_column)</td>
- <td>Extract the time value from time/session window column which can be used for event time value of window.
- The extracted time is (window.end - 1) which reflects the fact that the the aggregating
- windows have exclusive upper bound - [start, end)
- See <a href="https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#window-operations-on-event-time">'Window Operations on Event Time'</a> in Structured Streaming guide doc for detailed explanation and examples.</td>
- </tr>
- <tr>
- <td>year(date)</td>
- <td>Returns the year component of the date/timestamp.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-4">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- add_months</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">add_months</span><span class="p">(</span><span class="s1">'2016-08-31'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">add_months</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">30</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- convert_timezone</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">convert_timezone</span><span class="p">(</span><span class="s1">'Europe/Brussels'</span><span class="p">,</span><span class="w"> </span><span class="s1">'America/Los_Angeles'</span><span class="p">,</span><span class="w"> </span><span class="n">timestamp_ntz</span><span class="s1">'2021-12-06 00:00:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">convert_timezone</span><span class="p">(</span><span class="n">Europe</span><span class="o">/</span><span class="n">Brussels</span><span class="p">,</span><span class="w"> </span><span class="n">America</span><span class="o">/</span><span class="n">Los_Angeles</span><span class="p">,</span><span class="w"> </span><span class="n">TIMESTAMP_NTZ</span><span class="w"> </span><span class="s1">'2021-12-06 00:00:00'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">convert_timezone</span><span class="p">(</span><span class="s1">'Europe/Brussels'</span><span class="p">,</span><span class="w"> </span><span class="n">timestamp_ntz</span><span class="s1">'2021-12-05 15:00:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">convert_timezone</span><span class="p">(</span><span class="n">current_timezone</span><span class="p">(),</span><span class="w"> </span><span class="n">Europe</span><span class="o">/</span><span class="n">Brussels</span><span class="p">,</span><span class="w"> </span><span class="n">TIMESTAMP_NTZ</span><span class="w"> </span><span class="s1">'2021-12-05 15:00:00'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">16</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- curdate</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">curdate</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="k">current_date</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- current_date</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">current_date</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="k">current_date</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">current_date</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="k">current_date</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- current_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">current_timestamp</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">current_timestamp</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">38</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">current_timestamp</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">current_timestamp</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">38</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- current_timezone</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">current_timezone</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">current_timezone</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Etc</span><span class="o">/</span><span class="n">UTC</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- date_add</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_add</span><span class="p">(</span><span class="s1">'2016-07-30'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">date_add</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- date_diff</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_diff</span><span class="p">(</span><span class="s1">'2009-07-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">date_diff</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_diff</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2009-07-31'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">date_diff</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- date_format</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_format</span><span class="p">(</span><span class="s1">'2016-04-08'</span><span class="p">,</span><span class="w"> </span><span class="s1">'y'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">date_format</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">08</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="c1">-- date_from_unix_date</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_from_unix_date</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">date_from_unix_date</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- date_part</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'YEAR'</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'week'</span><span class="p">,</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="n">week</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">33</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'doy'</span><span class="p">,</span><span class="w"> </span><span class="nb">DATE</span><span class="s1">'2019-08-12'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="n">doy</span><span class="p">,</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2019-08-12'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">224</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'SECONDS'</span><span class="p">,</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="n">SECONDS</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">000001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'days'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">days</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="n">minutes</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="n">days</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'5 03:07'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MINUTE</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'seconds'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">30</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">milliseconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">microseconds</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="n">seconds</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'05:00:30.001001'</span><span class="w"> </span><span class="n">HOUR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="p">.</span><span class="mi">001001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'MONTH'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="k">MONTH</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">11</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_part</span><span class="p">(</span><span class="s1">'MINUTE'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_part</span><span class="p">(</span><span class="k">MINUTE</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">55</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-
-<span class="c1">-- date_sub</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_sub</span><span class="p">(</span><span class="s1">'2016-07-30'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">date_sub</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">29</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- date_trunc</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_trunc</span><span class="p">(</span><span class="s1">'YEAR'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2015-03-05T09:32:05.359'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">date_trunc</span><span class="p">(</span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="n">T09</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">05</span><span class="p">.</span><span class="mi">359</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_trunc</span><span class="p">(</span><span class="s1">'MM'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2015-03-05T09:32:05.359'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">date_trunc</span><span class="p">(</span><span class="n">MM</span><span class="p">,</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="n">T09</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">05</span><span class="p">.</span><span class="mi">359</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_trunc</span><span class="p">(</span><span class="s1">'DD'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2015-03-05T09:32:05.359'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">date_trunc</span><span class="p">(</span><span class="n">DD</span><span class="p">,</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="n">T09</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">05</span><span class="p">.</span><span class="mi">359</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_trunc</span><span class="p">(</span><span class="s1">'HOUR'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2015-03-05T09:32:05.359'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">date_trunc</span><span class="p">(</span><span class="n">HOUR</span><span class="p">,</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="n">T09</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">05</span><span class="p">.</span><span class="mi">359</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">date_trunc</span><span class="p">(</span><span class="s1">'MILLISECOND'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2015-03-05T09:32:05.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="n">date_trunc</span><span class="p">(</span><span class="n">MILLISECOND</span><span class="p">,</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="n">T09</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">05</span><span class="p">.</span><span class="mi">123456</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">32</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-
-<span class="c1">-- dateadd</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">dateadd</span><span class="p">(</span><span class="s1">'2016-07-30'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">date_add</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- datediff</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datediff</span><span class="p">(</span><span class="s1">'2009-07-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">datediff</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datediff</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2009-07-31'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">datediff</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="c1">-- datepart</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'YEAR'</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="k">YEAR</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'week'</span><span class="p">,</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="n">week</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">33</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'doy'</span><span class="p">,</span><span class="w"> </span><span class="nb">DATE</span><span class="s1">'2019-08-12'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="n">doy</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2019-08-12'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">224</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'SECONDS'</span><span class="p">,</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="n">SECONDS</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">000001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'days'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">days</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="n">minutes</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="n">days</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'5 03:07'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MINUTE</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'seconds'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">30</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">milliseconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">microseconds</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="n">seconds</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'05:00:30.001001'</span><span class="w"> </span><span class="n">HOUR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="p">.</span><span class="mi">001001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'MONTH'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="k">MONTH</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">11</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">datepart</span><span class="p">(</span><span class="s1">'MINUTE'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">datepart</span><span class="p">(</span><span class="k">MINUTE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">55</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------+</span>
-
-<span class="c1">-- day</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">day</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="k">day</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- dayofmonth</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">dayofmonth</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">dayofmonth</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- dayofweek</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">dayofweek</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">dayofweek</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- dayofyear</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">dayofyear</span><span class="p">(</span><span class="s1">'2016-04-09'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">dayofyear</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">09</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">100</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- extract</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="k">YEAR</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="k">YEAR</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="n">week</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="n">week</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-08-12 01:00:00.123456'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">33</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="n">doy</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">DATE</span><span class="s1">'2019-08-12'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="n">doy</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2019-08-12'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">224</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="n">SECONDS</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">timestamp</span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="n">SECONDS</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2019-10-01 00:00:01.000001'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">000001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="n">days</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">days</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="n">minutes</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="n">days</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'5 03:07'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MINUTE</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="n">seconds</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="mi">30</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">milliseconds</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">microseconds</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="n">seconds</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'05:00:30.001001'</span><span class="w"> </span><span class="n">HOUR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">30</span><span class="p">.</span><span class="mi">001001</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="k">MONTH</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="k">MONTH</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2021-11'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">11</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">extract</span><span class="p">(</span><span class="k">MINUTE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">extract</span><span class="p">(</span><span class="k">MINUTE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'123 23:55:59.002001'</span><span class="w"> </span><span class="k">DAY</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">SECOND</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">55</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-
-<span class="c1">-- from_unixtime</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_unixtime</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd HH:mm:ss'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">from_unixtime</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="w"> </span><span class="n">HH</span><span class="p">:</span><span class="n">mm</span><span class="p">:</span><span class="n">ss</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_unixtime</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">from_unixtime</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="w"> </span><span class="n">HH</span><span class="p">:</span><span class="n">mm</span><span class="p">:</span><span class="n">ss</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="c1">-- from_utc_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_utc_timestamp</span><span class="p">(</span><span class="s1">'2016-08-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Asia/Seoul'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="n">from_utc_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">Asia</span><span class="o">/</span><span class="n">Seoul</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-
-<span class="c1">-- hour</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hour</span><span class="p">(</span><span class="s1">'2009-07-30 12:58:59'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">hour</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">12</span><span class="p">:</span><span class="mi">58</span><span class="p">:</span><span class="mi">59</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- last_day</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">last_day</span><span class="p">(</span><span class="s1">'2009-01-12'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">last_day</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">12</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">31</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- localtimestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">localtimestamp</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">localtimestamp</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">38</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- make_date</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_date</span><span class="p">(</span><span class="mi">2013</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">make_date</span><span class="p">(</span><span class="mi">2013</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2013</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">15</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_date</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">make_date</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- make_dt_interval</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_dt_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">01</span><span class="p">.</span><span class="mi">001001</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">make_dt_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">001001</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1 12:30...|</span>
-<span class="s1">+-------------------------------------+</span>
-
-<span class="s1">SELECT make_dt_interval(2);</span>
-<span class="s1">+-----------------------------------+</span>
-<span class="s1">|make_dt_interval(2, 0, 0, 0.000000)|</span>
-<span class="s1">+-----------------------------------+</span>
-<span class="s1">| INTERVAL '</span><span class="mi">2</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_dt_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">make_dt_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">000000</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- make_interval</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">01</span><span class="p">.</span><span class="mi">001001</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">001001</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">100</span><span class="w"> </span><span class="n">years</span><span class="w"> </span><span class="mi">11</span><span class="w"> </span><span class="n">mont</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_interval</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">000000</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_interval</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">.</span><span class="mi">000001</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_interval</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">.</span><span class="mi">000001</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">months</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">days</span><span class="w"> </span><span class="mi">1</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="c1">-- make_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2014</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">06</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">,</span><span class="w"> </span><span class="s1">'CET'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">,</span><span class="w"> </span><span class="n">CET</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2014</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">23</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp</span><span class="p">(</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- make_timestamp_ltz</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2014</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">06</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">,</span><span class="w"> </span><span class="s1">'CET'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">,</span><span class="w"> </span><span class="n">CET</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2014</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ltz</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-
-<span class="c1">-- make_timestamp_ntz</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">28</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">45</span><span class="p">.</span><span class="mi">887</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2014</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">06</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="mi">2019</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="w"> </span><span class="mi">60</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="n">make_timestamp_ntz</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">22</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-
-<span class="c1">-- make_ym_interval</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1-2'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1-0'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_ym_interval</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">make_ym_interval</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-0-11'</span><span class="w"> </span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">make_ym_interval</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2-0'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- minute</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">minute</span><span class="p">(</span><span class="s1">'2009-07-30 12:58:59'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="k">minute</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">12</span><span class="p">:</span><span class="mi">58</span><span class="p">:</span><span class="mi">59</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">58</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- month</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">month</span><span class="p">(</span><span class="s1">'2016-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="k">month</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- months_between</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">months_between</span><span class="p">(</span><span class="s1">'1997-02-28 10:30:00'</span><span class="p">,</span><span class="w"> </span><span class="s1">'1996-10-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="n">months_between</span><span class="p">(</span><span class="mi">1997</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">1996</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">94959677</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">months_between</span><span class="p">(</span><span class="s1">'1997-02-28 10:30:00'</span><span class="p">,</span><span class="w"> </span><span class="s1">'1996-10-30'</span><span class="p">,</span><span class="w"> </span><span class="k">false</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">months_between</span><span class="p">(</span><span class="mi">1997</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">1996</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mi">30</span><span class="p">,</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">9495967741935485</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-
-<span class="c1">-- next_day</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">next_day</span><span class="p">(</span><span class="s1">'2015-01-14'</span><span class="p">,</span><span class="w"> </span><span class="s1">'TU'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">next_day</span><span class="p">(</span><span class="mi">2015</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">14</span><span class="p">,</span><span class="w"> </span><span class="n">TU</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- now</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">now</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">now</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">2023</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">09</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">38</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- quarter</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">quarter</span><span class="p">(</span><span class="s1">'2016-08-31'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">quarter</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">31</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- second</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">second</span><span class="p">(</span><span class="s1">'2009-07-30 12:58:59'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="k">second</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">12</span><span class="p">:</span><span class="mi">58</span><span class="p">:</span><span class="mi">59</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">59</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- session_window</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">.</span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">.</span><span class="k">end</span><span class="p">,</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:10:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:01:00'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="s1">'5 minutes'</span><span class="p">)</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">start</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">start</span><span class="o">|</span><span class="w"> </span><span class="k">end</span><span class="o">|</span><span class="n">cnt</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">30</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">01</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">.</span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">.</span><span class="k">end</span><span class="p">,</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:10:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:01:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">session_window</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'A1'</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="s1">'5 minutes'</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'A2'</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="s1">'1 minute'</span><span class="w"> </span><span class="k">ELSE</span><span class="w"> </span><span class="s1">'10 minutes'</span><span class="w"> </span><span class="k">END</span><span class="p">)</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">start</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">start</span><span class="o">|</span><span class="w"> </span><span class="k">end</span><span class="o">|</span><span class="n">cnt</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">30</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">01</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">02</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">04</span><span class="p">:</span><span class="mi">30</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">30</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-
-<span class="c1">-- timestamp_micros</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">timestamp_micros</span><span class="p">(</span><span class="mi">1230219000123123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">timestamp_micros</span><span class="p">(</span><span class="mi">1230219000123123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2008</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">25</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="c1">-- timestamp_millis</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">timestamp_millis</span><span class="p">(</span><span class="mi">1230219000123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">timestamp_millis</span><span class="p">(</span><span class="mi">1230219000123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2008</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">25</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- timestamp_seconds</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">timestamp_seconds</span><span class="p">(</span><span class="mi">1230219000</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">timestamp_seconds</span><span class="p">(</span><span class="mi">1230219000</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2008</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">25</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">timestamp_seconds</span><span class="p">(</span><span class="mi">1230219000</span><span class="p">.</span><span class="mi">123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">timestamp_seconds</span><span class="p">(</span><span class="mi">1230219000</span><span class="p">.</span><span class="mi">123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2008</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">25</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">30</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- to_date</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2016-12-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- to_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="s1">'2016-12-31 00:12:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="s1">'2016-12-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="c1">-- to_timestamp_ltz</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp_ltz</span><span class="p">(</span><span class="s1">'2016-12-31 00:12:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp_ltz</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp_ltz</span><span class="p">(</span><span class="s1">'2016-12-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp_ltz</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- to_timestamp_ntz</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp_ntz</span><span class="p">(</span><span class="s1">'2016-12-31 00:12:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp_ntz</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_timestamp_ntz</span><span class="p">(</span><span class="s1">'2016-12-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">to_timestamp_ntz</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- to_unix_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_unix_timestamp</span><span class="p">(</span><span class="s1">'2016-04-08'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">to_unix_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">08</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1460073600</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-
-<span class="c1">-- to_utc_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_utc_timestamp</span><span class="p">(</span><span class="s1">'2016-08-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Asia/Seoul'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">to_utc_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">Asia</span><span class="o">/</span><span class="n">Seoul</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- trunc</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">trunc</span><span class="p">(</span><span class="s1">'2019-08-04'</span><span class="p">,</span><span class="w"> </span><span class="s1">'week'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">trunc</span><span class="p">(</span><span class="mi">2019</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">04</span><span class="p">,</span><span class="w"> </span><span class="n">week</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">29</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">trunc</span><span class="p">(</span><span class="s1">'2019-08-04'</span><span class="p">,</span><span class="w"> </span><span class="s1">'quarter'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">trunc</span><span class="p">(</span><span class="mi">2019</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">04</span><span class="p">,</span><span class="w"> </span><span class="n">quarter</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">trunc</span><span class="p">(</span><span class="s1">'2009-02-12'</span><span class="p">,</span><span class="w"> </span><span class="s1">'MM'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">trunc</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="n">MM</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2009</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">trunc</span><span class="p">(</span><span class="s1">'2015-10-27'</span><span class="p">,</span><span class="w"> </span><span class="s1">'YEAR'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">trunc</span><span class="p">(</span><span class="mi">2015</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mi">27</span><span class="p">,</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2015</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- try_to_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="s1">'2016-12-31 00:12:00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="s1">'2016-12-31'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">try_to_timestamp</span><span class="p">(</span><span class="n">foo</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- unix_date</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_date</span><span class="p">(</span><span class="nb">DATE</span><span class="p">(</span><span class="ss">"1970-01-02"</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">unix_date</span><span class="p">(</span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- unix_micros</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_micros</span><span class="p">(</span><span class="k">TIMESTAMP</span><span class="p">(</span><span class="s1">'1970-01-01 00:00:01Z'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">unix_micros</span><span class="p">(</span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">01</span><span class="n">Z</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1000000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- unix_millis</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_millis</span><span class="p">(</span><span class="k">TIMESTAMP</span><span class="p">(</span><span class="s1">'1970-01-01 00:00:01Z'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">unix_millis</span><span class="p">(</span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">01</span><span class="n">Z</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- unix_seconds</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_seconds</span><span class="p">(</span><span class="k">TIMESTAMP</span><span class="p">(</span><span class="s1">'1970-01-01 00:00:01Z'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">unix_seconds</span><span class="p">(</span><span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">01</span><span class="n">Z</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="c1">-- unix_timestamp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_timestamp</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">unix_timestamp</span><span class="p">(</span><span class="k">current_timestamp</span><span class="p">(),</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="w"> </span><span class="n">HH</span><span class="p">:</span><span class="n">mm</span><span class="p">:</span><span class="n">ss</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1694237890</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unix_timestamp</span><span class="p">(</span><span class="s1">'2016-04-08'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">unix_timestamp</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">08</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1460073600</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- weekday</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">weekday</span><span class="p">(</span><span class="s1">'2009-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">weekday</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- weekofyear</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">weekofyear</span><span class="p">(</span><span class="s1">'2008-02-20'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">weekofyear</span><span class="p">(</span><span class="mi">2008</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">20</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- window</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">end</span><span class="p">,</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:06:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:01:00'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="s1">'5 minutes'</span><span class="p">)</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">start</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">start</span><span class="o">|</span><span class="w"> </span><span class="k">end</span><span class="o">|</span><span class="n">cnt</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">end</span><span class="p">,</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:06:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:01:00'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="s1">'10 minutes'</span><span class="p">,</span><span class="w"> </span><span class="s1">'5 minutes'</span><span class="p">)</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">start</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">start</span><span class="o">|</span><span class="w"> </span><span class="k">end</span><span class="o">|</span><span class="n">cnt</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2020</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">23</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2020</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">31</span><span class="w"> </span><span class="mi">23</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+---+</span>
-
-<span class="c1">-- window_time</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">start</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">end</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">end</span><span class="p">,</span><span class="w"> </span><span class="n">window_time</span><span class="p">(</span><span class="n">window</span><span class="p">),</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">,</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:04:30'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A1'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:06:00'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'A2'</span><span class="p">,</span><span class="w"> </span><span class="s1">'2021-01-01 00:01:00'</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="s1">'5 minutes'</span><span class="p">)</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="k">start</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+--------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">start</span><span class="o">|</span><span class="w"> </span><span class="k">end</span><span class="o">|</span><span class="w"> </span><span class="n">window_time</span><span class="p">(</span><span class="n">window</span><span class="p">)</span><span class="o">|</span><span class="n">cnt</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+--------------------+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">04</span><span class="p">:...</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">09</span><span class="p">:...</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A2</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">04</span><span class="p">:...</span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+-------------------+-------------------+--------------------+---+</span>
-
-<span class="c1">-- year</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">year</span><span class="p">(</span><span class="s1">'2016-07-30'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="k">year</span><span class="p">(</span><span class="mi">2016</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2016</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-</code></pre></div>
-
-<h3 id="json-functions">JSON Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>from_json(jsonStr, schema[, options])</td>
- <td>Returns a struct value with the given `jsonStr` and `schema`.</td>
- </tr>
- <tr>
- <td>get_json_object(json_txt, path)</td>
- <td>Extracts a json object from `path`.</td>
- </tr>
- <tr>
- <td>json_array_length(jsonArray)</td>
- <td>Returns the number of elements in the outermost JSON array.</td>
- </tr>
- <tr>
- <td>json_object_keys(json_object)</td>
- <td>Returns all the keys of the outermost JSON object as an array.</td>
- </tr>
- <tr>
- <td>json_tuple(jsonStr, p1, p2, ..., pn)</td>
- <td>Returns a tuple like the function get_json_object, but it takes multiple names. All the input parameters and output column types are string.</td>
- </tr>
- <tr>
- <td>schema_of_json(json[, options])</td>
- <td>Returns schema in the DDL format of JSON string.</td>
- </tr>
- <tr>
- <td>to_json(expr[, options])</td>
- <td>Returns a JSON string with a given struct value</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-5">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- from_json</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_json</span><span class="p">(</span><span class="s1">'{"a":1, "b":0.8}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a INT, b DOUBLE'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">from_json</span><span class="p">(</span><span class="err">{</span><span class="ss">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">"b"</span><span class="p">:</span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_json</span><span class="p">(</span><span class="s1">'{"time":"26/08/2015"}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'time Timestamp'</span><span class="p">,</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">'timestampFormat'</span><span class="p">,</span><span class="w"> </span><span class="s1">'dd/MM/yyyy'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">from_json</span><span class="p">(</span><span class="err">{</span><span class="ss">"time"</span><span class="p">:</span><span class="ss">"26/08/2015"</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">2015</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">26</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_json</span><span class="p">(</span><span class="s1">'{"teacher": "Alice", "student": [{"name": "Bob", "rank": 1}, {"name": "Charlie", "rank": 2}]}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">from_json</span><span class="p">(</span><span class="err">{</span><span class="ss">"teacher"</span><span class="p">:</span><span class="w"> </span><span class="ss">"Alice"</span><span class="p">,</span><span class="w"> </span><span class="ss">"student"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="ss">"name"</span><span class="p">:</span><span class="w"> </span><span class="ss">"Bob"</span><span class="p">,</span><span class="w"> </span><span class="ss">"rank"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="ss">"name"</span><span class="p">:</span><span class="w"> </span><span class="ss">"Charlie"</span><span class="p">,</span><span class="w"> </span><span class="ss">"rank"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="err">}</span><span class="p">]</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="n">Alice</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="n">Bob</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- get_json_object</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">get_json_object</span><span class="p">(</span><span class="s1">'{"a":"b"}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'$.a'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">get_json_object</span><span class="p">(</span><span class="err">{</span><span class="ss">"a"</span><span class="p">:</span><span class="ss">"b"</span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">a</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- json_array_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_array_length</span><span class="p">(</span><span class="s1">'[1,2,3,4]'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">json_array_length</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_array_length</span><span class="p">(</span><span class="s1">'[1,2,3,{"f1":1,"f2":[5,6]},4]'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="n">json_array_length</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="err">{</span><span class="ss">"f1"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"f2"</span><span class="p">:[</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span><span class="err">}</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_array_length</span><span class="p">(</span><span class="s1">'[1,2'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">json_array_length</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- json_object_keys</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_object_keys</span><span class="p">(</span><span class="s1">'{}'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">json_object_keys</span><span class="p">(</span><span class="err">{}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_object_keys</span><span class="p">(</span><span class="s1">'{"key": "value"}'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">json_object_keys</span><span class="p">(</span><span class="err">{</span><span class="ss">"key"</span><span class="p">:</span><span class="w"> </span><span class="ss">"value"</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="k">key</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_object_keys</span><span class="p">(</span><span class="s1">'{"f1":"abc","f2":{"f3":"a", "f4":"b"}}'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">json_object_keys</span><span class="p">(</span><span class="err">{</span><span class="ss">"f1"</span><span class="p">:</span><span class="ss">"abc"</span><span class="p">,</span><span class="ss">"f2"</span><span class="p">:</span><span class="err">{</span><span class="ss">"f3"</span><span class="p">:</span><span class="ss">"a"</span><span class="p">,</span><span class="w"> </span><span class="ss">"f4"</span><span class="p">:</span><span class="ss">"b"</span><span class="err">}}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">f1</span><span class="p">,</span><span class="w"> </span><span class="n">f2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="c1">-- json_tuple</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">json_tuple</span><span class="p">(</span><span class="s1">'{"a":1, "b":2}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">c0</span><span class="o">|</span><span class="w"> </span><span class="n">c1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-
-<span class="c1">-- schema_of_json</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_json</span><span class="p">(</span><span class="s1">'[{"col":0}]'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">schema_of_json</span><span class="p">([</span><span class="err">{</span><span class="ss">"col"</span><span class="p">:</span><span class="mi">0</span><span class="err">}</span><span class="p">])</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">ARRAY</span><span class="o"><</span><span class="n">STRUCT</span><span class="o"><</span><span class="n">col</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_json</span><span class="p">(</span><span class="s1">'[{"col":01}]'</span><span class="p">,</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">'allowNumericLeadingZeros'</span><span class="p">,</span><span class="w"> </span><span class="s1">'true'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">schema_of_json</span><span class="p">([</span><span class="err">{</span><span class="ss">"col"</span><span class="p">:</span><span class="mi">01</span><span class="err">}</span><span class="p">])</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">ARRAY</span><span class="o"><</span><span class="n">STRUCT</span><span class="o"><</span><span class="n">col</span><span class="p">:...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- to_json</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_json</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">to_json</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="ss">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</span><span class="p">:</span><span class="mi">2</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_json</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'time'</span><span class="p">,</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="s1">'2015-08-26'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">)),</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">'timestampFormat'</span><span class="p">,</span><span class="w"> </span><span class="s1">'dd/MM/yyyy'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">to_json</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="k">time</span><span class="p">,</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="mi">2015</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">26</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="ss">"time"</span><span class="p">:</span><span class="ss">"26/08/20...|</span>
-<span class="ss">+-----------------------------------------------------------------+</span>
-
-<span class="ss">SELECT to_json(array(named_struct('a', 1, 'b', 2)));</span>
-<span class="ss">+----------------------------------------+</span>
-<span class="ss">|to_json(array(named_struct(a, 1, b, 2)))|</span>
-<span class="ss">+----------------------------------------+</span>
-<span class="ss">| [{"</span><span class="n">a</span><span class="ss">":1,"</span><span class="n">b</span><span class="ss">":2}]|</span>
-<span class="ss">+----------------------------------------+</span>
-
-<span class="ss">SELECT to_json(map('a', named_struct('b', 1)));</span>
-<span class="ss">+-----------------------------------+</span>
-<span class="ss">|to_json(map(a, named_struct(b, 1)))|</span>
-<span class="ss">+-----------------------------------+</span>
-<span class="ss">| {"</span><span class="n">a</span><span class="ss">":{"</span><span class="n">b</span><span class="ss">":1}}|</span>
-<span class="ss">+-----------------------------------+</span>
-
-<span class="ss">SELECT to_json(map(named_struct('a', 1),named_struct('b', 2)));</span>
-<span class="ss">+----------------------------------------------------+</span>
-<span class="ss">|to_json(map(named_struct(a, 1), named_struct(b, 2)))|</span>
-<span class="ss">+----------------------------------------------------+</span>
-<span class="ss">| {"</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="ss">":{"</span><span class="n">b</span><span class="ss">":2}}|</span>
-<span class="ss">+----------------------------------------------------+</span>
-
-<span class="ss">SELECT to_json(map('a', 1));</span>
-<span class="ss">+------------------+</span>
-<span class="ss">|to_json(map(a, 1))|</span>
-<span class="ss">+------------------+</span>
-<span class="ss">| {"</span><span class="n">a</span><span class="ss">":1}|</span>
-<span class="ss">+------------------+</span>
-
-<span class="ss">SELECT to_json(array(map('a', 1)));</span>
-<span class="ss">+-------------------------+</span>
-<span class="ss">|to_json(array(map(a, 1)))|</span>
-<span class="ss">+-------------------------+</span>
-<span class="ss">| [{"</span><span class="n">a</span><span class="err">"</span><span class="p">:</span><span class="mi">1</span><span class="err">}</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-</code></pre></div>
-
-<h3 id="mathematical-functions">Mathematical Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>expr1 % expr2</td>
- <td>Returns the remainder after `expr1`/`expr2`.</td>
- </tr>
- <tr>
- <td>expr1 * expr2</td>
- <td>Returns `expr1`*`expr2`.</td>
- </tr>
- <tr>
- <td>expr1 + expr2</td>
- <td>Returns `expr1`+`expr2`.</td>
- </tr>
- <tr>
- <td>expr1 - expr2</td>
- <td>Returns `expr1`-`expr2`.</td>
- </tr>
- <tr>
- <td>expr1 / expr2</td>
- <td>Returns `expr1`/`expr2`. It always performs floating point division.</td>
- </tr>
- <tr>
- <td>abs(expr)</td>
- <td>Returns the absolute value of the numeric or interval value.</td>
- </tr>
- <tr>
- <td>acos(expr)</td>
- <td>Returns the inverse cosine (a.k.a. arc cosine) of `expr`, as if computed by
- `java.lang.Math.acos`.</td>
- </tr>
- <tr>
- <td>acosh(expr)</td>
- <td>Returns inverse hyperbolic cosine of `expr`.</td>
- </tr>
- <tr>
- <td>asin(expr)</td>
- <td>Returns the inverse sine (a.k.a. arc sine) the arc sin of `expr`,
- as if computed by `java.lang.Math.asin`.</td>
- </tr>
- <tr>
- <td>asinh(expr)</td>
- <td>Returns inverse hyperbolic sine of `expr`.</td>
- </tr>
- <tr>
- <td>atan(expr)</td>
- <td>Returns the inverse tangent (a.k.a. arc tangent) of `expr`, as if computed by
- `java.lang.Math.atan`</td>
- </tr>
- <tr>
- <td>atan2(exprY, exprX)</td>
- <td>Returns the angle in radians between the positive x-axis of a plane
- and the point given by the coordinates (`exprX`, `exprY`), as if computed by
- `java.lang.Math.atan2`.</td>
- </tr>
- <tr>
- <td>atanh(expr)</td>
- <td>Returns inverse hyperbolic tangent of `expr`.</td>
- </tr>
- <tr>
- <td>bin(expr)</td>
- <td>Returns the string representation of the long value `expr` represented in binary.</td>
- </tr>
- <tr>
- <td>bround(expr, d)</td>
- <td>Returns `expr` rounded to `d` decimal places using HALF_EVEN rounding mode.</td>
- </tr>
- <tr>
- <td>cbrt(expr)</td>
- <td>Returns the cube root of `expr`.</td>
- </tr>
- <tr>
- <td>ceil(expr[, scale])</td>
- <td>Returns the smallest number after rounding up that is not smaller than `expr`. An optional `scale` parameter can be specified to control the rounding behavior.</td>
- </tr>
- <tr>
- <td>ceiling(expr[, scale])</td>
- <td>Returns the smallest number after rounding up that is not smaller than `expr`. An optional `scale` parameter can be specified to control the rounding behavior.</td>
- </tr>
- <tr>
- <td>conv(num, from_base, to_base)</td>
- <td>Convert `num` from `from_base` to `to_base`.</td>
- </tr>
- <tr>
- <td>cos(expr)</td>
- <td>Returns the cosine of `expr`, as if computed by
- `java.lang.Math.cos`.</td>
- </tr>
- <tr>
- <td>cosh(expr)</td>
- <td>Returns the hyperbolic cosine of `expr`, as if computed by
- `java.lang.Math.cosh`.</td>
- </tr>
- <tr>
- <td>cot(expr)</td>
- <td>Returns the cotangent of `expr`, as if computed by `1/java.lang.Math.tan`.</td>
- </tr>
- <tr>
- <td>csc(expr)</td>
- <td>Returns the cosecant of `expr`, as if computed by `1/java.lang.Math.sin`.</td>
- </tr>
- <tr>
- <td>degrees(expr)</td>
- <td>Converts radians to degrees.</td>
- </tr>
- <tr>
- <td>expr1 div expr2</td>
- <td>Divide `expr1` by `expr2`. It returns NULL if an operand is NULL or `expr2` is 0. The result is casted to long.</td>
- </tr>
- <tr>
- <td>e()</td>
- <td>Returns Euler's number, e.</td>
- </tr>
- <tr>
- <td>exp(expr)</td>
- <td>Returns e to the power of `expr`.</td>
- </tr>
- <tr>
- <td>expm1(expr) - Returns exp(`expr`)</td>
- <td>1.</td>
- </tr>
- <tr>
- <td>factorial(expr)</td>
- <td>Returns the factorial of `expr`. `expr` is [0..20]. Otherwise, null.</td>
- </tr>
- <tr>
- <td>floor(expr[, scale])</td>
- <td>Returns the largest number after rounding down that is not greater than `expr`. An optional `scale` parameter can be specified to control the rounding behavior.</td>
- </tr>
- <tr>
- <td>greatest(expr, ...)</td>
- <td>Returns the greatest value of all parameters, skipping null values.</td>
- </tr>
- <tr>
- <td>hex(expr)</td>
- <td>Converts `expr` to hexadecimal.</td>
- </tr>
- <tr>
- <td>hypot(expr1, expr2)</td>
- <td>Returns sqrt(`expr1`**2 + `expr2`**2).</td>
- </tr>
- <tr>
- <td>least(expr, ...)</td>
- <td>Returns the least value of all parameters, skipping null values.</td>
- </tr>
- <tr>
- <td>ln(expr)</td>
- <td>Returns the natural logarithm (base e) of `expr`.</td>
- </tr>
- <tr>
- <td>log(base, expr)</td>
- <td>Returns the logarithm of `expr` with `base`.</td>
- </tr>
- <tr>
- <td>log10(expr)</td>
- <td>Returns the logarithm of `expr` with base 10.</td>
- </tr>
- <tr>
- <td>log1p(expr)</td>
- <td>Returns log(1 + `expr`).</td>
- </tr>
- <tr>
- <td>log2(expr)</td>
- <td>Returns the logarithm of `expr` with base 2.</td>
- </tr>
- <tr>
- <td>expr1 mod expr2</td>
- <td>Returns the remainder after `expr1`/`expr2`.</td>
- </tr>
- <tr>
- <td>negative(expr)</td>
- <td>Returns the negated value of `expr`.</td>
- </tr>
- <tr>
- <td>pi()</td>
- <td>Returns pi.</td>
- </tr>
- <tr>
- <td>pmod(expr1, expr2)</td>
- <td>Returns the positive value of `expr1` mod `expr2`.</td>
- </tr>
- <tr>
- <td>positive(expr)</td>
- <td>Returns the value of `expr`.</td>
- </tr>
- <tr>
- <td>pow(expr1, expr2)</td>
- <td>Raises `expr1` to the power of `expr2`.</td>
- </tr>
- <tr>
- <td>power(expr1, expr2)</td>
- <td>Raises `expr1` to the power of `expr2`.</td>
- </tr>
- <tr>
- <td>radians(expr)</td>
- <td>Converts degrees to radians.</td>
- </tr>
- <tr>
- <td>rand([seed])</td>
- <td>Returns a random value with independent and identically distributed (i.i.d.) uniformly distributed values in [0, 1).</td>
- </tr>
- <tr>
- <td>randn([seed])</td>
- <td>Returns a random value with independent and identically distributed (i.i.d.) values drawn from the standard normal distribution.</td>
- </tr>
- <tr>
- <td>random([seed])</td>
- <td>Returns a random value with independent and identically distributed (i.i.d.) uniformly distributed values in [0, 1).</td>
- </tr>
- <tr>
- <td>rint(expr)</td>
- <td>Returns the double value that is closest in value to the argument and is equal to a mathematical integer.</td>
- </tr>
- <tr>
- <td>round(expr, d)</td>
- <td>Returns `expr` rounded to `d` decimal places using HALF_UP rounding mode.</td>
- </tr>
- <tr>
- <td>sec(expr)</td>
- <td>Returns the secant of `expr`, as if computed by `1/java.lang.Math.cos`.</td>
- </tr>
- <tr>
- <td>shiftleft(base, expr)</td>
- <td>Bitwise left shift.</td>
- </tr>
- <tr>
- <td>sign(expr)</td>
- <td>Returns -1.0, 0.0 or 1.0 as `expr` is negative, 0 or positive.</td>
- </tr>
- <tr>
- <td>signum(expr)</td>
- <td>Returns -1.0, 0.0 or 1.0 as `expr` is negative, 0 or positive.</td>
- </tr>
- <tr>
- <td>sin(expr)</td>
- <td>Returns the sine of `expr`, as if computed by `java.lang.Math.sin`.</td>
- </tr>
- <tr>
- <td>sinh(expr)</td>
- <td>Returns hyperbolic sine of `expr`, as if computed by `java.lang.Math.sinh`.</td>
- </tr>
- <tr>
- <td>sqrt(expr)</td>
- <td>Returns the square root of `expr`.</td>
- </tr>
- <tr>
- <td>tan(expr)</td>
- <td>Returns the tangent of `expr`, as if computed by `java.lang.Math.tan`.</td>
- </tr>
- <tr>
- <td>tanh(expr)</td>
- <td>Returns the hyperbolic tangent of `expr`, as if computed by
- `java.lang.Math.tanh`.</td>
- </tr>
- <tr>
- <td>try_add(expr1, expr2)</td>
- <td>Returns the sum of `expr1`and `expr2` and the result is null on overflow. The acceptable input types are the same with the `+` operator.</td>
- </tr>
- <tr>
- <td>try_divide(dividend, divisor)</td>
- <td>Returns `dividend`/`divisor`. It always performs floating point division. Its result is always null if `expr2` is 0. `dividend` must be a numeric or an interval. `divisor` must be a numeric.</td>
- </tr>
- <tr>
- <td>try_multiply(expr1, expr2)</td>
- <td>Returns `expr1`*`expr2` and the result is null on overflow. The acceptable input types are the same with the `*` operator.</td>
- </tr>
- <tr>
- <td>try_subtract(expr1, expr2)</td>
- <td>Returns `expr1`-`expr2` and the result is null on overflow. The acceptable input types are the same with the `-` operator.</td>
- </tr>
- <tr>
- <td>unhex(expr)</td>
- <td>Converts hexadecimal `expr` to binary.</td>
- </tr>
- <tr>
- <td>width_bucket(value, min_value, max_value, num_bucket)</td>
- <td>Returns the bucket number to which
- `value` would be assigned in an equiwidth histogram with `num_bucket` buckets,
- in the range `min_value` to `max_value`."</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-6">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- %</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">MOD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="k">mod</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- *</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- +</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- -</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- /</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="n">L</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="n">L</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- abs</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">abs</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="k">abs</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">abs</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="o">-</span><span class="s1">'1-1'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="k">abs</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-1-1'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1-1'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="c1">-- acos</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">acos</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">ACOS</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">acos</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">ACOS</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">NaN</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- acosh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">acosh</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ACOSH</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">acosh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ACOSH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">NaN</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- asin</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">asin</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">ASIN</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">asin</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">ASIN</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">NaN</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- asinh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">asinh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ASINH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- atan</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">atan</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">ATAN</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- atan2</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">atan2</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">ATAN2</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- atanh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">atanh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ATANH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">atanh</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ATANH</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">NaN</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- bin</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bin</span><span class="p">(</span><span class="mi">13</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">bin</span><span class="p">(</span><span class="mi">13</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1101</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bin</span><span class="p">(</span><span class="o">-</span><span class="mi">13</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">bin</span><span class="p">(</span><span class="o">-</span><span class="mi">13</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">11111111111111111</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bin</span><span class="p">(</span><span class="mi">13</span><span class="p">.</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">bin</span><span class="p">(</span><span class="mi">13</span><span class="p">.</span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1101</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- bround</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bround</span><span class="p">(</span><span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">bround</span><span class="p">(</span><span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bround</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">bround</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- cbrt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">cbrt</span><span class="p">(</span><span class="mi">27</span><span class="p">.</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="n">CBRT</span><span class="p">(</span><span class="mi">27</span><span class="p">.</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- ceil</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceil</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="n">CEIL</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceil</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">CEIL</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceil</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">ceil</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">142</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceil</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">ceil</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- ceiling</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceiling</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">ceiling</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceiling</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="n">ceiling</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceiling</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">ceiling</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">142</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ceiling</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">ceiling</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- conv</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">conv</span><span class="p">(</span><span class="s1">'100'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">conv</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">conv</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">conv</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">16</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- cos</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">cos</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="n">COS</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-
-<span class="c1">-- cosh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">cosh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">COSH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- cot</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">cot</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">COT</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">6420926159343306</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- csc</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">csc</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">CSC</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">1</span><span class="p">.</span><span class="mi">1883951057781212</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- degrees</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">degrees</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">141592653589793</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">DEGREES</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">141592653589793</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">180</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="c1">-- div</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">div</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="n">div</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1-1'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="w"> </span><span class="n">div</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-1'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1-1'</span><span class="w"> </span><span class="k">YEAR</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="k">MONTH</span><span class="w"> </span><span class="n">div</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-1'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">13</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------+</span>
-
-<span class="c1">-- e</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">e</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">E</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="mi">2</span><span class="p">.</span><span class="mi">718281828459045</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- exp</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">exp</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="n">EXP</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-
-<span class="c1">-- expm1</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">expm1</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">EXPM1</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- factorial</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">factorial</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">factorial</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">120</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- floor</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">floor</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">FLOOR</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">floor</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">FLOOR</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">floor</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">floor</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">141</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">floor</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">floor</span><span class="p">(</span><span class="mi">3</span><span class="p">.</span><span class="mi">1411</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- greatest</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">greatest</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">greatest</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- hex</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="mi">17</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="mi">17</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">11</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">537061726</span><span class="n">B2053514C</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- hypot</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hypot</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">HYPOT</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- least</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">least</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">least</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- ln</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ln</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----+</span>
-<span class="o">|</span><span class="n">ln</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+</span>
-
-<span class="c1">-- log</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">LOG</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- log10</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">log10</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">LOG10</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- log1p</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">log1p</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">LOG1P</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- log2</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">log2</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">LOG2</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- mod</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">MOD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="k">mod</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- negative</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">negative</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">negative</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- pi</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">pi</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">PI</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="mi">3</span><span class="p">.</span><span class="mi">141592653589793</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- pmod</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">pmod</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">pmod</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">pmod</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">pmod</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- positive</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">positive</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----+</span>
-<span class="o">|</span><span class="p">(</span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+</span>
-
-<span class="c1">-- pow</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="c1">-- power</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">power</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="n">POWER</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- radians</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">radians</span><span class="p">(</span><span class="mi">180</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">RADIANS</span><span class="p">(</span><span class="mi">180</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="mi">3</span><span class="p">.</span><span class="mi">141592653589793</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- rand</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rand</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">6627134854017663</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">7604953758285915</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">7604953758285915</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- randn</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">randn</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">randn</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|-</span><span class="mi">0</span><span class="p">.</span><span class="mi">9888922220705292</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">randn</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">randn</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">1</span><span class="p">.</span><span class="mi">6034991609278433</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">randn</span><span class="p">(</span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">randn</span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">1</span><span class="p">.</span><span class="mi">6034991609278433</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- random</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">random</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">714484218718629</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">random</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">7604953758285915</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">random</span><span class="p">(</span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="mi">0</span><span class="p">.</span><span class="mi">7604953758285915</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- rint</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rint</span><span class="p">(</span><span class="mi">12</span><span class="p">.</span><span class="mi">3456</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">rint</span><span class="p">(</span><span class="mi">12</span><span class="p">.</span><span class="mi">3456</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- round</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">round</span><span class="p">(</span><span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">round</span><span class="p">(</span><span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- sec</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sec</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="n">SEC</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-
-<span class="c1">-- shiftleft</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">shiftleft</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">shiftleft</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- sign</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sign</span><span class="p">(</span><span class="mi">40</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">sign</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sign</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="o">-</span><span class="s1">'100'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">sign</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-100'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="c1">-- signum</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">signum</span><span class="p">(</span><span class="mi">40</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="n">SIGNUM</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">signum</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="o">-</span><span class="s1">'100'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">SIGNUM</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'-100'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- sin</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sin</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="n">SIN</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-
-<span class="c1">-- sinh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sinh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">SINH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- sqrt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sqrt</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">SQRT</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- tan</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">tan</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="n">TAN</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------+</span>
-
-<span class="c1">-- tanh</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">tanh</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">TANH</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- try_add</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="nb">date</span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="nb">date</span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">year</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2022</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="k">timestamp</span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">day</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2021-01-01 00:00:00'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_add</span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">year</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">year</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_add</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'3'</span><span class="w"> </span><span class="k">YEAR</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------+</span>
-
-<span class="c1">-- try_divide</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_divide</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">try_divide</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_divide</span><span class="p">(</span><span class="mi">2</span><span class="n">L</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="n">L</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">try_divide</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_divide</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">try_divide</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_divide</span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">month</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">try_divide</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0-1'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_divide</span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">month</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">try_divide</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">MONTH</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- try_multiply</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_multiply</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">try_multiply</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_multiply</span><span class="p">(</span><span class="o">-</span><span class="mi">2147483648</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">try_multiply</span><span class="p">(</span><span class="o">-</span><span class="mi">2147483648</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_multiply</span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">year</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">try_multiply</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'6-0'</span><span class="w"> </span><span class="n">YE</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="c1">-- try_subtract</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="o">-</span><span class="mi">2147483648</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="o">-</span><span class="mi">2147483648</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">date</span><span class="s1">'2021-01-02'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2021-01-02'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">date</span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">year</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">DATE</span><span class="w"> </span><span class="s1">'2021-01-01'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2020</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="k">timestamp</span><span class="s1">'2021-01-02 00:00:00'</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">day</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">'2021-01-02 00:00:00'</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">interval</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">year</span><span class="p">,</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">year</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_subtract</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'2'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-
-<span class="c1">-- unhex</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'537061726B2053514C'</span><span class="p">),</span><span class="w"> </span><span class="s1">'UTF-8'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="mi">537061726</span><span class="n">B2053514C</span><span class="p">),</span><span class="w"> </span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="c1">-- width_bucket</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="mi">5</span><span class="p">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">.</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="mi">5</span><span class="p">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">.</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">.</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">.</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="mi">8</span><span class="p">.</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="mi">8</span><span class="p">.</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">YEAR</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">width_bucket</span><span class="p">(</span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'0'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'10'</span><span class="w"> </span><span class="k">DAY</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="string-functions">String Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>ascii(str)</td>
- <td>Returns the numeric value of the first character of `str`.</td>
- </tr>
- <tr>
- <td>base64(bin)</td>
- <td>Converts the argument from a binary `bin` to a base 64 string.</td>
- </tr>
- <tr>
- <td>bit_length(expr)</td>
- <td>Returns the bit length of string data or number of bits of binary data.</td>
- </tr>
- <tr>
- <td>btrim(str)</td>
- <td>Removes the leading and trailing space characters from `str`.</td>
- </tr>
- <tr>
- <td> btrim(str, trimStr)</td>
- <td>Remove the leading and trailing `trimStr` characters from `str`.</td>
- </tr>
- <tr>
- <td>char(expr)</td>
- <td>Returns the ASCII character having the binary equivalent to `expr`. If n is larger than 256 the result is equivalent to chr(n % 256)</td>
- </tr>
- <tr>
- <td>char_length(expr)</td>
- <td>Returns the character length of string data or number of bytes of binary data. The length of string data includes the trailing spaces. The length of binary data includes binary zeros.</td>
- </tr>
- <tr>
- <td>character_length(expr)</td>
- <td>Returns the character length of string data or number of bytes of binary data. The length of string data includes the trailing spaces. The length of binary data includes binary zeros.</td>
- </tr>
- <tr>
- <td>chr(expr)</td>
- <td>Returns the ASCII character having the binary equivalent to `expr`. If n is larger than 256 the result is equivalent to chr(n % 256)</td>
- </tr>
- <tr>
- <td>concat_ws(sep[, str | array(str)]+)</td>
- <td>Returns the concatenation of the strings separated by `sep`, skipping null values.</td>
- </tr>
- <tr>
- <td>contains(left, right)</td>
- <td>Returns a boolean. The value is True if right is found inside left.
- Returns NULL if either input expression is NULL. Otherwise, returns False.
- Both left or right must be of STRING or BINARY type.</td>
- </tr>
- <tr>
- <td>decode(bin, charset)</td>
- <td>Decodes the first argument using the second argument character set.</td>
- </tr>
- <tr>
- <td> decode(expr, search, result [, search, result ] ... [, default])</td>
- <td>Compares expr
- to each search value in order. If expr is equal to a search value, decode returns
- the corresponding result. If no match is found, then it returns default. If default
- is omitted, it returns null.</td>
- </tr>
- <tr>
- <td>elt(n, input1, input2, ...)</td>
- <td>Returns the `n`-th input, e.g., returns `input2` when `n` is 2.
- The function returns NULL if the index exceeds the length of the array
- and `spark.sql.ansi.enabled` is set to false. If `spark.sql.ansi.enabled` is set to true,
- it throws ArrayIndexOutOfBoundsException for invalid indices.</td>
- </tr>
- <tr>
- <td>encode(str, charset)</td>
- <td>Encodes the first argument using the second argument character set.</td>
- </tr>
- <tr>
- <td>endswith(left, right)</td>
- <td>Returns a boolean. The value is True if left ends with right.
- Returns NULL if either input expression is NULL. Otherwise, returns False.
- Both left or right must be of STRING or BINARY type.</td>
- </tr>
- <tr>
- <td>find_in_set(str, str_array)</td>
- <td>Returns the index (1-based) of the given string (`str`) in the comma-delimited list (`str_array`).
- Returns 0, if the string was not found or if the given string (`str`) contains a comma.</td>
- </tr>
- <tr>
- <td>format_number(expr1, expr2)</td>
- <td>Formats the number `expr1` like '#,###,###.##', rounded to `expr2`
- decimal places. If `expr2` is 0, the result has no decimal point or fractional part.
- `expr2` also accept a user specified format.
- This is supposed to function like MySQL's FORMAT.</td>
- </tr>
- <tr>
- <td>format_string(strfmt, obj, ...)</td>
- <td>Returns a formatted string from printf-style format strings.</td>
- </tr>
- <tr>
- <td>initcap(str)</td>
- <td>Returns `str` with the first letter of each word in uppercase.
- All other letters are in lowercase. Words are delimited by white space.</td>
- </tr>
- <tr>
- <td>instr(str, substr)</td>
- <td>Returns the (1-based) index of the first occurrence of `substr` in `str`.</td>
- </tr>
- <tr>
- <td>lcase(str)</td>
- <td>Returns `str` with all characters changed to lowercase.</td>
- </tr>
- <tr>
- <td>left(str, len)</td>
- <td>Returns the leftmost `len`(`len` can be string type) characters from the string `str`,if `len` is less or equal than 0 the result is an empty string.</td>
- </tr>
- <tr>
- <td>len(expr)</td>
- <td>Returns the character length of string data or number of bytes of binary data. The length of string data includes the trailing spaces. The length of binary data includes binary zeros.</td>
- </tr>
- <tr>
- <td>length(expr)</td>
- <td>Returns the character length of string data or number of bytes of binary data. The length of string data includes the trailing spaces. The length of binary data includes binary zeros.</td>
- </tr>
- <tr>
- <td>levenshtein(str1, str2[, threshold])</td>
- <td>Returns the Levenshtein distance between the two given strings. If threshold is set and distance more than it, return -1.</td>
- </tr>
- <tr>
- <td>locate(substr, str[, pos])</td>
- <td>Returns the position of the first occurrence of `substr` in `str` after position `pos`.
- The given `pos` and return value are 1-based.</td>
- </tr>
- <tr>
- <td>lower(str)</td>
- <td>Returns `str` with all characters changed to lowercase.</td>
- </tr>
- <tr>
- <td>lpad(str, len[, pad])</td>
- <td>Returns `str`, left-padded with `pad` to a length of `len`.
- If `str` is longer than `len`, the return value is shortened to `len` characters or bytes.
- If `pad` is not specified, `str` will be padded to the left with space characters if it is
- a character string, and with zeros if it is a byte sequence.</td>
- </tr>
- <tr>
- <td>ltrim(str)</td>
- <td>Removes the leading space characters from `str`.</td>
- </tr>
- <tr>
- <td>luhn_check(str )</td>
- <td>Checks that a string of digits is valid according to the Luhn algorithm.
- This checksum function is widely applied on credit card numbers and government identification
- numbers to distinguish valid numbers from mistyped, incorrect numbers.</td>
- </tr>
- <tr>
- <td>mask(input[, upperChar, lowerChar, digitChar, otherChar])</td>
- <td>masks the given string value.
- The function replaces characters with 'X' or 'x', and numbers with 'n'.
- This can be useful for creating copies of tables with sensitive information removed.</td>
- </tr>
- <tr>
- <td>octet_length(expr)</td>
- <td>Returns the byte length of string data or number of bytes of binary data.</td>
- </tr>
- <tr>
- <td>overlay(input, replace, pos[, len])</td>
- <td>Replace `input` with `replace` that starts at `pos` and is of length `len`.</td>
- </tr>
- <tr>
- <td>position(substr, str[, pos])</td>
- <td>Returns the position of the first occurrence of `substr` in `str` after position `pos`.
- The given `pos` and return value are 1-based.</td>
- </tr>
- <tr>
- <td>printf(strfmt, obj, ...)</td>
- <td>Returns a formatted string from printf-style format strings.</td>
- </tr>
- <tr>
- <td>regexp_count(str, regexp)</td>
- <td>Returns a count of the number of times that the regular expression pattern `regexp` is matched in the string `str`.</td>
- </tr>
- <tr>
- <td>regexp_extract(str, regexp[, idx])</td>
- <td>Extract the first string in the `str` that match the `regexp`
- expression and corresponding to the regex group index.</td>
- </tr>
- <tr>
- <td>regexp_extract_all(str, regexp[, idx])</td>
- <td>Extract all strings in the `str` that match the `regexp`
- expression and corresponding to the regex group index.</td>
- </tr>
- <tr>
- <td>regexp_instr(str, regexp)</td>
- <td>Searches a string for a regular expression and returns an integer that indicates the beginning position of the matched substring. Positions are 1-based, not 0-based. If no match is found, returns 0.</td>
- </tr>
- <tr>
- <td>regexp_replace(str, regexp, rep[, position])</td>
- <td>Replaces all substrings of `str` that match `regexp` with `rep`.</td>
- </tr>
- <tr>
- <td>regexp_substr(str, regexp)</td>
- <td>Returns the substring that matches the regular expression `regexp` within the string `str`. If the regular expression is not found, the result is null.</td>
- </tr>
- <tr>
- <td>repeat(str, n)</td>
- <td>Returns the string which repeats the given string value n times.</td>
- </tr>
- <tr>
- <td>replace(str, search[, replace])</td>
- <td>Replaces all occurrences of `search` with `replace`.</td>
- </tr>
- <tr>
- <td>right(str, len)</td>
- <td>Returns the rightmost `len`(`len` can be string type) characters from the string `str`,if `len` is less or equal than 0 the result is an empty string.</td>
- </tr>
- <tr>
- <td>rpad(str, len[, pad])</td>
- <td>Returns `str`, right-padded with `pad` to a length of `len`.
- If `str` is longer than `len`, the return value is shortened to `len` characters.
- If `pad` is not specified, `str` will be padded to the right with space characters if it is
- a character string, and with zeros if it is a binary string.</td>
- </tr>
- <tr>
- <td>rtrim(str)</td>
- <td>Removes the trailing space characters from `str`.</td>
- </tr>
- <tr>
- <td>sentences(str[, lang, country])</td>
- <td>Splits `str` into an array of array of words.</td>
- </tr>
- <tr>
- <td>soundex(str)</td>
- <td>Returns Soundex code of the string.</td>
- </tr>
- <tr>
- <td>space(n)</td>
- <td>Returns a string consisting of `n` spaces.</td>
- </tr>
- <tr>
- <td>split(str, regex, limit)</td>
- <td>Splits `str` around occurrences that match `regex` and returns an array with a length of at most `limit`</td>
- </tr>
- <tr>
- <td>split_part(str, delimiter, partNum)</td>
- <td>Splits `str` by delimiter and return
- requested part of the split (1-based). If any input is null, returns null.
- if `partNum` is out of range of split parts, returns empty string. If `partNum` is 0,
- throws an error. If `partNum` is negative, the parts are counted backward from the
- end of the string. If the `delimiter` is an empty string, the `str` is not split.</td>
- </tr>
- <tr>
- <td>startswith(left, right)</td>
- <td>Returns a boolean. The value is True if left starts with right.
- Returns NULL if either input expression is NULL. Otherwise, returns False.
- Both left or right must be of STRING or BINARY type.</td>
- </tr>
- <tr>
- <td>substr(str, pos[, len])</td>
- <td>Returns the substring of `str` that starts at `pos` and is of length `len`, or the slice of byte array that starts at `pos` and is of length `len`.</td>
- </tr>
- <tr>
- <td> substr(str FROM pos[ FOR len]])</td>
- <td>Returns the substring of `str` that starts at `pos` and is of length `len`, or the slice of byte array that starts at `pos` and is of length `len`.</td>
- </tr>
- <tr>
- <td>substring(str, pos[, len])</td>
- <td>Returns the substring of `str` that starts at `pos` and is of length `len`, or the slice of byte array that starts at `pos` and is of length `len`.</td>
- </tr>
- <tr>
- <td> substring(str FROM pos[ FOR len]])</td>
- <td>Returns the substring of `str` that starts at `pos` and is of length `len`, or the slice of byte array that starts at `pos` and is of length `len`.</td>
- </tr>
- <tr>
- <td>substring_index(str, delim, count)</td>
- <td>Returns the substring from `str` before `count` occurrences of the delimiter `delim`.
- If `count` is positive, everything to the left of the final delimiter (counting from the
- left) is returned. If `count` is negative, everything to the right of the final delimiter
- (counting from the right) is returned. The function substring_index performs a case-sensitive match
- when searching for `delim`.</td>
- </tr>
- <tr>
- <td>to_binary(str[, fmt])</td>
- <td>Converts the input `str` to a binary value based on the supplied `fmt`.
- `fmt` can be a case-insensitive string literal of "hex", "utf-8", "utf8", or "base64".
- By default, the binary format for conversion is "hex" if `fmt` is omitted.
- The function returns NULL if at least one of the input parameters is NULL.</td>
- </tr>
- <tr>
- <td>to_char(numberExpr, formatExpr)</td>
- <td>Convert `numberExpr` to a string based on the `formatExpr`.
- Throws an exception if the conversion fails. The format can consist of the following
- characters, case insensitive:
- '0' or '9': Specifies an expected digit between 0 and 9. A sequence of 0 or 9 in the format
- string matches a sequence of digits in the input value, generating a result string of the
- same length as the corresponding sequence in the format string. The result string is
- left-padded with zeros if the 0/9 sequence comprises more digits than the matching part of
- the decimal value, starts with 0, and is before the decimal point. Otherwise, it is
- padded with spaces.
- '.' or 'D': Specifies the position of the decimal point (optional, only allowed once).
- ',' or 'G': Specifies the position of the grouping (thousands) separator (,). There must be
- a 0 or 9 to the left and right of each grouping separator.
- '$': Specifies the location of the $ currency sign. This character may only be specified
- once.
- 'S' or 'MI': Specifies the position of a '-' or '+' sign (optional, only allowed once at
- the beginning or end of the format string). Note that 'S' prints '+' for positive values
- but 'MI' prints a space.
- 'PR': Only allowed at the end of the format string; specifies that the result string will be
- wrapped by angle brackets if the input value is negative.
- ('<1>').</td>
- </tr>
- <tr>
- <td>to_number(expr, fmt)</td>
- <td>Convert string 'expr' to a number based on the string format 'fmt'.
- Throws an exception if the conversion fails. The format can consist of the following
- characters, case insensitive:
- '0' or '9': Specifies an expected digit between 0 and 9. A sequence of 0 or 9 in the format
- string matches a sequence of digits in the input string. If the 0/9 sequence starts with
- 0 and is before the decimal point, it can only match a digit sequence of the same size.
- Otherwise, if the sequence starts with 9 or is after the decimal point, it can match a
- digit sequence that has the same or smaller size.
- '.' or 'D': Specifies the position of the decimal point (optional, only allowed once).
- ',' or 'G': Specifies the position of the grouping (thousands) separator (,). There must be
- a 0 or 9 to the left and right of each grouping separator. 'expr' must match the
- grouping separator relevant for the size of the number.
- '$': Specifies the location of the $ currency sign. This character may only be specified
- once.
- 'S' or 'MI': Specifies the position of a '-' or '+' sign (optional, only allowed once at
- the beginning or end of the format string). Note that 'S' allows '-' but 'MI' does not.
- 'PR': Only allowed at the end of the format string; specifies that 'expr' indicates a
- negative number with wrapping angled brackets.
- ('<1>').</td>
- </tr>
- <tr>
- <td>to_varchar(numberExpr, formatExpr)</td>
- <td>Convert `numberExpr` to a string based on the `formatExpr`.
- Throws an exception if the conversion fails. The format can consist of the following
- characters, case insensitive:
- '0' or '9': Specifies an expected digit between 0 and 9. A sequence of 0 or 9 in the format
- string matches a sequence of digits in the input value, generating a result string of the
- same length as the corresponding sequence in the format string. The result string is
- left-padded with zeros if the 0/9 sequence comprises more digits than the matching part of
- the decimal value, starts with 0, and is before the decimal point. Otherwise, it is
- padded with spaces.
- '.' or 'D': Specifies the position of the decimal point (optional, only allowed once).
- ',' or 'G': Specifies the position of the grouping (thousands) separator (,). There must be
- a 0 or 9 to the left and right of each grouping separator.
- '$': Specifies the location of the $ currency sign. This character may only be specified
- once.
- 'S' or 'MI': Specifies the position of a '-' or '+' sign (optional, only allowed once at
- the beginning or end of the format string). Note that 'S' prints '+' for positive values
- but 'MI' prints a space.
- 'PR': Only allowed at the end of the format string; specifies that the result string will be
- wrapped by angle brackets if the input value is negative.
- ('<1>').</td>
- </tr>
- <tr>
- <td>translate(input, from, to)</td>
- <td>Translates the `input` string by replacing the characters present in the `from` string with the corresponding characters in the `to` string.</td>
- </tr>
- <tr>
- <td>trim(str)</td>
- <td>Removes the leading and trailing space characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(BOTH FROM str)</td>
- <td>Removes the leading and trailing space characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(LEADING FROM str)</td>
- <td>Removes the leading space characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(TRAILING FROM str)</td>
- <td>Removes the trailing space characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(trimStr FROM str)</td>
- <td>Remove the leading and trailing `trimStr` characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(BOTH trimStr FROM str)</td>
- <td>Remove the leading and trailing `trimStr` characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(LEADING trimStr FROM str)</td>
- <td>Remove the leading `trimStr` characters from `str`.</td>
- </tr>
- <tr>
- <td> trim(TRAILING trimStr FROM str)</td>
- <td>Remove the trailing `trimStr` characters from `str`.</td>
- </tr>
- <tr>
- <td>try_to_binary(str[, fmt])</td>
- <td>This is a special version of `to_binary` that performs the same operation, but returns a NULL value instead of raising an error if the conversion cannot be performed.</td>
- </tr>
- <tr>
- <td>try_to_number(expr, fmt)</td>
- <td>Convert string 'expr' to a number based on the string format `fmt`.
- Returns NULL if the string 'expr' does not match the expected format. The format follows the
- same semantics as the to_number function.</td>
- </tr>
- <tr>
- <td>ucase(str)</td>
- <td>Returns `str` with all characters changed to uppercase.</td>
- </tr>
- <tr>
- <td>unbase64(str)</td>
- <td>Converts the argument from a base 64 string `str` to a binary.</td>
- </tr>
- <tr>
- <td>upper(str)</td>
- <td>Returns `str` with all characters changed to uppercase.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-7">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- ascii</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ascii</span><span class="p">(</span><span class="s1">'222'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="n">ascii</span><span class="p">(</span><span class="mi">222</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">50</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ascii</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="n">ascii</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">50</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- base64</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">U3BhcmsgU1FM</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">U3BhcmsgU1FM</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="c1">-- bit_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">bit_length</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="k">bit_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">72</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">bit_length</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="k">bit_length</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">72</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- btrim</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">btrim</span><span class="p">(</span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">btrim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">btrim</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">' SparkSQL '</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">btrim</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">btrim</span><span class="p">(</span><span class="s1">'SSparkSQLS'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">btrim</span><span class="p">(</span><span class="n">SSparkSQLS</span><span class="p">,</span><span class="w"> </span><span class="n">SL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">parkSQ</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">btrim</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'SSparkSQLS'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'SL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="n">btrim</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">SSparkSQLS</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="n">SL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">parkSQ</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-
-<span class="c1">-- char</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="nb">char</span><span class="p">(</span><span class="mi">65</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="nb">char</span><span class="p">(</span><span class="mi">65</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="c1">-- char_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">char_length</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">char_length</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHAR_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHARACTER_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- character_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">character_length</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">character_length</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHAR_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHARACTER_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- chr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">chr</span><span class="p">(</span><span class="mi">65</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="n">chr</span><span class="p">(</span><span class="mi">65</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- concat_ws</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">concat_ws</span><span class="p">(</span><span class="s1">' '</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">concat_ws</span><span class="p">(</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">concat_ws</span><span class="p">(</span><span class="s1">'s'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">concat_ws</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">concat_ws</span><span class="p">(</span><span class="s1">'/'</span><span class="p">,</span><span class="w"> </span><span class="s1">'foo'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="s1">'bar'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">concat_ws</span><span class="p">(</span><span class="o">/</span><span class="p">,</span><span class="w"> </span><span class="n">foo</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">bar</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">foo</span><span class="o">/</span><span class="n">bar</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">concat_ws</span><span class="p">(</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">concat_ws</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- contains</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">contains</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="k">contains</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">contains</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SPARK'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="k">contains</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">SPARK</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">contains</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="k">contains</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">contains</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="s1">'537061726b'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="k">contains</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'537061726B'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="c1">-- decode</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">),</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">abc</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'Southlake'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'San Francisco'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'New Jersey'</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="s1">'Seattle'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Non domestic'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Southlake</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">San</span><span class="w"> </span><span class="n">Francisco</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">New</span><span class="w"> </span><span class="n">Jersey</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">Seattle</span><span class="p">,</span><span class="w"> </span><span class="n">Non</span><span class="w"> </span><span class="n">domestic</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">San</span><span class="w"> </span><span class="n">Francisco</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'Southlake'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'San Francisco'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'New Jersey'</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="s1">'Seattle'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Non domestic'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Southlake</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">San</span><span class="w"> </span><span class="n">Francisco</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">New</span><span class="w"> </span><span class="n">Jersey</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">Seattle</span><span class="p">,</span><span class="w"> </span><span class="n">Non</span><span class="w"> </span><span class="n">domestic</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Non</span><span class="w"> </span><span class="n">domestic</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'Southlake'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'San Francisco'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'New Jersey'</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="s1">'Seattle'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Southlake</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">San</span><span class="w"> </span><span class="n">Francisco</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="k">New</span><span class="w"> </span><span class="n">Jersey</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">Seattle</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">decode</span><span class="p">(</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="s1">'rocks'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">decode</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">rocks</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="c1">-- elt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">elt</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'scala'</span><span class="p">,</span><span class="w"> </span><span class="s1">'java'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">elt</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">scala</span><span class="p">,</span><span class="w"> </span><span class="n">java</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">scala</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">elt</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">elt</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- encode</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">encode</span><span class="p">(</span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">61</span><span class="w"> </span><span class="mi">62</span><span class="w"> </span><span class="mi">63</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- endswith</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">endswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">endswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">endswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">endswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">endswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">endswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">endswith</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="s1">'537061726b'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">endswith</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'537061726B'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">endswith</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="s1">'53514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="n">endswith</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'53514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------+</span>
-
-<span class="c1">-- find_in_set</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">find_in_set</span><span class="p">(</span><span class="s1">'ab'</span><span class="p">,</span><span class="s1">'abc,b,ab,c,def'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">find_in_set</span><span class="p">(</span><span class="n">ab</span><span class="p">,</span><span class="w"> </span><span class="n">abc</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">ab</span><span class="p">,</span><span class="k">c</span><span class="p">,</span><span class="n">def</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- format_number</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">format_number</span><span class="p">(</span><span class="mi">12332</span><span class="p">.</span><span class="mi">123456</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="n">format_number</span><span class="p">(</span><span class="mi">12332</span><span class="p">.</span><span class="mi">123456</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="mi">332</span><span class="p">.</span><span class="mi">1235</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">format_number</span><span class="p">(</span><span class="mi">12332</span><span class="p">.</span><span class="mi">123456</span><span class="p">,</span><span class="w"> </span><span class="s1">'##################.###'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="n">format_number</span><span class="p">(</span><span class="mi">12332</span><span class="p">.</span><span class="mi">123456</span><span class="p">,</span><span class="w"> </span><span class="o">##################</span><span class="p">.</span><span class="o">###</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12332</span><span class="p">.</span><span class="mi">123</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------+</span>
-
-<span class="c1">-- format_string</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">format_string</span><span class="p">(</span><span class="ss">"Hello World %d %s"</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="ss">"days"</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="n">format_string</span><span class="p">(</span><span class="n">Hello</span><span class="w"> </span><span class="n">World</span><span class="w"> </span><span class="o">%</span><span class="n">d</span><span class="w"> </span><span class="o">%</span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="n">days</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Hello</span><span class="w"> </span><span class="n">World</span><span class="w"> </span><span class="mi">100</span><span class="w"> </span><span class="n">days</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------+</span>
-
-<span class="c1">-- initcap</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">initcap</span><span class="p">(</span><span class="s1">'sPark sql'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">initcap</span><span class="p">(</span><span class="n">sPark</span><span class="w"> </span><span class="k">sql</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark</span><span class="w"> </span><span class="k">Sql</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- instr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">instr</span><span class="p">(</span><span class="s1">'SparkSQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">instr</span><span class="p">(</span><span class="n">SparkSQL</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- lcase</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">lcase</span><span class="p">(</span><span class="s1">'SparkSql'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">lcase</span><span class="p">(</span><span class="n">SparkSql</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">sparksql</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- left</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">left</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="k">left</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spa</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">left</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="k">left</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- len</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">len</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">len</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">len</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">len</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHAR_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHARACTER_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">length</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="k">length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">length</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="k">length</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHAR_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">char_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CHARACTER_LENGTH</span><span class="p">(</span><span class="s1">'Spark SQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">character_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- levenshtein</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">levenshtein</span><span class="p">(</span><span class="s1">'kitten'</span><span class="p">,</span><span class="w"> </span><span class="s1">'sitting'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">levenshtein</span><span class="p">(</span><span class="n">kitten</span><span class="p">,</span><span class="w"> </span><span class="n">sitting</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">levenshtein</span><span class="p">(</span><span class="s1">'kitten'</span><span class="p">,</span><span class="w"> </span><span class="s1">'sitting'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">levenshtein</span><span class="p">(</span><span class="n">kitten</span><span class="p">,</span><span class="w"> </span><span class="n">sitting</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- locate</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">locate</span><span class="p">(</span><span class="s1">'bar'</span><span class="p">,</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">locate</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">locate</span><span class="p">(</span><span class="s1">'bar'</span><span class="p">,</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">locate</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">POSITION</span><span class="p">(</span><span class="s1">'bar'</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">locate</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- lower</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">lower</span><span class="p">(</span><span class="s1">'SparkSql'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="k">lower</span><span class="p">(</span><span class="n">SparkSql</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">sparksql</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- lpad</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">lpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="s1">'??'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">lpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="o">??</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">???</span><span class="n">hi</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">lpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'??'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">lpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="o">??</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">h</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">lpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">lpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hi</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">lpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'aabb'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">lpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="n">aabb</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'00'</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">000000</span><span class="n">AABB</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">lpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'aabb'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="s1">'1122'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">lpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="n">aabb</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="mi">1122</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">112211</span><span class="n">AABB</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- ltrim</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ltrim</span><span class="p">(</span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">ltrim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- luhn_check</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">luhn_check</span><span class="p">(</span><span class="s1">'8112189876'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">luhn_check</span><span class="p">(</span><span class="mi">8112189876</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">luhn_check</span><span class="p">(</span><span class="s1">'79927398713'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">luhn_check</span><span class="p">(</span><span class="mi">79927398713</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">luhn_check</span><span class="p">(</span><span class="s1">'79927398714'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">luhn_check</span><span class="p">(</span><span class="mi">79927398714</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- mask</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'abcd-EFGH-8765-4321'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">abcd</span><span class="o">-</span><span class="n">EFGH</span><span class="o">-</span><span class="mi">8765</span><span class="o">-</span><span class="mi">4321</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">xxxx</span><span class="o">-</span><span class="n">XXXX</span><span class="o">-</span><span class="n">nnnn</span><span class="o">-</span><span class="n">nnnn</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'abcd-EFGH-8765-4321'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">abcd</span><span class="o">-</span><span class="n">EFGH</span><span class="o">-</span><span class="mi">8765</span><span class="o">-</span><span class="mi">4321</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">xxxx</span><span class="o">-</span><span class="n">QQQQ</span><span class="o">-</span><span class="n">nnnn</span><span class="o">-</span><span class="n">nnnn</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'q'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">QqQQnnn</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">XxXXnnn</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">QxQQnnn</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'q'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">QqQQnnn</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">QqQQddd</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="s1">'o'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">QqQQdddoooo</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'q'</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="s1">'o'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AqCDdddoooo</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'d'</span><span class="p">,</span><span class="w"> </span><span class="s1">'o'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AbCDdddoooo</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'o'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AbCD123oooo</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'o'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">mask</span><span class="p">(</span><span class="s1">'AbCD123-@$#'</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="n">mask</span><span class="p">(</span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AbCD123</span><span class="o">-@</span><span class="err">$</span><span class="o">#|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------+</span>
-
-<span class="c1">-- octet_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">octet_length</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">octet_length</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">octet_length</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">octet_length</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">9</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="c1">-- overlay</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="s1">'_'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark_SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="s1">'CORE'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">7</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">CORE</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark</span><span class="w"> </span><span class="n">CORE</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="s1">'ANSI '</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">ANSI</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Spark</span><span class="w"> </span><span class="n">ANSI</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="s1">'tructured'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">tructured</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Structured</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'_'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">5</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'CORE'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">7</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="n">CORE</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'ANSI '</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="n">ANSI</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">PLACING</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="s1">'tructured'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">overlay</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="n">encode</span><span class="p">(</span><span class="n">tructured</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">74</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">75</span><span class="w"> </span><span class="mi">63</span><span class="w"> </span><span class="mi">7</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------+</span>
-
-<span class="c1">-- position</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">position</span><span class="p">(</span><span class="s1">'bar'</span><span class="p">,</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="k">position</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">position</span><span class="p">(</span><span class="s1">'bar'</span><span class="p">,</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="k">position</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">POSITION</span><span class="p">(</span><span class="s1">'bar'</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="s1">'foobarbar'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">locate</span><span class="p">(</span><span class="n">bar</span><span class="p">,</span><span class="w"> </span><span class="n">foobarbar</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- printf</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="ss">"Hello World %d %s"</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="ss">"days"</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="n">printf</span><span class="p">(</span><span class="n">Hello</span><span class="w"> </span><span class="n">World</span><span class="w"> </span><span class="o">%</span><span class="n">d</span><span class="w"> </span><span class="o">%</span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="n">days</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Hello</span><span class="w"> </span><span class="n">World</span><span class="w"> </span><span class="mi">100</span><span class="w"> </span><span class="n">days</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="c1">-- regexp_count</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_count</span><span class="p">(</span><span class="s1">'Steven Jones and Stephen Smith are the best players'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Ste(v|ph)en'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_count</span><span class="p">(</span><span class="n">Steven</span><span class="w"> </span><span class="n">Jones</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">Stephen</span><span class="w"> </span><span class="n">Smith</span><span class="w"> </span><span class="k">are</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">best</span><span class="w"> </span><span class="n">players</span><span class="p">,</span><span class="w"> </span><span class="n">Ste</span><span class="p">(</span><span class="n">v</span><span class="o">|</span><span class="n">ph</span><span class="p">)</span><span class="n">en</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_count</span><span class="p">(</span><span class="s1">'abcdefghijklmnopqrstuvwxyz'</span><span class="p">,</span><span class="w"> </span><span class="s1">'[a-z]{3}'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_count</span><span class="p">(</span><span class="n">abcdefghijklmnopqrstuvwxyz</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">a</span><span class="o">-</span><span class="n">z</span><span class="p">]</span><span class="err">{</span><span class="mi">3</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-
-<span class="c1">-- regexp_extract</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_extract</span><span class="p">(</span><span class="s1">'100-200'</span><span class="p">,</span><span class="w"> </span><span class="s1">'(\\d+)-(\\d+)'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_extract</span><span class="p">(</span><span class="mi">100</span><span class="o">-</span><span class="mi">200</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="p">)</span><span class="o">-</span><span class="p">(</span><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">100</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="c1">-- regexp_extract_all</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_extract_all</span><span class="p">(</span><span class="s1">'100-200, 300-400'</span><span class="p">,</span><span class="w"> </span><span class="s1">'(\\d+)-(\\d+)'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_extract_all</span><span class="p">(</span><span class="mi">100</span><span class="o">-</span><span class="mi">200</span><span class="p">,</span><span class="w"> </span><span class="mi">300</span><span class="o">-</span><span class="mi">400</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="p">)</span><span class="o">-</span><span class="p">(</span><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="mi">300</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------+</span>
-
-<span class="c1">-- regexp_instr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_instr</span><span class="p">(</span><span class="s1">'user@spark.apache.org'</span><span class="p">,</span><span class="w"> </span><span class="s1">'@[^.]*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_instr</span><span class="p">(</span><span class="k">user</span><span class="o">@</span><span class="n">spark</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="p">,</span><span class="w"> </span><span class="o">@</span><span class="p">[</span><span class="o">^</span><span class="p">.]</span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------+</span>
-
-<span class="c1">-- regexp_replace</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_replace</span><span class="p">(</span><span class="s1">'100-200'</span><span class="p">,</span><span class="w"> </span><span class="s1">'(\\d+)'</span><span class="p">,</span><span class="w"> </span><span class="s1">'num'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_replace</span><span class="p">(</span><span class="mi">100</span><span class="o">-</span><span class="mi">200</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="p">),</span><span class="w"> </span><span class="n">num</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">num</span><span class="o">-</span><span class="n">num</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- regexp_substr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_substr</span><span class="p">(</span><span class="s1">'Steven Jones and Stephen Smith are the best players'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Ste(v|ph)en'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_substr</span><span class="p">(</span><span class="n">Steven</span><span class="w"> </span><span class="n">Jones</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">Stephen</span><span class="w"> </span><span class="n">Smith</span><span class="w"> </span><span class="k">are</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">best</span><span class="w"> </span><span class="n">players</span><span class="p">,</span><span class="w"> </span><span class="n">Ste</span><span class="p">(</span><span class="n">v</span><span class="o">|</span><span class="n">ph</span><span class="p">)</span><span class="n">en</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Steven</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_substr</span><span class="p">(</span><span class="s1">'Steven Jones and Stephen Smith are the best players'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Jeck'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">regexp_substr</span><span class="p">(</span><span class="n">Steven</span><span class="w"> </span><span class="n">Jones</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">Stephen</span><span class="w"> </span><span class="n">Smith</span><span class="w"> </span><span class="k">are</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">best</span><span class="w"> </span><span class="n">players</span><span class="p">,</span><span class="w"> </span><span class="n">Jeck</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------+</span>
-
-<span class="c1">-- repeat</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">repeat</span><span class="p">(</span><span class="s1">'123'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">repeat</span><span class="p">(</span><span class="mi">123</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">123123</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- replace</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">replace</span><span class="p">(</span><span class="s1">'ABCabc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEF'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="k">replace</span><span class="p">(</span><span class="n">ABCabc</span><span class="p">,</span><span class="w"> </span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">DEF</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">ABCDEF</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- right</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">right</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="k">right</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- rpad</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="s1">'??'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">rpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="o">??</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hi</span><span class="o">???|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'??'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">rpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="o">??</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">h</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rpad</span><span class="p">(</span><span class="s1">'hi'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">rpad</span><span class="p">(</span><span class="n">hi</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">hi</span><span class="w"> </span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">rpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'aabb'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">rpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="n">aabb</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'00'</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AABB000000</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">rpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'aabb'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="s1">'1122'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">rpad</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="n">aabb</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="mi">1122</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AABB112211</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- rtrim</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rtrim</span><span class="p">(</span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">rtrim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- sentences</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">sentences</span><span class="p">(</span><span class="s1">'Hi there! Good morning.'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="n">sentences</span><span class="p">(</span><span class="n">Hi</span><span class="w"> </span><span class="n">there</span><span class="o">!</span><span class="w"> </span><span class="n">Good</span><span class="w"> </span><span class="n">morning</span><span class="p">.,</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[[</span><span class="n">Hi</span><span class="p">,</span><span class="w"> </span><span class="n">there</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="k">Go</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------+</span>
-
-<span class="c1">-- soundex</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">soundex</span><span class="p">(</span><span class="s1">'Miller'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">soundex</span><span class="p">(</span><span class="n">Miller</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">M460</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- space</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">concat</span><span class="p">(</span><span class="k">space</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="s1">'1'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">concat</span><span class="p">(</span><span class="k">space</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- split</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">split</span><span class="p">(</span><span class="s1">'oneAtwoBthreeC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'[ABC]'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">split</span><span class="p">(</span><span class="n">oneAtwoBthreeC</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">ABC</span><span class="p">],</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">one</span><span class="p">,</span><span class="w"> </span><span class="n">two</span><span class="p">,</span><span class="w"> </span><span class="n">three</span><span class="p">,</span><span class="w"> </span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">split</span><span class="p">(</span><span class="s1">'oneAtwoBthreeC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'[ABC]'</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">split</span><span class="p">(</span><span class="n">oneAtwoBthreeC</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">ABC</span><span class="p">],</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">one</span><span class="p">,</span><span class="w"> </span><span class="n">two</span><span class="p">,</span><span class="w"> </span><span class="n">three</span><span class="p">,</span><span class="w"> </span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">split</span><span class="p">(</span><span class="s1">'oneAtwoBthreeC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'[ABC]'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">split</span><span class="p">(</span><span class="n">oneAtwoBthreeC</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">ABC</span><span class="p">],</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="n">one</span><span class="p">,</span><span class="w"> </span><span class="n">twoBthreeC</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- split_part</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">split_part</span><span class="p">(</span><span class="s1">'11.12.13'</span><span class="p">,</span><span class="w"> </span><span class="s1">'.'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">split_part</span><span class="p">(</span><span class="mi">11</span><span class="p">.</span><span class="mi">12</span><span class="p">.</span><span class="mi">13</span><span class="p">,</span><span class="w"> </span><span class="p">.,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">13</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="c1">-- startswith</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">startswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Spark'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">startswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">Spark</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">startswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'SQL'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">startswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="k">SQL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">startswith</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="n">startswith</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">startswith</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="s1">'537061726b'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="n">startswith</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'537061726B'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">startswith</span><span class="p">(</span><span class="n">x</span><span class="s1">'537061726b2053514c'</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="s1">'53514c'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">startswith</span><span class="p">(</span><span class="n">X</span><span class="s1">'537061726B2053514C'</span><span class="p">,</span><span class="w"> </span><span class="n">X</span><span class="s1">'53514C'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- substr</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">substr</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">substr</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">substr</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="n">substr</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">20</span><span class="w"> </span><span class="mi">53</span><span class="w"> </span><span class="mi">51</span><span class="w"> </span><span class="mi">4</span><span class="k">C</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
-
-<span class="c1">-- substring</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">SQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">k</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">substring</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="k">substring</span><span class="p">(</span><span class="n">encode</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">),</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2147483647</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">20</span><span class="w"> </span><span class="mi">53</span><span class="w"> </span><span class="mi">51</span><span class="w"> </span><span class="mi">4</span><span class="k">C</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-
-<span class="c1">-- substring_index</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">substring_index</span><span class="p">(</span><span class="s1">'www.apache.org'</span><span class="p">,</span><span class="w"> </span><span class="s1">'.'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="n">substring_index</span><span class="p">(</span><span class="n">www</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="p">,</span><span class="w"> </span><span class="p">.,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">www</span><span class="p">.</span><span class="n">apache</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------+</span>
-
-<span class="c1">-- to_binary</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_binary</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">to_binary</span><span class="p">(</span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">61</span><span class="w"> </span><span class="mi">62</span><span class="w"> </span><span class="mi">63</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="c1">-- to_char</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="s1">'999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="s1">'000D00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">000</span><span class="n">D00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_char</span><span class="p">(</span><span class="mi">12454</span><span class="p">,</span><span class="w"> </span><span class="s1">'99G999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">12454</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="n">G999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_char</span><span class="p">(</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="s1">'$99.99'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">99</span><span class="p">.</span><span class="mi">99</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">$</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_char</span><span class="p">(</span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="s1">'99G999D9S'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="n">G999D9S</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">.</span><span class="mi">8</span><span class="o">-|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- to_number</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_number</span><span class="p">(</span><span class="s1">'454'</span><span class="p">,</span><span class="w"> </span><span class="s1">'999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">to_number</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_number</span><span class="p">(</span><span class="s1">'454.00'</span><span class="p">,</span><span class="w"> </span><span class="s1">'000.00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">to_number</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">000</span><span class="p">.</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_number</span><span class="p">(</span><span class="s1">'12,454'</span><span class="p">,</span><span class="w"> </span><span class="s1">'99,999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">to_number</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_number</span><span class="p">(</span><span class="s1">'$78.12'</span><span class="p">,</span><span class="w"> </span><span class="s1">'$99.99'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">to_number</span><span class="p">(</span><span class="err">$</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">99</span><span class="p">.</span><span class="mi">99</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_number</span><span class="p">(</span><span class="s1">'12,454.8-'</span><span class="p">,</span><span class="w"> </span><span class="s1">'99,999.9S'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">to_number</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">.</span><span class="mi">8</span><span class="o">-</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="mi">999</span><span class="p">.</span><span class="mi">9</span><span class="n">S</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- to_varchar</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_varchar</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="s1">'999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_varchar</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="s1">'000D00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">000</span><span class="n">D00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_varchar</span><span class="p">(</span><span class="mi">12454</span><span class="p">,</span><span class="w"> </span><span class="s1">'99G999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">12454</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="n">G999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_varchar</span><span class="p">(</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="s1">'$99.99'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">99</span><span class="p">.</span><span class="mi">99</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">$</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_varchar</span><span class="p">(</span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="s1">'99G999D9S'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="n">to_char</span><span class="p">(</span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="n">G999D9S</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">.</span><span class="mi">8</span><span class="o">-|</span>
-<span class="o">+</span><span class="c1">----------------------------+</span>
-
-<span class="c1">-- translate</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">translate</span><span class="p">(</span><span class="s1">'AaBbCc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'123'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="k">translate</span><span class="p">(</span><span class="n">AaBbCc</span><span class="p">,</span><span class="w"> </span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="mi">123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">A1B2C3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------+</span>
-
-<span class="c1">-- trim</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="k">trim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">BOTH</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="k">trim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">LEADING</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">ltrim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">TRAILING</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">' SparkSQL '</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">rtrim</span><span class="p">(</span><span class="w"> </span><span class="n">SparkSQL</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SparkSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="s1">'SL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">'SSparkSQLS'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="k">TRIM</span><span class="p">(</span><span class="k">BOTH</span><span class="w"> </span><span class="n">SL</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">SSparkSQLS</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">parkSQ</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">BOTH</span><span class="w"> </span><span class="s1">'SL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">'SSparkSQLS'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="k">TRIM</span><span class="p">(</span><span class="k">BOTH</span><span class="w"> </span><span class="n">SL</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">SSparkSQLS</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">parkSQ</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">LEADING</span><span class="w"> </span><span class="s1">'SL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">'SSparkSQLS'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="k">TRIM</span><span class="p">(</span><span class="k">LEADING</span><span class="w"> </span><span class="n">SL</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">SSparkSQLS</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">parkSQLS</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">trim</span><span class="p">(</span><span class="k">TRAILING</span><span class="w"> </span><span class="s1">'SL'</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="s1">'SSparkSQLS'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="k">TRIM</span><span class="p">(</span><span class="k">TRAILING</span><span class="w"> </span><span class="n">SL</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">SSparkSQLS</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SSparkSQ</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- try_to_binary</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_binary</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'utf-8'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">try_to_binary</span><span class="p">(</span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">61</span><span class="w"> </span><span class="mi">62</span><span class="w"> </span><span class="mi">63</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">select</span><span class="w"> </span><span class="n">try_to_binary</span><span class="p">(</span><span class="s1">'a!'</span><span class="p">,</span><span class="w"> </span><span class="s1">'base64'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">try_to_binary</span><span class="p">(</span><span class="n">a</span><span class="o">!</span><span class="p">,</span><span class="w"> </span><span class="n">base64</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">select</span><span class="w"> </span><span class="n">try_to_binary</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">,</span><span class="w"> </span><span class="s1">'invalidFormat'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="n">try_to_binary</span><span class="p">(</span><span class="n">abc</span><span class="p">,</span><span class="w"> </span><span class="n">invalidFormat</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------+</span>
-
-<span class="c1">-- try_to_number</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_number</span><span class="p">(</span><span class="s1">'454'</span><span class="p">,</span><span class="w"> </span><span class="s1">'999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">try_to_number</span><span class="p">(</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_number</span><span class="p">(</span><span class="s1">'454.00'</span><span class="p">,</span><span class="w"> </span><span class="s1">'000.00'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">try_to_number</span><span class="p">(</span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="p">,</span><span class="w"> </span><span class="mi">000</span><span class="p">.</span><span class="mi">00</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">454</span><span class="p">.</span><span class="mi">00</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_number</span><span class="p">(</span><span class="s1">'12,454'</span><span class="p">,</span><span class="w"> </span><span class="s1">'99,999'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">try_to_number</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="mi">999</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">12454</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_number</span><span class="p">(</span><span class="s1">'$78.12'</span><span class="p">,</span><span class="w"> </span><span class="s1">'$99.99'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">try_to_number</span><span class="p">(</span><span class="err">$</span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">99</span><span class="p">.</span><span class="mi">99</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">78</span><span class="p">.</span><span class="mi">12</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_to_number</span><span class="p">(</span><span class="s1">'12,454.8-'</span><span class="p">,</span><span class="w"> </span><span class="s1">'99,999.9S'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">try_to_number</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span><span class="mi">454</span><span class="p">.</span><span class="mi">8</span><span class="o">-</span><span class="p">,</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="mi">999</span><span class="p">.</span><span class="mi">9</span><span class="n">S</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">12454</span><span class="p">.</span><span class="mi">8</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="c1">-- ucase</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ucase</span><span class="p">(</span><span class="s1">'SparkSql'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="n">ucase</span><span class="p">(</span><span class="n">SparkSql</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SPARKSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- unbase64</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">unbase64</span><span class="p">(</span><span class="s1">'U3BhcmsgU1FM'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">unbase64</span><span class="p">(</span><span class="n">U3BhcmsgU1FM</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- upper</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">upper</span><span class="p">(</span><span class="s1">'SparkSql'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="k">upper</span><span class="p">(</span><span class="n">SparkSql</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">SPARKSQL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-</code></pre></div>
-
-<h3 id="conditional-functions">Conditional Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>coalesce(expr1, expr2, ...)</td>
- <td>Returns the first non-null argument if exists. Otherwise, null.</td>
- </tr>
- <tr>
- <td>if(expr1, expr2, expr3)</td>
- <td>If `expr1` evaluates to true, then returns `expr2`; otherwise returns `expr3`.</td>
- </tr>
- <tr>
- <td>ifnull(expr1, expr2)</td>
- <td>Returns `expr2` if `expr1` is null, or `expr1` otherwise.</td>
- </tr>
- <tr>
- <td>nanvl(expr1, expr2)</td>
- <td>Returns `expr1` if it's not NaN, or `expr2` otherwise.</td>
- </tr>
- <tr>
- <td>nullif(expr1, expr2)</td>
- <td>Returns null if `expr1` equals to `expr2`, or `expr1` otherwise.</td>
- </tr>
- <tr>
- <td>nvl(expr1, expr2)</td>
- <td>Returns `expr2` if `expr1` is null, or `expr1` otherwise.</td>
- </tr>
- <tr>
- <td>nvl2(expr1, expr2, expr3)</td>
- <td>Returns `expr2` if `expr1` is not null, or `expr3` otherwise.</td>
- </tr>
- <tr>
- <td>CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4]* [ELSE expr5] END</td>
- <td>When `expr1` = true, returns `expr2`; else when `expr3` = true, returns `expr4`; else returns `expr5`.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-8">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- coalesce</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">coalesce</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="k">coalesce</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- if</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">if</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">IF</span><span class="p">((</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- ifnull</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">ifnull</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="s1">'2'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">ifnull</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- nanvl</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">nanvl</span><span class="p">(</span><span class="k">cast</span><span class="p">(</span><span class="s1">'NaN'</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">double</span><span class="p">),</span><span class="w"> </span><span class="mi">123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="n">nanvl</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="n">NaN</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">DOUBLE</span><span class="p">),</span><span class="w"> </span><span class="mi">123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">123</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------+</span>
-
-<span class="c1">-- nullif</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">nullif</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="k">nullif</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- nvl</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">nvl</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="s1">'2'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">nvl</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- nvl2</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">nvl2</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">nvl2</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- when</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">ELSE</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="w"> </span><span class="k">END</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">ELSE</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="w"> </span><span class="k">END</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">ELSE</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="w"> </span><span class="k">END</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">ELSE</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="w"> </span><span class="k">END</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">END</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="k">CASE</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="k">END</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="bitwise-functions">Bitwise Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>expr1 & expr2</td>
- <td>Returns the result of bitwise AND of `expr1` and `expr2`.</td>
- </tr>
- <tr>
- <td>expr1 ^ expr2</td>
- <td>Returns the result of bitwise exclusive OR of `expr1` and `expr2`.</td>
- </tr>
- <tr>
- <td>bit_count(expr)</td>
- <td>Returns the number of bits that are set in the argument expr as an unsigned 64-bit integer, or NULL if the argument is NULL.</td>
- </tr>
- <tr>
- <td>bit_get(expr, pos)</td>
- <td>Returns the value of the bit (0 or 1) at the specified position.
- The positions are numbered from right to left, starting at zero.
- The position argument cannot be negative.</td>
- </tr>
- <tr>
- <td>getbit(expr, pos)</td>
- <td>Returns the value of the bit (0 or 1) at the specified position.
- The positions are numbered from right to left, starting at zero.
- The position argument cannot be negative.</td>
- </tr>
- <tr>
- <td>shiftright(base, expr)</td>
- <td>Bitwise (signed) right shift.</td>
- </tr>
- <tr>
- <td>shiftrightunsigned(base, expr)</td>
- <td>Bitwise unsigned right shift.</td>
- </tr>
- <tr>
- <td>expr1 | expr2</td>
- <td>Returns the result of bitwise OR of `expr1` and `expr2`.</td>
- </tr>
- <tr>
- <td>~ expr</td>
- <td>Returns the result of bitwise NOT of `expr`.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-9">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- &</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- ^</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- bit_count</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_count</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="n">bit_count</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="c1">-- bit_get</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_get</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">bit_get</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bit_get</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="n">bit_get</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- getbit</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">getbit</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">getbit</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">getbit</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="n">getbit</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- shiftright</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">shiftright</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">shiftright</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- shiftrightunsigned</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">shiftrightunsigned</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">shiftrightunsigned</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- |</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">7</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="c1">-- ~</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">~</span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-</code></pre></div>
-
-<h3 id="conversion-functions">Conversion Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>bigint(expr)</td>
- <td>Casts the value `expr` to the target data type `bigint`.</td>
- </tr>
- <tr>
- <td>binary(expr)</td>
- <td>Casts the value `expr` to the target data type `binary`.</td>
- </tr>
- <tr>
- <td>boolean(expr)</td>
- <td>Casts the value `expr` to the target data type `boolean`.</td>
- </tr>
- <tr>
- <td>cast(expr AS type)</td>
- <td>Casts the value `expr` to the target data type `type`.</td>
- </tr>
- <tr>
- <td>date(expr)</td>
- <td>Casts the value `expr` to the target data type `date`.</td>
- </tr>
- <tr>
- <td>decimal(expr)</td>
- <td>Casts the value `expr` to the target data type `decimal`.</td>
- </tr>
- <tr>
- <td>double(expr)</td>
- <td>Casts the value `expr` to the target data type `double`.</td>
- </tr>
- <tr>
- <td>float(expr)</td>
- <td>Casts the value `expr` to the target data type `float`.</td>
- </tr>
- <tr>
- <td>int(expr)</td>
- <td>Casts the value `expr` to the target data type `int`.</td>
- </tr>
- <tr>
- <td>smallint(expr)</td>
- <td>Casts the value `expr` to the target data type `smallint`.</td>
- </tr>
- <tr>
- <td>string(expr)</td>
- <td>Casts the value `expr` to the target data type `string`.</td>
- </tr>
- <tr>
- <td>timestamp(expr)</td>
- <td>Casts the value `expr` to the target data type `timestamp`.</td>
- </tr>
- <tr>
- <td>tinyint(expr)</td>
- <td>Casts the value `expr` to the target data type `tinyint`.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-10">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- cast</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">cast</span><span class="p">(</span><span class="s1">'10'</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="k">CAST</span><span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">INT</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-</code></pre></div>
-
-<h3 id="predicate-functions">Predicate Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>! expr</td>
- <td>Logical not.</td>
- </tr>
- <tr>
- <td>expr1 < expr2</td>
- <td>Returns true if `expr1` is less than `expr2`.</td>
- </tr>
- <tr>
- <td>expr1 <= expr2</td>
- <td>Returns true if `expr1` is less than or equal to `expr2`.</td>
- </tr>
- <tr>
- <td>expr1 <=> expr2</td>
- <td>Returns same result as the EQUAL(=) operator for non-null operands,
- but returns true if both are null, false if one of the them is null.</td>
- </tr>
- <tr>
- <td>expr1 = expr2</td>
- <td>Returns true if `expr1` equals `expr2`, or false otherwise.</td>
- </tr>
- <tr>
- <td>expr1 == expr2</td>
- <td>Returns true if `expr1` equals `expr2`, or false otherwise.</td>
- </tr>
- <tr>
- <td>expr1 > expr2</td>
- <td>Returns true if `expr1` is greater than `expr2`.</td>
- </tr>
- <tr>
- <td>expr1 >= expr2</td>
- <td>Returns true if `expr1` is greater than or equal to `expr2`.</td>
- </tr>
- <tr>
- <td>expr1 and expr2</td>
- <td>Logical AND.</td>
- </tr>
- <tr>
- <td>str ilike pattern[ ESCAPE escape]</td>
- <td>Returns true if str matches `pattern` with `escape` case-insensitively, null if any arguments are null, false otherwise.</td>
- </tr>
- <tr>
- <td>expr1 in(expr2, expr3, ...)</td>
- <td>Returns true if `expr` equals to any valN.</td>
- </tr>
- <tr>
- <td>isnan(expr)</td>
- <td>Returns true if `expr` is NaN, or false otherwise.</td>
- </tr>
- <tr>
- <td>isnotnull(expr)</td>
- <td>Returns true if `expr` is not null, or false otherwise.</td>
- </tr>
- <tr>
- <td>isnull(expr)</td>
- <td>Returns true if `expr` is null, or false otherwise.</td>
- </tr>
- <tr>
- <td>str like pattern[ ESCAPE escape]</td>
- <td>Returns true if str matches `pattern` with `escape`, null if any arguments are null, false otherwise.</td>
- </tr>
- <tr>
- <td>not expr</td>
- <td>Logical not.</td>
- </tr>
- <tr>
- <td>expr1 or expr2</td>
- <td>Logical OR.</td>
- </tr>
- <tr>
- <td>regexp(str, regexp)</td>
- <td>Returns true if `str` matches `regexp`, or false otherwise.</td>
- </tr>
- <tr>
- <td>regexp_like(str, regexp)</td>
- <td>Returns true if `str` matches `regexp`, or false otherwise.</td>
- </tr>
- <tr>
- <td>rlike(str, regexp)</td>
- <td>Returns true if `str` matches `regexp`, or false otherwise.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-11">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- !</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="o">!</span><span class="w"> </span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">!</span><span class="w"> </span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">!</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- <</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="s1">'1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-08-01 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- <=</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="s1">'1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-08-01 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- <=></span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="s1">'1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NULL</span><span class="w"> </span><span class="o"><=></span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- =</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NULL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- ==</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NULL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+</span>
-
-<span class="c1">-- ></span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="mi">1</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-08-01 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- >=</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="s1">'2.1'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">2</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-07-30 04:17:52'</span><span class="p">)</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="s1">'2009-08-01 04:17:52'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">30</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">)</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="n">to_date</span><span class="p">(</span><span class="mi">2009</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">04</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">52</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- and</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">false</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">false</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- ilike</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">ilike</span><span class="p">(</span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'_Park'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="k">ilike</span><span class="p">(</span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="n">_Park</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%\Users\John'</span><span class="w"> </span><span class="k">ilike</span><span class="w"> </span><span class="s1">'\%SystemDrive\%\\users%'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">ilike</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="o">%</span><span class="n">SystemDrive</span><span class="err">\</span><span class="o">%</span><span class="err">\\</span><span class="n">users</span><span class="o">%</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%\\USERS\\John'</span><span class="w"> </span><span class="k">ilike</span><span class="w"> </span><span class="s1">'\%SystemDrive\%\\\\Users%'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">ilike</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">USERS</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="o">%</span><span class="n">SystemDrive</span><span class="err">\</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="o">%</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%/Users/John'</span><span class="w"> </span><span class="k">ilike</span><span class="w"> </span><span class="s1">'/%SYSTEMDrive/%//Users%'</span><span class="w"> </span><span class="k">ESCAPE</span><span class="w"> </span><span class="s1">'/'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="k">ilike</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%/</span><span class="n">Users</span><span class="o">/</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">/%</span><span class="n">SYSTEMDrive</span><span class="o">/%//</span><span class="n">Users</span><span class="o">%</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="c1">-- in</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">in</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">in</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- isnan</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">isnan</span><span class="p">(</span><span class="k">cast</span><span class="p">(</span><span class="s1">'NaN'</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">double</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="n">isnan</span><span class="p">(</span><span class="k">CAST</span><span class="p">(</span><span class="n">NaN</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">DOUBLE</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------+</span>
-
-<span class="c1">-- isnotnull</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">isnotnull</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- isnull</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">isnull</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="c1">-- like</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">like</span><span class="p">(</span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'_park'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">Spark</span><span class="w"> </span><span class="k">LIKE</span><span class="w"> </span><span class="n">_park</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%\Users\John'</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">'\%SystemDrive\%\\Users%'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="w"> </span><span class="k">LIKE</span><span class="w"> </span><span class="err">\</span><span class="o">%</span><span class="n">SystemDrive</span><span class="err">\</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="o">%|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%\\Users\\John'</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">'\%SystemDrive\%\\\\Users%'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="w"> </span><span class="k">LIKE</span><span class="w"> </span><span class="err">\</span><span class="o">%</span><span class="n">SystemDrive</span><span class="err">\</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="o">%|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="s1">'%SystemDrive%/Users/John'</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">'/%SystemDrive/%//Users%'</span><span class="w"> </span><span class="k">ESCAPE</span><span class="w"> </span><span class="s1">'/'</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|%</span><span class="n">SystemDrive</span><span class="o">%/</span><span class="n">Users</span><span class="o">/</span><span class="n">John</span><span class="w"> </span><span class="k">LIKE</span><span class="w"> </span><span class="o">/%</span><span class="n">SystemDrive</span><span class="o">/%//</span><span class="n">Users</span><span class="o">%|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
-
-<span class="c1">-- not</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">true</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+</span>
-
-<span class="c1">-- or</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">false</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">false</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">false</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">true</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="k">false</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="p">(</span><span class="k">false</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------+</span>
-
-<span class="c1">-- regexp</span>
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp</span><span class="p">(</span><span class="s1">'%SystemDrive%\Users\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">REGEXP</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp</span><span class="p">(</span><span class="s1">'%SystemDrive%\\Users\\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">REGEXP</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------+</span>
-
-<span class="c1">-- regexp_like</span>
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_like</span><span class="p">(</span><span class="s1">'%SystemDrive%\Users\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">REGEXP_LIKE</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">regexp_like</span><span class="p">(</span><span class="s1">'%SystemDrive%\\Users\\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">REGEXP_LIKE</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------+</span>
-
-<span class="c1">-- rlike</span>
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">true</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rlike</span><span class="p">(</span><span class="s1">'%SystemDrive%\Users\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">RLIKE</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-
-<span class="k">SET</span><span class="w"> </span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">.</span><span class="n">escapedStringLiterals</span><span class="o">=</span><span class="k">false</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-<span class="o">|</span><span class="n">spark</span><span class="p">.</span><span class="k">sql</span><span class="p">.</span><span class="n">parser</span><span class="p">....</span><span class="o">|</span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+-----+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">rlike</span><span class="p">(</span><span class="s1">'%SystemDrive%\\Users\\John'</span><span class="p">,</span><span class="w"> </span><span class="s1">'%SystemDrive%\\\\Users.*'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">RLIKE</span><span class="p">(</span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\</span><span class="n">Users</span><span class="err">\</span><span class="n">John</span><span class="p">,</span><span class="w"> </span><span class="o">%</span><span class="n">SystemDrive</span><span class="o">%</span><span class="err">\\</span><span class="n">Users</span><span class="p">.</span><span class="o">*</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="csv-functions">Csv Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>from_csv(csvStr, schema[, options])</td>
- <td>Returns a struct value with the given `csvStr` and `schema`.</td>
- </tr>
- <tr>
- <td>schema_of_csv(csv[, options])</td>
- <td>Returns schema in the DDL format of CSV string.</td>
- </tr>
- <tr>
- <td>to_csv(expr[, options])</td>
- <td>Returns a CSV string with a given struct value</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-12">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- from_csv</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_csv</span><span class="p">(</span><span class="s1">'1, 0.8'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a INT, b DOUBLE'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">from_csv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">from_csv</span><span class="p">(</span><span class="s1">'26/08/2015'</span><span class="p">,</span><span class="w"> </span><span class="s1">'time Timestamp'</span><span class="p">,</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">'timestampFormat'</span><span class="p">,</span><span class="w"> </span><span class="s1">'dd/MM/yyyy'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">from_csv</span><span class="p">(</span><span class="mi">26</span><span class="o">/</span><span class="mi">08</span><span class="o">/</span><span class="mi">2015</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="err">{</span><span class="mi">2015</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">26</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- schema_of_csv</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_csv</span><span class="p">(</span><span class="s1">'1,abc'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">schema_of_csv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">abc</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">STRUCT</span><span class="o"><</span><span class="n">_c0</span><span class="p">:</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- to_csv</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_csv</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="n">to_csv</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">to_csv</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">'time'</span><span class="p">,</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="s1">'2015-08-26'</span><span class="p">,</span><span class="w"> </span><span class="s1">'yyyy-MM-dd'</span><span class="p">)),</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">'timestampFormat'</span><span class="p">,</span><span class="w"> </span><span class="s1">'dd/MM/yyyy'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">to_csv</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="k">time</span><span class="p">,</span><span class="w"> </span><span class="n">to_timestamp</span><span class="p">(</span><span class="mi">2015</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">26</span><span class="p">,</span><span class="w"> </span><span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span><span class="p">)))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">26</span><span class="o">/</span><span class="mi">08</span><span class="o">/</span><span class="mi">2015</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------------------------------------------------+</span>
-</code></pre></div>
-
-<h3 id="misc-functions">Misc Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>aes_decrypt(expr, key[, mode[, padding[, aad]]])</td>
- <td>Returns a decrypted value of `expr` using AES in `mode` with `padding`.
- Key lengths of 16, 24 and 32 bits are supported. Supported combinations of (`mode`, `padding`) are ('ECB', 'PKCS'), ('GCM', 'NONE') and ('CBC', 'PKCS').
- Optional additional authenticated data (AAD) is only supported for GCM. If provided for encryption, the identical AAD value must be provided for decryption.
- The default mode is GCM.</td>
- </tr>
- <tr>
- <td>aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]])</td>
- <td>Returns an encrypted value of `expr` using AES in given `mode` with the specified `padding`.
- Key lengths of 16, 24 and 32 bits are supported. Supported combinations of (`mode`, `padding`) are ('ECB', 'PKCS'), ('GCM', 'NONE') and ('CBC', 'PKCS').
- Optional initialization vectors (IVs) are only supported for CBC and GCM modes. These must be 16 bytes for CBC and 12 bytes for GCM. If not provided, a random vector will be generated and prepended to the output.
- Optional additional authenticated data (AAD) is only supported for GCM. If provided for encryption, the identical AAD value must be provided for decryption.
- The default mode is GCM.</td>
- </tr>
- <tr>
- <td>assert_true(expr)</td>
- <td>Throws an exception if `expr` is not true.</td>
- </tr>
- <tr>
- <td>bitmap_bit_position(child)</td>
- <td>Returns the bit position for the given input child expression.</td>
- </tr>
- <tr>
- <td>bitmap_bucket_number(child)</td>
- <td>Returns the bucket number for the given input child expression.</td>
- </tr>
- <tr>
- <td>bitmap_count(child)</td>
- <td>Returns the number of set bits in the child bitmap.</td>
- </tr>
- <tr>
- <td>current_catalog()</td>
- <td>Returns the current catalog.</td>
- </tr>
- <tr>
- <td>current_database()</td>
- <td>Returns the current database.</td>
- </tr>
- <tr>
- <td>current_schema()</td>
- <td>Returns the current database.</td>
- </tr>
- <tr>
- <td>current_user()</td>
- <td>user name of current execution context.</td>
- </tr>
- <tr>
- <td>equal_null(expr1, expr2)</td>
- <td>Returns same result as the EQUAL(=) operator for non-null operands,
- but returns true if both are null, false if one of the them is null.</td>
- </tr>
- <tr>
- <td>hll_sketch_estimate(expr)</td>
- <td>Returns the estimated number of unique values given the binary representation
- of a Datasketches HllSketch.</td>
- </tr>
- <tr>
- <td>hll_union(first, second, allowDifferentLgConfigK)</td>
- <td>Merges two binary representations of
- Datasketches HllSketch objects, using a Datasketches Union object. Set
- allowDifferentLgConfigK to true to allow unions of sketches with different
- lgConfigK values (defaults to false).</td>
- </tr>
- <tr>
- <td>input_file_block_length()</td>
- <td>Returns the length of the block being read, or -1 if not available.</td>
- </tr>
- <tr>
- <td>input_file_block_start()</td>
- <td>Returns the start offset of the block being read, or -1 if not available.</td>
- </tr>
- <tr>
- <td>input_file_name()</td>
- <td>Returns the name of the file being read, or empty string if not available.</td>
- </tr>
- <tr>
- <td>java_method(class, method[, arg1[, arg2 ..]])</td>
- <td>Calls a method with reflection.</td>
- </tr>
- <tr>
- <td>monotonically_increasing_id()</td>
- <td>Returns monotonically increasing 64-bit integers. The generated ID is guaranteed
- to be monotonically increasing and unique, but not consecutive. The current implementation
- puts the partition ID in the upper 31 bits, and the lower 33 bits represent the record number
- within each partition. The assumption is that the data frame has less than 1 billion
- partitions, and each partition has less than 8 billion records.
- The function is non-deterministic because its result depends on partition IDs.</td>
- </tr>
- <tr>
- <td>reflect(class, method[, arg1[, arg2 ..]])</td>
- <td>Calls a method with reflection.</td>
- </tr>
- <tr>
- <td>spark_partition_id()</td>
- <td>Returns the current partition id.</td>
- </tr>
- <tr>
- <td>try_aes_decrypt(expr, key[, mode[, padding[, aad]]])</td>
- <td>This is a special version of `aes_decrypt` that performs the same operation, but returns a NULL value instead of raising an error if the decryption cannot be performed.</td>
- </tr>
- <tr>
- <td>typeof(expr)</td>
- <td>Return DDL-formatted type string for the data type of the input.</td>
- </tr>
- <tr>
- <td>user()</td>
- <td>user name of current execution context.</td>
- </tr>
- <tr>
- <td>uuid()</td>
- <td>Returns an universally unique identifier (UUID) string. The value is returned as a canonical UUID 36-character string.</td>
- </tr>
- <tr>
- <td>version()</td>
- <td>Returns the Spark version. The string contains 2 fields, the first being a release version and the second being a git revision.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-13">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- aes_decrypt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94'</span><span class="p">),</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="mi">83</span><span class="n">F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94</span><span class="p">),</span><span class="w"> </span><span class="mi">0000111122223333</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'</span><span class="p">),</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="mi">6</span><span class="n">E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210</span><span class="p">),</span><span class="w"> </span><span class="mi">0000111122223333</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="s1">'3lmwu+Mw0H3fi5NDvcu9lg=='</span><span class="p">),</span><span class="w"> </span><span class="s1">'1234567890abcdef'</span><span class="p">,</span><span class="w"> </span><span class="s1">'ECB'</span><span class="p">,</span><span class="w"> </span><span class="s1">'PKCS'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="mi">3</span><span class="n">lmwu</span><span class="o">+</span><span class="n">Mw0H3fi5NDvcu9lg</span><span class="o">==</span><span class="p">),</span><span class="w"> </span><span class="mi">1234567890</span><span class="n">abcdef</span><span class="p">,</span><span class="w"> </span><span class="n">ECB</span><span class="p">,</span><span class="w"> </span><span class="n">PKCS</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="s1">'2NYmDCjgXTbbxGA3/SnJEfFC/JQ7olk2VQWReIAAFKo='</span><span class="p">),</span><span class="w"> </span><span class="s1">'1234567890abcdef'</span><span class="p">,</span><span class="w"> </span><span class="s1">'CBC'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="mi">2</span><span class="n">NYmDCjgXTbbxGA3</span><span class="o">/</span><span class="n">SnJEfFC</span><span class="o">/</span><span class="n">JQ7olk2VQWReIAAFKo</span><span class="o">=</span><span class="p">),</span><span class="w"> </span><span class="mi">1234567890</span><span class="n">abcdef</span><span class="p">,</span><span class="w"> </span><span class="n">CBC</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">41</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">63</span><span class="w"> </span><span class="mi">68</span><span class="w"> </span><span class="mi">6</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="s1">'AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg='</span><span class="p">),</span><span class="w"> </span><span class="s1">'abcdefghijklmnop12345678ABCDEFGH'</span><span class="p">,</span><span class="w"> </span><span class="s1">'CBC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEFAULT'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="n">AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg</span><span class="o">=</span><span class="p">),</span><span class="w"> </span><span class="n">abcdefghijklmnop12345678ABCDEFGH</span><span class="p">,</span><span class="w"> </span><span class="n">CBC</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="s1">'AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4'</span><span class="p">),</span><span class="w"> </span><span class="s1">'abcdefghijklmnop12345678ABCDEFGH'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEFAULT'</span><span class="p">,</span><span class="w"> </span><span class="s1">'This is an AAD mixed into the input'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">aes_decrypt</span><span class="p">(</span><span class="n">unbase64</span><span class="p">(</span><span class="n">AAAAAAAAAAAAAAAAQiYi</span><span class="o">+</span><span class="n">sTLm7KD9UcZ2nlRdYDe</span><span class="o">/</span><span class="n">PX4</span><span class="p">),</span><span class="w"> </span><span class="n">abcdefghijklmnop12345678ABCDEFGH</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="n">This</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">AAD</span><span class="w"> </span><span class="n">mixed</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">input</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="p">]</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- aes_encrypt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="mi">0000111122223333</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="n">E146F1E0B7767BC0</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hex</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">hex</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">0000111122223333</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">412</span><span class="n">BE05B0BF4DD0F5</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Spark SQL'</span><span class="p">,</span><span class="w"> </span><span class="s1">'1234567890abcdef'</span><span class="p">,</span><span class="w"> </span><span class="s1">'ECB'</span><span class="p">,</span><span class="w"> </span><span class="s1">'PKCS'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Spark</span><span class="w"> </span><span class="k">SQL</span><span class="p">,</span><span class="w"> </span><span class="mi">1234567890</span><span class="n">abcdef</span><span class="p">,</span><span class="w"> </span><span class="n">ECB</span><span class="p">,</span><span class="w"> </span><span class="n">PKCS</span><span class="p">,</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="n">lmwu</span><span class="o">+</span><span class="n">Mw0H3fi5NDv</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Apache Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'1234567890abcdef'</span><span class="p">,</span><span class="w"> </span><span class="s1">'CBC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEFAULT'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Apache</span><span class="w"> </span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="mi">1234567890</span><span class="n">abcdef</span><span class="p">,</span><span class="w"> </span><span class="n">CBC</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">Q0sAUoZlAZ8Hn7lti</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'abcdefghijklmnop12345678ABCDEFGH'</span><span class="p">,</span><span class="w"> </span><span class="s1">'CBC'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEFAULT'</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="s1">'00000000000000000000000000000000'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="n">abcdefghijklmnop12345678ABCDEFGH</span><span class="p">,</span><span class="w"> </span><span class="n">CBC</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="mi">00000000000000000000000000000000</span><span class="p">),</span><span class="w"> </span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AAAAAAAAAAAAAAAAA</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="s1">'Spark'</span><span class="p">,</span><span class="w"> </span><span class="s1">'abcdefghijklmnop12345678ABCDEFGH'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DEFAULT'</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="s1">'000000000000000000000000'</span><span class="p">),</span><span class="w"> </span><span class="s1">'This is an AAD mixed into the input'</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">base64</span><span class="p">(</span><span class="n">aes_encrypt</span><span class="p">(</span><span class="n">Spark</span><span class="p">,</span><span class="w"> </span><span class="n">abcdefghijklmnop12345678ABCDEFGH</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="n">unhex</span><span class="p">(</span><span class="mi">000000000000000000000000</span><span class="p">),</span><span class="w"> </span><span class="n">This</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">AAD</span><span class="w"> </span><span class="n">mixed</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">input</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">AAAAAAAAAAAAAAAAQ</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- assert_true</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">assert_true</span><span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">assert_true</span><span class="p">((</span><span class="mi">0</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="s1">'(0 < 1)'</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">true</span><span class="o">!</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- bitmap_bit_position</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="mi">123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">bitmap_bit_position</span><span class="p">(</span><span class="mi">123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">122</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- bitmap_bucket_number</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_bucket_number</span><span class="p">(</span><span class="mi">123</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">bitmap_bucket_number</span><span class="p">(</span><span class="mi">123</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_bucket_number</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="n">bitmap_bucket_number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------+</span>
-
-<span class="c1">-- bitmap_count</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'1010'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="s1">'1010'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'FFFF'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="s1">'FFFF'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">16</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="w"> </span><span class="s1">'0'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="n">bitmap_count</span><span class="p">(</span><span class="n">X</span><span class="s1">'00'</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------+</span>
-
-<span class="c1">-- current_catalog</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">current_catalog</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">current_catalog</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">spark_catalog</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- current_database</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">current_database</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">current_database</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">default</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- current_schema</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">current_schema</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="n">current_database</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">default</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------+</span>
-
-<span class="c1">-- current_user</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">current_user</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="k">current_user</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">spark</span><span class="o">-</span><span class="n">rm</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- equal_null</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">equal_null</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">equal_null</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">equal_null</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'11'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">equal_null</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">11</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">equal_null</span><span class="p">(</span><span class="k">true</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">equal_null</span><span class="p">(</span><span class="k">true</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">equal_null</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="s1">'abc'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="n">equal_null</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">abc</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">equal_null</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="n">equal_null</span><span class="p">(</span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------------+</span>
-
-<span class="c1">-- hll_sketch_estimate</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------+</span>
-
-<span class="c1">-- hll_union</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_union</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col1</span><span class="p">),</span><span class="w"> </span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col2</span><span class="p">)))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">col1</span><span class="p">,</span><span class="w"> </span><span class="n">col2</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">hll_sketch_estimate</span><span class="p">(</span><span class="n">hll_union</span><span class="p">(</span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col1</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">),</span><span class="w"> </span><span class="n">hll_sketch_agg</span><span class="p">(</span><span class="n">col2</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">),</span><span class="w"> </span><span class="k">false</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- input_file_block_length</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">input_file_block_length</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="n">input_file_block_length</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------+</span>
-
-<span class="c1">-- input_file_block_start</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">input_file_block_start</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="n">input_file_block_start</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------+</span>
-
-<span class="c1">-- input_file_name</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">input_file_name</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="n">input_file_name</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------+</span>
-
-<span class="c1">-- java_method</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">java_method</span><span class="p">(</span><span class="s1">'java.util.UUID'</span><span class="p">,</span><span class="w"> </span><span class="s1">'randomUUID'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="n">java_method</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">UUID</span><span class="p">,</span><span class="w"> </span><span class="n">randomUUID</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">57</span><span class="n">c14e57</span><span class="o">-</span><span class="mi">31</span><span class="n">d4</span><span class="o">-</span><span class="mi">408</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">java_method</span><span class="p">(</span><span class="s1">'java.util.UUID'</span><span class="p">,</span><span class="w"> </span><span class="s1">'fromString'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a5cf6c42-0c85-418f-af6c-3e4e5b1328f2'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">java_method</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">UUID</span><span class="p">,</span><span class="w"> </span><span class="n">fromString</span><span class="p">,</span><span class="w"> </span><span class="n">a5cf6c42</span><span class="o">-</span><span class="mi">0</span><span class="n">c85</span><span class="o">-</span><span class="mi">418</span><span class="n">f</span><span class="o">-</span><span class="n">af6c</span><span class="o">-</span><span class="mi">3</span><span class="n">e4e5b1328f2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a5cf6c42</span><span class="o">-</span><span class="mi">0</span><span class="n">c85</span><span class="o">-</span><span class="mi">418</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------------------------------+</span>
-
-<span class="c1">-- monotonically_increasing_id</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">monotonically_increasing_id</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="n">monotonically_increasing_id</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------+</span>
-
-<span class="c1">-- reflect</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">reflect</span><span class="p">(</span><span class="s1">'java.util.UUID'</span><span class="p">,</span><span class="w"> </span><span class="s1">'randomUUID'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="n">reflect</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">UUID</span><span class="p">,</span><span class="w"> </span><span class="n">randomUUID</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">da3655c7</span><span class="o">-</span><span class="mi">4</span><span class="n">c22</span><span class="o">-</span><span class="mi">43</span><span class="n">e</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">reflect</span><span class="p">(</span><span class="s1">'java.util.UUID'</span><span class="p">,</span><span class="w"> </span><span class="s1">'fromString'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a5cf6c42-0c85-418f-af6c-3e4e5b1328f2'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">reflect</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">UUID</span><span class="p">,</span><span class="w"> </span><span class="n">fromString</span><span class="p">,</span><span class="w"> </span><span class="n">a5cf6c42</span><span class="o">-</span><span class="mi">0</span><span class="n">c85</span><span class="o">-</span><span class="mi">418</span><span class="n">f</span><span class="o">-</span><span class="n">af6c</span><span class="o">-</span><span class="mi">3</span><span class="n">e4e5b1328f2</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">a5cf6c42</span><span class="o">-</span><span class="mi">0</span><span class="n">c85</span><span class="o">-</span><span class="mi">418</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------------------------------------------------------------------+</span>
-
-<span class="c1">-- spark_partition_id</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">spark_partition_id</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">SPARK_PARTITION_ID</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- try_aes_decrypt</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'</span><span class="p">),</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="mi">6</span><span class="n">E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210</span><span class="p">),</span><span class="w"> </span><span class="mi">0000111122223333</span><span class="p">,</span><span class="w"> </span><span class="n">GCM</span><span class="p">,</span><span class="w"> </span><span class="k">DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">53</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="mi">61</span><span class="w"> </span><span class="mi">72</span><span class="w"> </span><span class="mi">6</span><span class="n">B</span><span class="w"> </span><span class="mi">2</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">try_aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="s1">'----------468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'</span><span class="p">),</span><span class="w"> </span><span class="s1">'0000111122223333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'GCM'</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="n">try_aes_decrypt</span><span class="p">(</span><span class="n">unhex</span><span class="p">(</span><span class="c1">----------468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210), 0000111122223333, GCM, DEFAULT, )|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">------------------------------------------------------------------------------------------------------------------------------------+</span>
-
-<span class="c1">-- typeof</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">typeof</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="n">typeof</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">int</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---------+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">typeof</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="n">typeof</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="nb">array</span><span class="o"><</span><span class="nb">int</span><span class="o">>|</span>
-<span class="o">+</span><span class="c1">----------------+</span>
-
-<span class="c1">-- user</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">user</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="k">current_user</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">spark</span><span class="o">-</span><span class="n">rm</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------+</span>
-
-<span class="c1">-- uuid</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">uuid</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="n">uuid</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="n">fb6b1fc0</span><span class="o">-</span><span class="n">c0a1</span><span class="o">-</span><span class="mi">416</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-
-<span class="c1">-- version</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="k">version</span><span class="p">();</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="w"> </span><span class="k">version</span><span class="p">()</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-<span class="o">|</span><span class="mi">3</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="n">ce5ddad9903</span><span class="p">...</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------+</span>
-</code></pre></div>
-
-<h3 id="generator-functions">Generator Functions</h3>
-<table class="table">
- <thead>
- <tr>
- <th style="width:25%">Function</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>explode(expr)</td>
- <td>Separates the elements of array `expr` into multiple rows, or the elements of map `expr` into multiple rows and columns. Unless specified otherwise, uses the default column name `col` for elements of the array or `key` and `value` for the elements of the map.</td>
- </tr>
- <tr>
- <td>explode_outer(expr)</td>
- <td>Separates the elements of array `expr` into multiple rows, or the elements of map `expr` into multiple rows and columns. Unless specified otherwise, uses the default column name `col` for elements of the array or `key` and `value` for the elements of the map.</td>
- </tr>
- <tr>
- <td>inline(expr)</td>
- <td>Explodes an array of structs into a table. Uses column names col1, col2, etc. by default unless specified otherwise.</td>
- </tr>
- <tr>
- <td>inline_outer(expr)</td>
- <td>Explodes an array of structs into a table. Uses column names col1, col2, etc. by default unless specified otherwise.</td>
- </tr>
- <tr>
- <td>posexplode(expr)</td>
- <td>Separates the elements of array `expr` into multiple rows with positions, or the elements of map `expr` into multiple rows and columns with positions. Unless specified otherwise, uses the column name `pos` for position, `col` for elements of the array or `key` and `value` for elements of the map.</td>
- </tr>
- <tr>
- <td>posexplode_outer(expr)</td>
- <td>Separates the elements of array `expr` into multiple rows with positions, or the elements of map `expr` into multiple rows and columns with positions. Unless specified otherwise, uses the column name `pos` for position, `col` for elements of the array or `key` and `value` for elements of the map.</td>
- </tr>
- <tr>
- <td>stack(n, expr1, ..., exprk)</td>
- <td>Separates `expr1`, ..., `exprk` into `n` rows. Uses column names col0, col1, etc. by default unless specified otherwise.</td>
- </tr>
- </tbody>
-</table>
-
-<h4 id="examples-14">Examples</h4>
-<div class="codehilite"><pre><span></span><code><span class="c1">-- explode</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">explode</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">explode</span><span class="p">(</span><span class="n">collection</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">explode</span><span class="p">(</span><span class="n">collection</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="c1">-- explode_outer</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">explode_outer</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="n">explode_outer</span><span class="p">(</span><span class="n">collection</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">explode_outer</span><span class="p">(</span><span class="n">collection</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+</span>
-
-<span class="c1">-- inline</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">inline</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">struct</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="n">struct</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="n">col1</span><span class="o">|</span><span class="n">col2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-
-<span class="c1">-- inline_outer</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">inline_outer</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">struct</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'a'</span><span class="p">),</span><span class="w"> </span><span class="n">struct</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'b'</span><span class="p">)));</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="n">col1</span><span class="o">|</span><span class="n">col2</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-
-<span class="c1">-- posexplode</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">posexplode</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">posexplode</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-
-<span class="c1">-- posexplode_outer</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">posexplode_outer</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-
-<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">posexplode_outer</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">));</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="n">col</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="mi">10</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">20</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">---+---+</span>
-
-<span class="c1">-- stack</span>
-<span class="k">SELECT</span><span class="w"> </span><span class="n">stack</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="n">col0</span><span class="o">|</span><span class="n">col1</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
-<span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="o">|</span><span class="k">NULL</span><span class="o">|</span>
-<span class="o">+</span><span class="c1">----+----+</span>
-</code></pre></div>
-
</div>
@@ -8574,15 +335,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-functions-udf-aggregate.html b/site/docs/3.5.0/sql-ref-functions-udf-aggregate.html
index 8e46334..d218230 100644
--- a/site/docs/3.5.0/sql-ref-functions-udf-aggregate.html
+++ b/site/docs/3.5.0/sql-ref-functions-udf-aggregate.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -747,15 +746,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-functions-udf-hive.html b/site/docs/3.5.0/sql-ref-functions-udf-hive.html
index 79778d5..2f3d102 100644
--- a/site/docs/3.5.0/sql-ref-functions-udf-hive.html
+++ b/site/docs/3.5.0/sql-ref-functions-udf-hive.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -430,15 +429,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-functions-udf-scalar.html b/site/docs/3.5.0/sql-ref-functions-udf-scalar.html
index 9332ee9..96d01ba 100644
--- a/site/docs/3.5.0/sql-ref-functions-udf-scalar.html
+++ b/site/docs/3.5.0/sql-ref-functions-udf-scalar.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -487,15 +486,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-functions.html b/site/docs/3.5.0/sql-ref-functions.html
index 3fb1d40..3834cc3 100644
--- a/site/docs/3.5.0/sql-ref-functions.html
+++ b/site/docs/3.5.0/sql-ref-functions.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -379,15 +378,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-identifier-clause.html b/site/docs/3.5.0/sql-ref-identifier-clause.html
index 5dfaff3..04ac9c7 100644
--- a/site/docs/3.5.0/sql-ref-identifier-clause.html
+++ b/site/docs/3.5.0/sql-ref-identifier-clause.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -422,15 +421,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-identifier.html b/site/docs/3.5.0/sql-ref-identifier.html
index ed35b5e..7269d84 100644
--- a/site/docs/3.5.0/sql-ref-identifier.html
+++ b/site/docs/3.5.0/sql-ref-identifier.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -398,15 +397,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-literals.html b/site/docs/3.5.0/sql-ref-literals.html
index 339fc4d..306e211 100644
--- a/site/docs/3.5.0/sql-ref-literals.html
+++ b/site/docs/3.5.0/sql-ref-literals.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -962,15 +961,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-null-semantics.html b/site/docs/3.5.0/sql-ref-null-semantics.html
index 7409fe0..fe01291 100644
--- a/site/docs/3.5.0/sql-ref-null-semantics.html
+++ b/site/docs/3.5.0/sql-ref-null-semantics.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1098,15 +1097,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-number-pattern.html b/site/docs/3.5.0/sql-ref-number-pattern.html
index 67e6186..9572071 100644
--- a/site/docs/3.5.0/sql-ref-number-pattern.html
+++ b/site/docs/3.5.0/sql-ref-number-pattern.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -510,15 +509,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-analyze-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-analyze-table.html
index 2f06635..e529004 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-analyze-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-analyze-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -548,15 +547,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-cache-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-cache-table.html
index 2cf83a3..3f644d0 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-cache-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-cache-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -455,15 +454,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-clear-cache.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-clear-cache.html
index 27e4df0..71c3609 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-clear-cache.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-clear-cache.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -404,15 +403,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-function.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-function.html
index 15bec22..1008d50 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-function.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-function.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -424,15 +423,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-table.html
index 3a38ee0..7a2ed72 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -424,15 +423,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh.html
index bec24d5..65fa9f7 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-refresh.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -421,15 +420,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache-uncache-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache-uncache-table.html
index 6c89736..671428d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache-uncache-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache-uncache-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -417,15 +416,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-cache.html b/site/docs/3.5.0/sql-ref-syntax-aux-cache.html
index 7c2fb94..1d0698d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-cache.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-cache.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -389,15 +388,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-reset.html b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-reset.html
index 06a3e8e..bd3487f 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-reset.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-reset.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -421,15 +420,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set-timezone.html b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set-timezone.html
index c26422b..2e491ff 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set-timezone.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set-timezone.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -433,15 +432,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set.html b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set.html
index 9953738..113738e 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt-set.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -437,15 +436,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt.html b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt.html
index 0f1a729..fae8021 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-conf-mgmt.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -386,15 +385,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-describe-database.html b/site/docs/3.5.0/sql-ref-syntax-aux-describe-database.html
index 8c8ecda..0ee77fd 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-describe-database.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-describe-database.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -459,15 +458,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-describe-function.html b/site/docs/3.5.0/sql-ref-syntax-aux-describe-function.html
index 8e3bb30..f7d654d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-describe-function.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-describe-function.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -475,15 +474,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-describe-query.html b/site/docs/3.5.0/sql-ref-syntax-aux-describe-query.html
index 6b66b4e..e0158f8 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-describe-query.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-describe-query.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-describe-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-describe-table.html
index 4a28139..79ac90d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-describe-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-describe-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -549,15 +548,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-describe.html b/site/docs/3.5.0/sql-ref-syntax-aux-describe.html
index c7a6d80..bb25b60 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-describe.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-describe.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -387,15 +386,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-archive.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-archive.html
index b82dde4..74528d7 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-archive.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-archive.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -418,15 +417,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-file.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-file.html
index c84842c..2b11d42 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-file.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-file.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -419,15 +418,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-jar.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-jar.html
index 9e4d117..ea86f30 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-jar.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-add-jar.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -435,15 +434,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-archive.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-archive.html
index 40d27c6..a35be4d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-archive.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-archive.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -413,15 +412,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-file.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-file.html
index 1a5168f..7258b2d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-file.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-file.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -413,15 +412,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-jar.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-jar.html
index 3d5846f..9129295 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-jar.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt-list-jar.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -414,15 +413,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt.html b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt.html
index 071f2d5..70a2c77 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-resource-mgmt.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -389,15 +388,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-columns.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-columns.html
index f29972e..2dd6c9f 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-columns.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-columns.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -462,15 +461,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-create-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-create-table.html
index 7f5bfa7..a1e81be 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-create-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-create-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -451,15 +450,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-databases.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-databases.html
index 7470aea..5c4e4ee 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-databases.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-databases.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -454,15 +453,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-functions.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-functions.html
index 5777c1a..4fe333e 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-functions.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-functions.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -504,15 +503,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-partitions.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-partitions.html
index 233e66f..5b065c9 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-partitions.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-partitions.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -475,15 +474,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-table.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-table.html
index 9255fe8..3003ecc 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -548,15 +547,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-tables.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-tables.html
index c897105..793b890 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-tables.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-tables.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -473,15 +472,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-tblproperties.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-tblproperties.html
index 1af9579..4649e4c 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-tblproperties.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-tblproperties.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -484,15 +483,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show-views.html b/site/docs/3.5.0/sql-ref-syntax-aux-show-views.html
index 816e5c4..91c864e 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show-views.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show-views.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -484,15 +483,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-aux-show.html b/site/docs/3.5.0/sql-ref-syntax-aux-show.html
index b7f24c2..e6900fc 100644
--- a/site/docs/3.5.0/sql-ref-syntax-aux-show.html
+++ b/site/docs/3.5.0/sql-ref-syntax-aux-show.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -392,15 +391,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-database.html b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-database.html
index 76e4e33..299c641 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-database.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-database.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -469,15 +468,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-table.html b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-table.html
index dacf003..3dcd3ac 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -1026,15 +1025,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-view.html b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-view.html
index 65baa8c..08c6d14 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-alter-view.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-alter-view.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -582,15 +581,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-database.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-database.html
index 84623d2..182d664 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-database.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-database.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -455,15 +454,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-function.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-function.html
index 1cd03ee..6ef45d8 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-function.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-function.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -537,15 +536,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-datasource.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-datasource.html
index 7d8803a..3f5e5fa 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-datasource.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-datasource.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -544,15 +543,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-hiveformat.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-hiveformat.html
index 1fefaf1..01f6d3d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-hiveformat.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-hiveformat.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -570,15 +569,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-like.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-like.html
index a54dd02..d1d2408 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-like.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table-like.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -457,15 +456,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table.html
index d5ad4be..56f9af8 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -399,15 +398,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-create-view.html b/site/docs/3.5.0/sql-ref-syntax-ddl-create-view.html
index cb05381..c9f5811 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-create-view.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-create-view.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -460,15 +459,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-database.html b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-database.html
index ba9db9d..623dbe5 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-database.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-database.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -435,15 +434,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-function.html b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-function.html
index d88a623..3f4eec4 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-function.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-function.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -468,15 +467,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-table.html b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-table.html
index b1d54ef..6535292 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -446,15 +445,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-view.html b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-view.html
index 14c7434..605b4c0 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-drop-view.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-drop-view.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -435,15 +434,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-repair-table.html b/site/docs/3.5.0/sql-ref-syntax-ddl-repair-table.html
index a0926b0..db67b49 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-repair-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-repair-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -445,15 +444,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-truncate-table.html b/site/docs/3.5.0/sql-ref-syntax-ddl-truncate-table.html
index 4df79f4..a88c823 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-truncate-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-truncate-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -455,15 +454,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-ddl-usedb.html b/site/docs/3.5.0/sql-ref-syntax-ddl-usedb.html
index 3837a26..f0b34c0 100644
--- a/site/docs/3.5.0/sql-ref-syntax-ddl-usedb.html
+++ b/site/docs/3.5.0/sql-ref-syntax-ddl-usedb.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -421,15 +420,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-dml-insert-overwrite-directory.html b/site/docs/3.5.0/sql-ref-syntax-dml-insert-overwrite-directory.html
index 5d7077d..5058b03 100644
--- a/site/docs/3.5.0/sql-ref-syntax-dml-insert-overwrite-directory.html
+++ b/site/docs/3.5.0/sql-ref-syntax-dml-insert-overwrite-directory.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -483,15 +482,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-dml-insert-table.html b/site/docs/3.5.0/sql-ref-syntax-dml-insert-table.html
index 6af1756..2511867 100644
--- a/site/docs/3.5.0/sql-ref-syntax-dml-insert-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-dml-insert-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -821,15 +820,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-dml-load.html b/site/docs/3.5.0/sql-ref-syntax-dml-load.html
index dfc6a2ad..43c6fe9 100644
--- a/site/docs/3.5.0/sql-ref-syntax-dml-load.html
+++ b/site/docs/3.5.0/sql-ref-syntax-dml-load.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -481,15 +480,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-hive-format.html b/site/docs/3.5.0/sql-ref-syntax-hive-format.html
index 2b6d696..f8c4d09 100644
--- a/site/docs/3.5.0/sql-ref-syntax-hive-format.html
+++ b/site/docs/3.5.0/sql-ref-syntax-hive-format.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -445,15 +444,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-explain.html b/site/docs/3.5.0/sql-ref-syntax-qry-explain.html
index 3751a7c..4a6b7cb 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-explain.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-explain.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -493,15 +492,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-aggregate.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-aggregate.html
index 5353d7a..ec591d7 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-aggregate.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-aggregate.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -511,15 +510,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-case.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-case.html
index 96c604f..59b0f9e 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-case.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-case.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -477,15 +476,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-clusterby.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-clusterby.html
index 48056d0..c6f85fc 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-clusterby.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-clusterby.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -470,15 +469,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-cte.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-cte.html
index 76b6e98..177b9ff 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-cte.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-cte.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -488,15 +487,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-distribute-by.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-distribute-by.html
index 4d150b3..88aaf6c 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-distribute-by.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-distribute-by.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -465,15 +464,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-file.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-file.html
index 01296d3..7a7b132 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-file.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-file.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -441,15 +440,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-groupby.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-groupby.html
index d0e6df3..d1b14a7 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-groupby.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-groupby.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -692,15 +691,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-having.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-having.html
index 559f234..54cfce9 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-having.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-having.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -498,15 +497,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-hints.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-hints.html
index 76d062b..574603a 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-hints.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-hints.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -538,15 +537,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-inline-table.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-inline-table.html
index 13d28fa..ec61450 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-inline-table.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-inline-table.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -442,15 +441,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-join.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-join.html
index 4054ea5..4007836 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-join.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-join.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -605,15 +604,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-subquery.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-subquery.html
index a8c94cf..083e81b 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-subquery.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-subquery.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -457,15 +456,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-view.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-view.html
index 62c3f23..c9d99a4 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-view.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-lateral-view.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -494,15 +493,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-like.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-like.html
index 08060ea..59d6901 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-like.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-like.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -546,15 +545,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-limit.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-limit.html
index 4147981..71c770e 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-limit.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-limit.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -476,15 +475,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-offset.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-offset.html
index 46c0561..9a0b663 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-offset.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-offset.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -465,15 +464,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-orderby.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-orderby.html
index 6c55aaf..b5119ca 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-orderby.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-orderby.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -518,15 +517,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-pivot.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-pivot.html
index 346e906..5261649 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-pivot.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-pivot.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -470,15 +469,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-sampling.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-sampling.html
index 1051275..008ebbc 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-sampling.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-sampling.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -456,15 +455,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-setops.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-setops.html
index 24af435..717203c 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-setops.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-setops.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -554,15 +553,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-sortby.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-sortby.html
index f5f4e31..7eeba2b 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-sortby.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-sortby.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -551,15 +550,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-subqueries.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-subqueries.html
index 56c369f..755da04 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-subqueries.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-subqueries.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -382,15 +381,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-transform.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-transform.html
index 6d4695b..f21533d 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-transform.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-transform.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -642,15 +641,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-tvf.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-tvf.html
index 5471493..b4551d7 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-tvf.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-tvf.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -599,15 +598,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-unpivot.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-unpivot.html
index 1e57495..5e6a1bc 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-unpivot.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-unpivot.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -510,15 +509,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-where.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-where.html
index 7192aa5..c6bc089 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-where.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-where.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -496,15 +495,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select-window.html b/site/docs/3.5.0/sql-ref-syntax-qry-select-window.html
index fb2370a..c47340a 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select-window.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select-window.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -600,15 +599,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax-qry-select.html b/site/docs/3.5.0/sql-ref-syntax-qry-select.html
index 97f4c75..f645f9f 100644
--- a/site/docs/3.5.0/sql-ref-syntax-qry-select.html
+++ b/site/docs/3.5.0/sql-ref-syntax-qry-select.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -590,15 +589,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref-syntax.html b/site/docs/3.5.0/sql-ref-syntax.html
index d24876f..c44de64 100644
--- a/site/docs/3.5.0/sql-ref-syntax.html
+++ b/site/docs/3.5.0/sql-ref-syntax.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -488,15 +487,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/sql-ref.html b/site/docs/3.5.0/sql-ref.html
index 1674274..1a03139 100644
--- a/site/docs/3.5.0/sql-ref.html
+++ b/site/docs/3.5.0/sql-ref.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -363,15 +362,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/ss-migration-guide.html b/site/docs/3.5.0/ss-migration-guide.html
index 7774a0e..ffb39aa 100644
--- a/site/docs/3.5.0/ss-migration-guide.html
+++ b/site/docs/3.5.0/ss-migration-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -200,15 +199,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/storage-openstack-swift.html b/site/docs/3.5.0/storage-openstack-swift.html
index d6c96bf..42b42e6 100644
--- a/site/docs/3.5.0/storage-openstack-swift.html
+++ b/site/docs/3.5.0/storage-openstack-swift.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -178,7 +177,7 @@
<p>The following table contains a list of Keystone mandatory parameters. <code>PROVIDER</code> can be
any (alphanumeric) name.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Meaning</th><th>Required</th></tr></thead>
<tr>
<td><code>fs.swift.service.PROVIDER.auth.url</code></td>
@@ -273,15 +272,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/streaming-custom-receivers.html b/site/docs/3.5.0/streaming-custom-receivers.html
index fd2b4b9..df1d6d1 100644
--- a/site/docs/3.5.0/streaming-custom-receivers.html
+++ b/site/docs/3.5.0/streaming-custom-receivers.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -357,7 +356,7 @@
<p>The following table summarizes the characteristics of both types of receivers</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Receiver Type</th>
@@ -391,15 +390,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/streaming-kafka-0-10-integration.html b/site/docs/3.5.0/streaming-kafka-0-10-integration.html
index 53a680d..9752f48 100644
--- a/site/docs/3.5.0/streaming-kafka-0-10-integration.html
+++ b/site/docs/3.5.0/streaming-kafka-0-10-integration.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -465,15 +464,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/streaming-kafka-integration.html b/site/docs/3.5.0/streaming-kafka-integration.html
index 223d690..755a7fc 100644
--- a/site/docs/3.5.0/streaming-kafka-integration.html
+++ b/site/docs/3.5.0/streaming-kafka-integration.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -151,15 +150,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/streaming-kinesis-integration.html b/site/docs/3.5.0/streaming-kinesis-integration.html
index 65a206c..4420232 100644
--- a/site/docs/3.5.0/streaming-kinesis-integration.html
+++ b/site/docs/3.5.0/streaming-kinesis-integration.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -475,15 +474,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/streaming-programming-guide.html b/site/docs/3.5.0/streaming-programming-guide.html
index 247c09c..cbc066f 100644
--- a/site/docs/3.5.0/streaming-programming-guide.html
+++ b/site/docs/3.5.0/streaming-programming-guide.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -541,7 +540,7 @@
artifact <code class="language-plaintext highlighter-rouge">spark-streaming-xyz_2.12</code> to the dependencies. For example,
some of the common ones are as follows.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Source</th><th>Artifact</th></tr></thead>
<tr><td> Kafka </td><td> spark-streaming-kafka-0-10_2.12 </td></tr>
<tr><td> Kinesis<br /></td><td>spark-streaming-kinesis-asl_2.12 [Amazon Software License] </td></tr>
@@ -916,7 +915,7 @@
DStreams support many of the transformations available on normal Spark RDD’s.
Some of the common ones are as follows.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:25%">Transformation</th><th>Meaning</th></tr></thead>
<tr>
<td> <b>map</b>(<i>func</i>) </td>
@@ -1179,7 +1178,7 @@
<p>Some of the common window operations are as follows. All of these operations take the
said two parameters - <i>windowLength</i> and <i>slideInterval</i>.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:25%">Transformation</th><th>Meaning</th></tr></thead>
<tr>
<td> <b>window</b>(<i>windowLength</i>, <i>slideInterval</i>) </td>
@@ -1347,7 +1346,7 @@
they trigger the actual execution of all the DStream transformations (similar to actions for RDDs).
Currently, the following output operations are defined:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th style="width:30%">Output Operation</th><th>Meaning</th></tr></thead>
<tr>
<td> <b>print</b>()</td>
@@ -2595,7 +2594,7 @@
<p>The following table summarizes the semantics under failures:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th style="width:30%">Deployment Scenario</th>
@@ -2722,15 +2721,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/structured-streaming-kafka-integration.html b/site/docs/3.5.0/structured-streaming-kafka-integration.html
index 21f4e4c..709a79f 100644
--- a/site/docs/3.5.0/structured-streaming-kafka-integration.html
+++ b/site/docs/3.5.0/structured-streaming-kafka-integration.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -408,7 +407,7 @@
</div>
<p>Each row in the source has the following schema:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Column</th><th>Type</th></tr></thead>
<tr>
<td>key</td>
@@ -447,7 +446,7 @@
<p>The following options must be set for the Kafka source
for both batch and streaming queries.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Option</th><th>value</th><th>meaning</th></tr></thead>
<tr>
<td>assign</td>
@@ -479,7 +478,7 @@
<p>The following configurations are optional:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Option</th><th>value</th><th>default</th><th>query type</th><th>meaning</th></tr></thead>
<tr>
<td>startingTimestamp</td>
@@ -724,7 +723,7 @@
<p>The following properties are available to configure the consumer pool:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td>spark.kafka.consumer.cache.capacity</td>
@@ -774,7 +773,7 @@
<p>The following properties are available to configure the fetched data pool:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td>spark.kafka.consumer.fetchedData.cache.timeout</td>
@@ -802,7 +801,7 @@
that can be used to perform de-duplication when reading.</p>
<p>The Dataframe being written to Kafka should have the following columns in schema:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Column</th><th>Type</th></tr></thead>
<tr>
<td>key (optional)</td>
@@ -841,7 +840,7 @@
<p>The following options must be set for the Kafka sink
for both batch and streaming queries.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Option</th><th>value</th><th>meaning</th></tr></thead>
<tr>
<td>kafka.bootstrap.servers</td>
@@ -852,7 +851,7 @@
<p>The following configurations are optional:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Option</th><th>value</th><th>default</th><th>query type</th><th>meaning</th></tr></thead>
<tr>
<td>topic</td>
@@ -1018,7 +1017,7 @@
<p>The following properties are available to configure the producer pool:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td>spark.kafka.producer.cache.timeout</td>
@@ -1161,7 +1160,7 @@
<p>Delegation tokens can be obtained from multiple clusters and <code>${cluster}</code> is an arbitrary unique identifier which helps to group different configurations.</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since Version</th></tr></thead>
<tr>
<td><code>spark.kafka.clusters.${cluster}.auth.bootstrap.servers</code></td>
@@ -1302,15 +1301,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/structured-streaming-programming-guide.html b/site/docs/3.5.0/structured-streaming-programming-guide.html
index a0dc13d..ba80089 100644
--- a/site/docs/3.5.0/structured-streaming-programming-guide.html
+++ b/site/docs/3.5.0/structured-streaming-programming-guide.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -737,7 +736,7 @@
<a href="#fault-tolerance-semantics">fault-tolerance semantics</a>.
Here are the details of all the sources in Spark.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Source</th>
@@ -1953,7 +1952,7 @@
<h5 id="support-matrix-for-joins-in-streaming-queries">Support matrix for joins in streaming queries</h5>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Left Input</th>
@@ -2427,7 +2426,7 @@
<p>Here are the configs regarding to RocksDB instance of the state store provider:</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Config Name</th>
@@ -2610,7 +2609,7 @@
<p>Different types of streaming queries support different output modes.
Here is the compatibility matrix.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Query Type</th>
@@ -2748,7 +2747,7 @@
<a href="#fault-tolerance-semantics">fault-tolerance semantics</a>.
Here are the details of all the sinks in Spark.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Sink</th>
@@ -3334,7 +3333,7 @@
the query is going to be executed as micro-batch query with a fixed batch interval or as a continuous processing query.
Here are the different kinds of triggers that are supported.</p>
-<table>
+<table class="table table-striped">
<thead>
<tr>
<th>Trigger Type</th>
@@ -4432,15 +4431,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/submitting-applications.html b/site/docs/3.5.0/submitting-applications.html
index 400c5dc..9d3c998 100644
--- a/site/docs/3.5.0/submitting-applications.html
+++ b/site/docs/3.5.0/submitting-applications.html
@@ -15,8 +15,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -277,7 +276,7 @@
<p>The master URL passed to Spark can be in one of the following formats:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>Master URL</th><th>Meaning</th></tr></thead>
<tr><td> <code>local</code> </td><td> Run Spark locally with one worker thread (i.e. no parallelism at all). </td></tr>
<tr><td> <code>local[K]</code> </td><td> Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine). </td></tr>
@@ -364,15 +363,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/tuning.html b/site/docs/3.5.0/tuning.html
index 728e2b2..0a3c073 100644
--- a/site/docs/3.5.0/tuning.html
+++ b/site/docs/3.5.0/tuning.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -504,15 +503,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
diff --git a/site/docs/3.5.0/web-ui.html b/site/docs/3.5.0/web-ui.html
index e43c110..a72062c 100644
--- a/site/docs/3.5.0/web-ui.html
+++ b/site/docs/3.5.0/web-ui.html
@@ -17,8 +17,7 @@
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
- integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+ <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
@@ -26,7 +25,7 @@
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+ <link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
@@ -494,7 +493,7 @@
<p>Here is the list of SQL metrics:</p>
-<table>
+<table class="table table-striped">
<thead><tr><th>SQL metrics</th><th>Meaning</th><th>Operators</th></tr></thead>
<tr><td> <code>number of output rows</code> </td><td> the number of output rows of the operator </td><td> Aggregate operators, Join operators, Sample, Range, Scan operators, Filter, etc.</td></tr>
<tr><td> <code>data size</code> </td><td> the size of broadcast/shuffled/collected data of the operator </td><td> BroadcastExchange, ShuffleExchange, Subquery </td></tr>
@@ -622,15 +621,13 @@
<!-- /container -->
</div>
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
- crossorigin="anonymous"></script>
- <script src="https://code.jquery.com/jquery.js"></script>
+ <script src="js/vendor/jquery-3.5.1.min.js"></script>
+ <script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link